php - 如何在 PHP 中创建与此 HTML 表单完全相同的脚本?
问题描述
我正在尝试创建一个与下面的 HTML 表单相同的 PHP 脚本。
最终目标是我可以使用 PHP 脚本自动化表单。现在,我们必须手动填写表格。一开始没问题,但现在我们每个月都必须填写太多次表格。
下面的表格有效(如果我填写了正确的商家和票)。但不知何故,我无法创建一个可以做同样事情的 PHP 脚本。
<form method="post" action="https://payment.architrade.com/cgi-ssl/ticket_auth.cgi" accept-charset="ISO-8859-1">
<input type="hidden" name="amount" value="100">
<input type="hidden" name="currency" value="DKK">
<input type="hidden" name="merchant" value="INSERT_YOUR_MERCHANT_ID">
<input type="hidden" name="orderid" value="Order_ID-123">
<input type="hidden" name="textreply" value="true">
<input type="hidden" name="ticket" value="1234567890">
</form>
这是我尝试过的代码(我知道 URL 是错误的,但我使用的是回显服务,所以我可以看到响应):
$postData = array(
'amount' => '100',
'currency' => 'DKK',
'merchant' => 'INSERT_YOUR_MERCHANT_ID',
'orderId' => 'Order_ID-123',
'textreply' => 'true',
'ticket' => '1234567890'
);
// Setup cURL
$ch = curl_init('https://postman-echo.com/post');
curl_setopt_array($ch, array(
CURLOPT_POST => TRUE,
CURLOPT_RETURNTRANSFER => TRUE,
CURLOPT_HTTPHEADER => array(
'content-type: application/x-www-form-data'
),
CURLOPT_POSTFIELDS => json_encode($postData)
));
// Send the request
$response = curl_exec($ch);
echo "<br>";
echo 'Response: '. $response;
echo "<br>";
如果您想了解更多有关 API 的信息,可以在此处找到一些信息: https ://tech.dibspayment.com/D2/API/Payment_functions/ticketauthcgi
有人可以告诉我我做错了什么吗?
请让我知道,如果你有任何问题
一位用户 (aponte_alex) 要求我提供更多调试信息,所以这里是:
Array ( [url] => https://postman-echo.com/post [content_type] => [http_code] => 0 [header_size] => 0 [request_size] => 0 [filetime] => -1 [ssl_verify_result] => 0 [redirect_count] => 0 [total_time] => 0 [namelookup_time] => 0 [connect_time] => 0 [pretransfer_time] => 0 [size_upload] => 0 [size_download] => 0 [speed_download] => 0 [speed_upload] => 0 [download_content_length] => -1 [upload_content_length] => -1 [starttransfer_time] => 0 [redirect_time] => 0 [redirect_url] => [primary_ip] => [certinfo] => Array ( ) [primary_port] => 0 [local_ip] => [local_port] => 0 [http_version] => 0 [protocol] => 0 [ssl_verifyresult] => 0 [scheme] => )
{"args":{},"data":"","files":{},"form":{},"headers":{"x-forwarded-proto":"https","host":"postman-echo.com","content-length":"0","accept":"*/*","accept-encoding":"gzip","content-type":"application/x-www-form-urlencoded","user-agent":"php","x-forwarded-port":"443"},"json":null,"url":"https://postman-echo.com/post"}
如果我添加 json_encode($data) 我得到以下数据:
Array ( [url] => https://postman-echo.com/post [content_type] => [http_code] => 0 [header_size] => 0 [request_size] => 0 [filetime] => -1 [ssl_verify_result] => 0 [redirect_count] => 0 [total_time] => 0 [namelookup_time] => 0 [connect_time] => 0 [pretransfer_time] => 0 [size_upload] => 0 [size_download] => 0 [speed_download] => 0 [speed_upload] => 0 [download_content_length] => -1 [upload_content_length] => -1 [starttransfer_time] => 0 [redirect_time] => 0 [redirect_url] => [primary_ip] => [certinfo] => Array ( ) [primary_port] => 0 [local_ip] => [local_port] => 0 [http_version] => 0 [protocol] => 0 [ssl_verifyresult] => 0 [scheme] => )
{"args":{},"data":"","files":{},"form":{"{\"amount\":\"100\",\"currency\":\"DKK\",\"merchant\":\"INSERT_YOUR_MERCHANT_ID\",\"orderId\":\"Order_ID-123\",\"textreply\":\"true\",\"ticket\":\"1234567890\"}":""},"headers":{"x-forwarded-proto":"https","host":"postman-echo.com","content-length":"136","accept":"*/*","accept-encoding":"gzip","content-type":"application/x-www-form-urlencoded","user-agent":"php","x-forwarded-port":"443"},"json":{"{\"amount\":\"100\",\"currency\":\"DKK\",\"merchant\":\"INSERT_YOUR_MERCHANT_ID\",\"orderId\":\"Order_ID-123\",\"textreply\":\"true\",\"ticket\":\"1234567890\"}":""},"url":"https://postman-echo.com/post"}
解决方案
2019 年 11 月 30 日更新:
请试试:
$data = array(
'amount' => '100',
'currency' => 'DKK',
'merchant' => 'INSERT_YOUR_MERCHANT_ID',
'orderId' => 'Order_ID-123',
'textreply' => 'true',
'ticket' => '1234567890'
);
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "https://postman-echo.com/post",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => false,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS =>$data,
));
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
///////////////////////////////////////// /////////////////////////
要调试 PHP curl,请运行并提供反馈:
$headers = array(
"Content-Type: application/x-www-form-urlencoded"
);
$data = array(
'amount' => '100',
'currency' => 'DKK',
'merchant' => 'INSERT_YOUR_MERCHANT_ID',
'orderId' => 'Order_ID-123',
'textreply' => 'true',
'ticket' => '1234567890'
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,"https://postman-echo.com/post");
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
curl_setopt($ch, CURLOPT_TIMEOUT_MS, 1000);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_VERBOSE, TRUE);
curl_setopt($ch, CURLOPT_ENCODING , "gzip");
curl_setopt($ch, CURLOPT_USERAGENT,'php');
curl_setopt($ch, CURLOPT_HTTPHEADER,$headers);
$info = curl_getinfo($ch);
$result = curl_exec($ch);
print_r($info );
echo "</br>";
print_r($result );
推荐阅读
- node.js - AWS serverless-image-handler v3.x 因 AWS Lambda 执行环境的更改而中断
- xml - 在oracle中从xml中提取值时如何将列表的每个项目作为一行?
- jquery - 如何使用 jQuery 删除类“selectpicker”的“禁用”属性
- javascript - 反应原生动画延迟不尊重给定值
- node.js - 如何停止与此特定父 node.js 服务器相关的所有子 chromium 实例?
- excel - double 之间除法的 vba 类型不匹配
- python - 根据列将一个数据框映射到另一个数据框
- python - 如何从纬度/经度数据到曲面图
- java - 在 UI 端处理 ResponseEntity 的最佳方法是什么?
- javascript - 单选按钮值传输