uni-app在APP中使用微信APP支付

uni-app在APP端可以很方便地调起微信APP支付,官方给出的调用代码:

uni.requestPayment({
    "provider": "wxpay", 
    "orderInfo": {
        "appid": "wx499********7c70e",  // 微信开放平台 - 应用 - AppId,注意和微信小程序、公众号 AppId 可能不一致
        "noncestr": "c5sEwbaNPiXAF3iv", // 随机字符串
        "package": "Sign=WXPay",        // 固定值
        "partnerid": "148*****52",      // 微信支付商户号
        "prepayid": "wx202254********************fbe90000", // 统一下单订单号 
        "timestamp": 1597935292,        // 时间戳(单位:秒)
        "sign": "A842B45937F6EFF60DEC7A2EAA52D5A0" // 签名,这里用的 MD5 签名
    },
    success(res) {},
    fail(e) {}
})

其中orderInfo字段是由后台返回的。

后台先调用统一下单接口,成功则返回预支付订单信息。

需要注意的是,上面orderInfo中的sign既不是统一下单时传到微信的签名,也不是微信返回预支付订单中的那个签名,而是用微信返回的预支付订单中的信息,二次签名。签名不对的话在调起支付时会报支付验证签名失败错误!

参与签名的字段有appid,noncestr,package,partnerid,timestamp,重新排序后加上key进行md5签名,得到32位大写md5值,但是传回前端时,要截取前30位要截取前30位要截取前30位

这是一个大坑,不然会一直报支付验证签名失败错误!

Leave a Comment

豫ICP备19001387号-1