php - 我无法通过 PHP-Curl 发布并重定向到支付网关
问题描述
我已经建立了一个需要信息的表格,包括$amount
.
据说,表单会将信息发布到 MYSQL Db 进行存储。
<form name="payFormCcard" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>" method="post">
对于 PHP 部分,一些支付信息(例如$amount
,一些信息将以硬编码形式发布)将通过 Curl 发布到支付网关。我将强制重定向到支付网关header("Location:https://test.paydollar.com/b2cDemo/eng/payment/payForm.jsp");
现在,数据可以成功保存到数据库中了。虽然最后到了支付网关,但数据无法发布到网关。
网关站点之一,
错误信息
参数merchantId不正确
因此,Curl方法上的某事是错误的。所有参数都无法成功传递给支付网关。
PHP 部分在create.php
:
// Processing form data when form is submitted
if ($_SERVER["REQUEST_METHOD"] == "POST") {
// Validate name
$input_CName = trim($_POST["CName"]);
if (empty($input_CName)) {
$CName_err = "Please enter a name.";
} elseif (!filter_var(trim($_POST["CName"]), FILTER_VALIDATE_REGEXP, array("options" => array("regexp" => "/^[a-zA-Z'-.\s ]+$/")))) {
$CName_err = 'Please enter a valid name.';
} else {
$CName = $input_CName;
}
....Other field validation ...
....Storing to DB if every field is okay .
if (empty($CName_err) && empty($Address_err) && empty($amount_err) && empty($Phone_err)) {
// Prepare an insert statement
$pdo = Database::connect();
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = "INSERT INTO donation (CName, Address, Phone, Amount ,Ticket, Purpose) VALUES (?, ?, ?, ? ,?, ?)";
$q = $pdo->prepare($sql);
$q->execute(array($CName, $Address, $Phone, $amount ,$Ticket ,$Purpose));
Database::disconnect();
Curl Part ......
$fields = array(
'amount' => $amount,
'merchantId' => 'sth',
'orderRef' => 'sth',
'currCode' => '344',
'mpsMode' => 'NIL',
'successUrl' =>'http://www.yourdomain.com/Success.html',
'failUrl' =>'http://www.yourdomain.com/Fail.html',
'cancelUrl'=>'http://www.yourdomain.com/Cancel.html',
'payType' => 'N',
'lang' => 'E',
'payMethod' => 'CC',
'secureHash'=> 'sth'
);
// build the urlencoded data
$postvars = http_build_query($fields);
$ch = curl_init();
//
curl_setopt($ch, CURLOPT_URL,"https://test.paydollar.com/b2cDemo/eng/payment/payForm.jsp");
curl_setopt($ch, CURLOPT_POST, count($fields));
curl_setopt($ch, CURLOPT_POSTFIELDS, $postvars);
//
//// receive server response ...
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$server_output = curl_exec ($ch);
curl_close ($ch);
header("Location:https://test.paydollar.com/b2cDemo/eng/payment/payForm.jsp");
}
}
?>
解决方案
推荐阅读
- javascript - 如何 v-for 检查值
- sql - 在 SQL 中合并 csv 文件,然后更新到现有表
- amazon-web-services - git-diff 代码推送后对 CodeCommit 存储库的操作以使用 AWS Lambda 获取 diff 文件
- haskell - Haskell中的单个实例重叠实例错误
- amazon-web-services - AWS:botocore.exceptions.ClientError:发生错误(AccessDenied)
- c - 根据两个变量绘制 3D 误差函数
- python-3.x - 使用 Python 将 SQLite3 导出为 CSV。sqlite3.OperationalError:靠近“。”:语法错误
- python - 与手动计算 std 相比,Pandas pd.Series().var() 函数给出不同的输出。知道这里出了什么问题吗?
- botframework - 捕获传出和传入活动的 Botframework
- c++ - 窥探伪终端