微信APP支付,后端服务器生成预支付订单,并对数据进行二次签名,签名结果如下:{"appid":"wx7c123ccd6ca4889d","partnerid":"1553190181","prepayid":"wx2912023250822949588aafd281c3920000","package":"Sign=WXPay","noncestr":"40f06065c41c410e806c6c462d18b9b3","timestamp":"1619668967","sign":"24A3895275267CC7800FA2B9A183F0B8"}
APP里面将数据发送到微信支付,结果微信唤起失败,返回requestPayment:fail [payment微信:-2]user cancleled错误信息,提示验证签名失败
我们是用UNIAPP开发的手机客户端,不是用H5支付
正常返回-1才是签名错误,你使用的H5支付?
如果是签名问题请按照以下几点进行排查:
1、使用签名检查工具(https://pay.weixin.qq.com/wiki/doc/api/micropay.php?chapter=20_1)校验签名算法是否有误
2、确认秘钥是否有误(服务商模式使用服务商商户号秘钥,秘钥是在商户平台配置,如果同一商户号调用其它接口成功可排除是秘钥问题)
3、确认接口实际的请求参数与生成签名原串的参数一致,不能增加或缺少参数(可通过打印签名原串进行排查)
4、确认参数的大小写,参数名与接口文档一致
5、签名原串的参数值使用原始值,不需要encode
6、接口需要使用UTF-8编码
7、IOS正常,安卓异常的情况下,请排查包名与包签名
8、未注册APPID
9、项目设置APPID不正确
10、注册的APPID与设置的不匹配
11、服务商模式下,统一下单中的sub_appid是否有传入
12、“唤起支付接口”中的签名类型是否与“统一下单接口”的类型一致
你uniapp使用的h5支付还是app原生支付