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

JazzCash Gateway V2 PHP集成:Direct Pay交易pp_TxnRefNo报错求助

排查JazzCash Gateway V2 Direct Pay交易的pp_TxnRefNo错误问题

我正在集成JazzCash Gateway V2的Direct Pay交易,该交易定义为:‘这是一笔授权付款并将资金从付款人账户转移到商户账户的单笔交易’。

已确认的信息

哈希函数(已验证与官方推荐工具计算结果一致)

function get_SecureHash($data_array) {
    ksort($data_array);
    $str = '';
    foreach($data_array as $key => $value) {
        if(!empty($value)) {
            $str = $str . '&' . $value;
        }
    }
    $str = $saltkey.$str;
    $pp_SecureHash = hash_hmac('sha256', $str, $saltkey);
    return $pp_SecureHash;
}

请求地址

$post_url = "https://sandbox.jazzcash.com.pk/ApplicationAPI/API/Purchase/PAY";

请求参数数组

$data_array = array(
   "pp_IsRegisteredCustomer"=> "yes",
   "pp_ShouldTokenizeCardNumber"=> "yes",
   "pp_CustomerID"=> "25352",
   "pp_CustomerEmail"=> "abc@abc.com",
   "pp_CustomerMobile"=> "03331234567",
   "pp_Version"=> "2.0",
   "pp_TxnType"=> "MPAY",
   "pp_TxnRefNo"=> "T".date('YmdHisu'),
   "pp_MerchantID"=> "MYMERCHANTID",
   "pp_Password"=> "MYPASSWORD",
   "pp_Amount"=> "20000",
   "pp_TxnCurrency"=> "PKR",
   "pp_TxnDateTime"=> date('YmdHis'),
   "pp_TxnExpiryDateTime"=> date('YmdHis',strtotime("+1 hours")),
   "pp_BillReference"=> "billRef",
   "pp_Description"=> "Description of transaction",
   "pp_CustomerCardNumber"=> "512345000000008",
   "pp_CustomerCardCVV"=> "100",
   "pp_CustomerCardExpiry"=> "01/39",
   "pp_SecureHash"=> "",
   "pp_DiscountedAmount"=> "",
   "pp_DiscountBank"=> "",
   "pp_UsageMode"=> "API"
);

收到的错误响应

{"responseCode":"110","responseMessage":"Please provide a valid value for pp_ Txn Ref No.","status":null,"pp_RetreivalReferenceNo":null,"secureHash":"9DE9F8E571F29CBD1316DFB2F0388E3FBE1CA9BC26FB9C284DF900DCCBA0C301"}

排查解决步骤

  • 检查pp_TxnRefNo的格式与长度限制:查看JazzCash官方文档对该字段的要求,通常要求为1-20位的字母数字组合。当前用"T".date('YmdHisu')生成的字符串长度为21位(T+14位YmdHis+6位微秒),可能超出限制。可改为"T".date('YmdHis')(长度15位)测试。
  • 验证参数名的准确性:错误提示中的pp_ Txn Ref No存在空格,确认你的参数名pp_TxnRefNo是否与官方文档完全一致,避免因参数名拼写/格式错误导致识别失败。
  • 打印实际发送的参数值:在发起CURL请求前,输出$data_array['pp_TxnRefNo']的具体内容,检查是否包含特殊字符、长度是否合规。
  • 测试固定合规的单号:手动设置一个符合规则的单号(如"T20240520123456"),发起请求验证是否因生成逻辑导致格式问题。
  • 确认哈希计算包含该字段:确保在调用get_SecureHash前,pp_TxnRefNo已经被正确赋值且非空,避免哈希计算时被跳过导致验证失败。

内容的提问来源于stack exchange,提问作者Saad Bashir

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 10:25:41