You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Payfort集成异常(错误码00006):支付页面显示Technical problem报错

排查Payfort错误00006(Technical problem)的解决方案

核心问题1:提交的参数不完整

你的代码仅将signature存入$requestParams,未把$arrData中的所有必要请求参数(如command、access_code、amount等)添加到表单提交参数中。Payfort服务器无法获取关键请求数据,因此返回技术错误。

修复方式:
将原请求参数与签名合并到提交参数集合中:

// 合并原请求参数
$requestParams = $arrData;
// 添加签名参数
$requestParams['signature'] = $signature;

核心问题2:SHA签名生成不符合Payfort规则

Payfort要求签名生成时,排序后的参数需用&分隔成key=value&key=value格式,再在首尾拼接SHA请求短语。你的代码直接无分隔符拼接key=value,导致签名无效。

修复方式:
修改SHA字符串拼接逻辑:

$shaString = '';
// 按键名排序参数
ksort($arrData);
// 用&连接每个key=value对
foreach ($arrData as $key => $value) {
    $shaString .= "$key=$value&";
}
// 移除末尾多余的&
$shaString = rtrim($shaString, '&');
// 首尾拼接请求短语后生成签名
$shaString = $requestPhrase . $shaString . $requestPhrase;
$signature = hash("sha256", $shaString);

额外验证项

  • 确认$amount格式符合要求:需传入货币最小单位数值(例如AED的10迪拉姆需传入1000,你的代码当前设置是正确的,但需与商户后台配置一致)。
  • 确保$requestPhrase与Payfort商户后台配置的SHA Request Phrase完全一致(注意大小写、特殊字符,不能包含空格)。

完整修复后的代码

<?php
$shaString  = '';
$amount = 1000;

// 请求参数数组
$arrData    = array(
    'command'            => 'AUTHORIZATION',
    'access_code'        => $access_code,
    'merchant_identifier' => $merchant_identifier,
    'merchant_reference'  => 'Test010',
    'amount'             => $amount,
    'currency'           => 'AED',
    'language'           => 'en',
    'customer_email'     => 'shahmeerzahoor007@gmail.com',
    'order_description'  => 'iPhone 6-S',
);
// 按键名排序参数
ksort($arrData);
// 按规则拼接SHA字符串
foreach ($arrData as $key => $value) {
    $shaString .= "$key=$value&";
}
$shaString = rtrim($shaString, '&');

$shaString = $requestPhrase . $shaString . $requestPhrase;
$signature = hash("sha256", $shaString);

echo "Signature >>>>>>>>>>>>>>>>>>>>>> $signature";

// 合并所有请求参数和签名
$requestParams = $arrData;
$requestParams['signature'] = $signature;

$redirectUrl = 'https://sbcheckout.payfort.com/FortAPI/paymentPage';

// 输出自动提交表单
echo "<html xmlns='https://www.w3.org/1999/xhtml'>
<head></head>
<body>
";
echo "<form action='$redirectUrl' method='post' name='frm'>
";
foreach ($requestParams as $a => $b) {
    echo "	<input type='hidden' name='" . htmlentities($a) . "' value='" . htmlentities($b) . "'>
";
}
echo "	<script type='text/javascript'>
";
echo "		document.frm.submit();
";
echo "	</script>
";
echo "</form>
</body>
</html>";
?>

内容的提问来源于stack exchange,提问作者Shahmeer Zahoor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 21:31:11