我面临着同样的问题。您可以使用以下代码。它工作正常。
$merchant_reference = str_random(30);
$redirectUrl = 'https://sbpaymentservices.payfort.com/FortAPI/paymentApi';
$return_url = 'enter_your_return_url_here';
$requestParams = array(
'command' => 'PURCHASE',
'access_code' => 'enter_your_acccess_code_here',
'merchant_identifier' => 'enter_your_merchant_identifier_here',
'merchant_reference' => enter_your_merchant_reference_here,
'amount' => enter_your_amount_here,
'currency' => 'AED',
'language' => enter_your_language_here,
'customer_email' => 'customer@gmail.com',
'token_name' => enter_your_token_name_here,
'return_url' => return_url,
'card_security_code' => enter_your_cvv_here,
);
// calculating signature
$shaString = '';
ksort($arrData);
$SHARequestPhrase = 'GLAM';
$SHAResponsePhrase = 'GLAM';
$SHAType = 'sha256';
foreach ($arrData as $k => $v) {
$shaString .= "$k=$v";
}
if ($signType == 'request')
$shaString = $SHARequestPhrase . $shaString . $SHARequestPhrase;
else
$shaString = $SHAResponsePhrase . $shaString . $SHAResponsePhrase;
$signature = hash($SHAType, $shaString);
$requestParams['signature'] = hash($SHAType, $shaString);
// calling payfort api using curl
//open connection
$ch = curl_init();
//set the url, number of POST vars, POST data
$useragent = "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:20.0) Gecko/20100101 Firefox/20.0";
curl_setopt($ch, CURLOPT_USERAGENT, $useragent);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json;charset=UTF-8',
//'Accept: application/json, application/*+json',
//'Connection:keep-alive'
));
curl_setopt($ch, CURLOPT_URL, $redirectUrl);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_FAILONERROR, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); // allow redirects
//curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // return into a variable
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 0); // The number of seconds to wait while trying to connect
//curl_setopt($ch, CURLOPT_TIMEOUT, Yii::app()->params['apiCallTimeout']); // timeout in seconds
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($requestParams));
$response = curl_exec($ch);
curl_close($ch);
return $response;
这是向您返回完整的付款响应。