uniapp转APP微信支付以及支付宝支付

编程入门 行业动态 更新时间:2024-10-21 13:24:20

uniapp转APP微信支付以及<a href=https://www.elefans.com/category/jswz/34/1767806.html style=支付宝支付"/>

uniapp转APP微信支付以及支付宝支付

 按钮部分

<view @tap='toPay('alipay')' class=""></view> 支付宝支付

<view @tap='toPay('wxpay')' class=""></view> 微信支付

 判断是否安卓微信或者支付宝

toPay(payType) {
                uni.getProvider({
                    service: 'payment',
                    success: e => {
                        // e: {"errMsg":"getProvider:ok","service":"payment","provider":["alipay","wxpay"]}
                        let arrStr = e.provider.join(',');
                        if (payType == 'alipay') {
                            if (arrStr.indexOf('alipay') === -1) {
                                uni.showToast({
                                    icon: 'none',
                                    title: '请安装支付宝App'
                                });
                                return;
                            }
                        }
                        if (payType == 'wxpay') {
                            if (arrStr.indexOf('wxpay') === -1) {
                                uni.showToast({
                                    icon: 'none',
                                    title: '请安装微信App'
                                });
                                return;
                            }
                        }

                        // 调用支付
                        this.requestPayment(payType);
                    },
                    fail: e => {}
                });
            },

 根据订单获取支付的参数,支付宝需要穿入的参数是一串字符串。微信支付需要传入的是一个对象

// 2、异步调用支付,先**订单信息
            async requestPayment(payType) {
                let _this = this;
                let orderInfo = await this.getOrderInfo(payType);
                // orderInfo 的值:见下方
                if (orderInfo.data.error_code != 0 && payType != 'wxpay') {
                    uni.showModal({
                        content: orderInfo.msg,
                        showCancel: false
                    });
                    return;
                }

                var map;
                if (payType == 'wxpay') {
                    let data = orderInfo.data.order_arr;
                    console.log(data)
                    map = {
                        appid: data.appid,
                        noncestr: data.noncestr,
                        package: data.package,
                        prepayid: data.prepayid,
                        partnerid: data.partnerid,
                        timestamp: Number(data.timestamp),
                        sign: data.sign
                    };
                } else {
                    map = orderInfo.data.data;
                }

                uni.requestPayment({
                    provider: payType,
                    orderInfo: map,
                    success: e => {

                        uni.showToast({
                            title: '支付成功!',
                            icon: 'none',
                            duration: 2000
                        });
                    },
                    fail: e => {

                        // uni.showModal({
                        //     content: '支付失败,原因为: ' + e.errMsg,
                        //     showCancel: false
                        // });
                    },
                    complete: () => {}
                });
            },

获取订单信息,支付数据

 

// 3、**订单信息
            getOrderInfo(payType) {
                var _this = this;
                let url = this.web_url + '/doctor/';
                let data = {
                    action: payType,
                    order_number: _this.order_number,
                    pay_hash: Math.ceil(Math.random() * 100),
                    amount: _this.projectPrice,
                    token: uni.getStorageSync('tokenData').token
                };

                if (payType == 'wxpay') {
                    data.action = 'wxapp';
                }
                console.log(url)
                console.log(data)
                return new Promise(res => {
                    uni.request({
                        url: url,
                        data: data,
                        header: {
                            'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8' //自定义请求头信息
                        },
                        method: 'POST',
                        dataType: 'json',
                        success: result => {
                            console.log(result)
                            res(result);
                        },
                        fail: e => {

                            res(e);
                        }
                    });
                });
            },

 微信支付失败了会缓存支付的错误,微信支付失败了会缓存支付的错误,微信支付失败了会缓存支付的错误,所以最好用小号测试。一步步检查支付的参数是否正确。如果参数一个个对应的都正确还支付失败,建议卸载微信分身重新登录再支付。我做微信支付的时候被这个坑拦住了一两天才发现,希望可以帮到更多的人。

更多推荐

uniapp转APP微信支付以及支付宝支付

本文发布于:2024-03-08 08:16:55,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1720316.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:支付宝   uniapp   APP

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!