uniapp微信支付遇到的坑

首先需要去微信开放平台申请微信支付微信开放平台

uniapp的代码

payOrder(orderInfo) {
                const providerList = ['微信支付', '支付宝支付']
                new Promise((resolve, reject) => {
                    uni.showActionSheet({
                        itemList: providerList,
                        success(res) {
                            resolve(res.tapIndex)
                        },
                        fail() {
                            reject(new Error('取消支付'))
                        }
                    })
                }).then((index) => {
                    return paySign.getPayInfo(orderInfo, index)
                }).then((payOrderInfo)=>{
                    uni.requestPayment({
                        // 支付方式
                        provider: payOrderInfo.payType ===0? "wxpay": "alipay",
                        // 订单内容
                        orderInfo: payOrderInfo.info,
                        success: (res) => {
                            console.log("success", JSON.stringify(res));
                            return res;
                        },
                        fail: (err) => {
                            console.log("fail", JSON.stringify(err));
                            return err;
                        }
                    })
                })
            },
paySign.getPayInfo = function (orderInfo, payType) {
    console.log('payType====', payType)
    let data = {
        payType: payType
    }
    if (payType == 0) {
        data.info = paySign.getWXPayInfo(orderInfo)
    } else {
        data.info = paySign.getAliPayInfo(orderInfo)
    }
    return data
}
paySign.getWXPayInfo = function(orderInfo) {
    const noncestr = paySign.randomSrt(true, 10, 20), // 随机数
        key = "", // 加密Key,微信支付填写的key
        time = new Date(),
        timestamp = time.getTime().toString().substr(0, 10), // 时间戳
        payInfo = {
            appid: orderInfo.appid,
            noncestr: orderInfo.noncestr,
            package: 'Sign=WXPay',
            partnerid: orderInfo.partnerid,
            prepayid: orderInfo.prepayid,
            timestamp: Number(orderInfo.timestamp)
        }
    // 键值对按照ASCII码从小到大排序生成类似:appid=xxx&body=xx&device_info=1000
    let keyValueStr = paySign.mapObjToKeyValue(payInfo, true);
    // 插入加密Key到最后
    let strSignTemp = `${keyValueStr}&key=${key}`;
    // 真正的二次加密
    let sign = util.md5Encode(strSignTemp).toUpperCase().substr(0, 32);
    payInfo.sign = sign;
    console.log('payInfo', payInfo)
    // 返回字符串给uniapp调起支付用
    return JSON.stringify(payInfo);
}

到了这一步,安卓端是可以支付了,但是在iOS端发现失败了,微信都没调起来,返回支付信息支付失败{“errMsg“:“requestPayment:fail errors“,code:-1}

在iOS端很重要的一个点要设置UniversalLinks,假如你是下载的HTML 5+ SDK的工程,搜索UniversalLinks,在一个plist文件中要替换掉默认的,换成自己的UniversalLinks

你可能感兴趣的:(uniapp微信支付遇到的坑)