支付参数如下:
<xml><appid>wx43cfd479b5d1bxxx</appid><sub_appid>wxbbb7e3b83c2a8xxx</sub_appid><mch_id>1307103xxx</mch_id><nonce_str>36a4j17ce6nh5mzw1pilh9kqi87j9xvb</nonce_str><sub_mch_id>1625568458</sub_mch_id><body>会员充值</body><out_trade_no>9100-1665996657-charge-</out_trade_no><total_fee>100</total_fee><spbill_create_ip>221.223.96.95</spbill_create_ip><notify_url>https://yun.33jg.cn/addons/lionfish_comshop/notify.php</notify_url><sub_openid>okb7Z5e7yMUy2ika8PZUmTVwtU1s</sub_openid><trade_type>JSAPI</trade_type><sign>1421C31556597C5A618F197BCDF0A933</sign></xml>
返回结果:
<xml><return_code><![CDATA[FAIL]]></return_code>
<return_msg><![CDATA[签名错误,请检查后再试]]></return_msg>
</xml>
试了很多次都这样, 参数配置完全按照文档来的
'appid' =>'', //服务商关联公众号appid
'sub_appid'=>$this->appid,//子商户小程序appid
'mch_id' =>'', //服务商商户号
'nonce_str' => $this->createNoncestr(), //随机字符串
'sub_mch_id'=>$this->mch_id,//子商户商户号
'body' => $this->body,//商品描述
'out_trade_no'=> $this->out_trade_no,//子商户订单号
'total_fee' => floatval(0.01 * 100), //总金额 单位 分
// 'total_fee' => $this->total_fee,
'spbill_create_ip' => $_SERVER['REMOTE_ADDR'], //终端 IP
'notify_url' => '', //通知地址 确保外网能正常访问
'sub_openid' => $this->openid, //子商户用户 openid//这里传子商户小程序openid就行了
'trade_type' => 'JSAPI'//交易类型
请指点
签名错误问题可以按照以下几点进行排查:
1、使用签名检查工具校验签名算法是否有误
2、确认秘钥是否有误(服务商模式使用服务商商户号秘钥,秘钥是在商户平台配置,如果同一商户号调用其它接口成功可排除是秘钥问题)
3、确认接口实际的请求参数与生成签名原串的参数一致,不能增加或缺少参数(可通过打印签名原串进行排查)
4、确认参数的大小写,参数名与接口文档一致
5、签名原串的参数值使用原始值,不需要encode
6、接口需要使用UTF-8编码
原sign值:1421C31556597C5A618F197BCDF0A933
新sign值:1421C31556597C5A618F197BCDF0A933
校验通过