收藏
回答

V3合单支付 支付签名验证失败(已解决)

问题详细说明:接口获取到预支付id->二次加密->返回小程序->调起支付提示支付签名验证失败。


支付提示:

自检过程:1、签名验证,下载工具使用签名/验签商户私钥进行加密,验证是否与代码加密效果一致;2、小程序调起支付参数对照文档,大小写一致,获取服务器数据正常。

代码:

  //支付加密
   private function getPayEncrypt($arr)
   {
      global $_W;
      //$str是待加密字符串
      $str = '';
      foreach ($arr as $item) {
         $str .= $item.chr(hexdec('0x0A'));//"\n"; 这个位置可以直接用\n 
      }
      $public_key = load_model_class('front')->get_config_by_name('wechat_apiclient_key_pem');//商户私钥
      if (openssl_sign($str,$encrypted,$public_key,"sha256WithRSAEncryption")) {
         $sign = base64_encode($encrypted);
      } else {
         throw new Exception('encrypt failed');
      }
}

签名工具验证截图:



二次签名计算—加密数据及签名:

string(113"wx1d117817c02dda11
1605861527
KIanKsuNqXalHXDhASdiqrbMUebRaceG
prepay_id=up_wx201638470087069e766a5c92e6a7910000
"
string(344)
"nPXMZj+cu94X27uuLuE3UWlPkS1UnHrwlnGS+Cw5ulnpHBs0b7ADD2e1ug7pYOIIMADeCO/HD/A9xKBOBNyl7XMRsQR0K4rRC9QbedXlR+HvZCI3vlPNHbsldWMp0gbNHbHVIliTW3RcqTf6fApmWP7am5Vweq/V2q0mSPwjApyjCXQIIv8iYP45GCCHWvvYV1WyS+I8Q/QP0pJ+sn+r0q1f2OU4hvF87m2ak1LLtw/dOhhHW0FaXoCsC9akrnk4B8DPleBNCAsDkhwtmmqLcXTIm4LFzqzSdmsgApfmuUj1qxpkXadK59AKYEPFTwJsZXsKhpWLDbLCcuqQfxLapg=="
最后一次编辑于  11-20
回答关注问题邀请回答
收藏

1 个回答

登录 后发表内容
问题标签