开发微信小程序时调起支付一直提示
{err_code: "2", err_desc: "支付验证签名失败", errMsg: "requestPayment:fail"}
我是以服务商模式发起的支付,统一下单什么都成功了,但是一到调起支付的时候就验证签名失败。我服务端返回的6个参数如下:
Array
(
[appId] => wxc21534f70356ba05 //这里是服务商的appid,不是微信小程序的
[nonceStr] => bangkkwrslpveua69dek54k344r5coz7
[package] => prepay_id=wx201710101537105ea7593fcb0689926766
[signType] => MD5
[timeStamp] => 1507621030
[paySign] => E5C4A3BC291A45EDBD3FF131E93E5280
)
根据服务商模式的微信小程序支付文档:服务商模式下应为当前调起支付的微信小程序的appid,貌似问题就出在这个这个appid上,而在我的微信小程序是第三方平台的模板微信小程序,特约商户授权后的extAppid:为"wx1ce0dfce6268ceac",也就是当前微信小程序的appid。
附上统一下单的整个过程的参数,烦请各位帮忙看看问题是出在哪儿。
统一下单参数:
{
"appid":"wxc21534f70356ba05",//服务商appid
"attach":"",
"body":"asdfasdfasdfa",
"goods_tag":"",
"mch_id":"1481143442",//服务商mch_id
"nonce_str":"sb0q2rzoxu4e40kl5y9lf9pqzhzaw03m",
"notify_url":"https://pay.zsmart.me/wxpay/notify",
"out_trade_no":"2017092209341118572",
"spbill_create_ip":"220.172.54.174",
"sub_appid":"wx1ce0dfce6268ceac",//授权的微信小程序
"sub_mch_id":"1489086632",//特约商户号
"sub_openid":"obQb60MPr_xxtiLNeg6iLZ-Itahg",//与sub_appid对应的sub_openid
"time_expire":"20171010154710",
"time_start":"20171010153710",
"total_fee":"7000",
"trade_type":"JSAPI",
"sign":"51CD7C77D29515FE007B9E5ADD1D8DBD"
}
统一下单成功返回预付单:
Array
(
[appid] => wxc21534f70356ba05
[mch_id] => 1481143442
[nonce_str] => MXP4KyE43Jqwufgk
[prepay_id] => wx201710101537105ea7593fcb0689926766
[result_code] => SUCCESS
[return_code] => SUCCESS
[return_msg] => OK
[sign] => FC4576C71554FB56512C2E65C91882B7
[sub_appid] => wx1ce0dfce6268ceac
[sub_mch_id] => 1489086632
[trade_type] => JSAPI
)
预付单再次签名后的jsApiParamter
Array
(
[appId] => wxc21534f70356ba05 //为什么
[nonceStr] => bangkkwrslpveua69dek54k344r5coz7
[package] => prepay_id=wx201710101537105ea7593fcb0689926766
[signType] => MD5
[timeStamp] => 1507621030
[paySign] => E5C4A3BC291A45EDBD3FF131E93E5280
)
拜托拜托
微信小程序开发者回答:
我***:
提示错误代码是什么啊、
熊***:
错误代码
{err_code: "2", err_desc: "支付验证签名失败", errMsg: "requestPayment:fail"}
我***:
Array
(
[appId] => wxc21534f70356ba05 换成微信小程序的APPID试试
[nonceStr] => bangkkwrslpveua69dek54k344r5coz7
[package] => prepay_id=wx201710101537105ea7593fcb0689926766
[signType] => MD5
[timeStamp] => 1507621030
[paySign] => E5C4A3BC291A45EDBD3FF131E93E5280
)
熊***:
换了的,换成微信小程序的APPID:wx1ce0dfce6268ceac依然是一样 的结果,感觉问题是不是出在统一下单的时候的参数配置配置上呢。
我***:
我也不懂了,官方给出的文档是用微信小程序的appId
熊***:
问题解决了,生成paySign的时候需要使用sub_appid来参与签名,官方的SDK默认使用的是appid,所以一直不行。
本文网址:http://www.91bianli.com/weixinxiaochengxu/26723.html