美文网首页
H5微信支付流程

H5微信支付流程

作者: 曹锦花 | 来源:发表于2020-06-18 22:18 被阅读0次

点击去支付按钮 => 必填字段校验 => 判断是否为微信浏览器

        confirmPayment() {
            // 判断是否为微信浏览器
            if (isWeChat()) {
                // 支付类型:微信浏览器
                this.userOrder.tradeType = "JSAPI";
                this.userOrder.openId = this.openId;
                // 1、在产品详情中存储:链接参数"productParam"和产品信息"productForm";
                // 2、在出行日历中存储:出行日历信息"scheduleForm";
                // 3、在订单填写中存储:订单信息"orderForm";
                // 4、在订单确认中获取已经保存的相关信息,组装订单,提交后台;
                let formObj = {
                    uopiList: this.travelers,
                    userOrder: this.userOrder,
                }
                 
                post(apiCode.createCustomerOrder, formObj).then(res => {
                if (res.code === 0) {
                    // 下单完成清除保存的信息
                    storage.remove("productForm");
                    storage.remove("scheduleForm");
                    storage.remove("orderForm");
                    storage.setString("orderId", res.data.userOrder.orderFlownumber);
                    this.prepayId = res.data.userOrder.prepayId;
                    // 调起微信支付
                    if (typeof WeixinJSBridge == "undefined") {
                    if (document.addEventListener) {
                        document.addEventListener(
                        "WeixinJSBridgeReady",
                        this.onBridgeReady,
                        false
                        );
                    } else if (document.attachEvent) {
                        document.attachEvent("WeixinJSBridgeReady", this.onBridgeReady);
                        document.attachEvent(
                        "onWeixinJSBridgeReady",
                        this.onBridgeReady
                        );
                    }
                    } else {
                    this.onBridgeReady();
                    }
                } else {
                    this.$toast(res.message);
                }
                });
            } else {
                // 支付类型:非微信浏览器
                this.userOrder.tradeType = "MWEB";
                // 1、在产品详情中存储:链接参数"productParam"和产品信息"productForm";
                // 2、在出行日历中存储:出行日历信息"scheduleForm";
                // 3、在订单填写中存储:订单信息"orderForm";
                // 4、在订单确认中获取已经保存的相关信息,组装订单,提交后台;
                let formObj = {
                    uopiList: this.travelers,
                    userOrder: this.userOrder,
                }
                post(apiCode.createCustomerOrder, formObj).then(res => {
                if (res.code === 0) {
                    // 下单完成清除保存的信息
                    storage.remove("productForm");
                    storage.remove("scheduleForm");
                    storage.remove("orderForm");
                    storage.setString("orderId", res.data.userOrder.orderFlownumber);
                    window.location.href = res.data.userOrder.mwebUrl;
                    // 是否调起支付标志
                    storage.setString("isPay", "0");
                } else {
                    this.$toast(res.message);
                }
                });
            }
        },
________________________________
        onBridgeReady() {
            const appId = "wx68fa393a2964f20d"; //公众号名称,由商户传入
            const timeStamp = new Date().getTime() + ""; //时间戳,自1970年以来的秒数
            const nonceStr = randomWord(false, 32); //随机串
            const prepay = "prepay_id=" + this.prepayId; //订单详情扩展字符串
            const signType = "MD5"; //微信签名方式
            const paramStr = `appId=${appId}&nonceStr=${nonceStr}&package=${prepay}&signType=${signType}&timeStamp=${timeStamp}&key=63b36cd548f998260edc886ddf19fe97`;
            const paySign = Md5Util.md5(paramStr).toUpperCase();
            WeixinJSBridge.invoke(
                "getBrandWCPayRequest",
                {
                appId: appId,
                timeStamp: timeStamp,
                nonceStr: nonceStr,
                package: prepay,
                signType: signType,
                paySign: paySign
                },
                res => {
                // 支付完成引导
                this.showModal = true;
                if (res.err_msg == "get_brand_wcpay_request:ok") {
                    // 使用以上方式判断前端返回,微信团队郑重提示:
                    //res.err_msg将在用户支付成功后返回ok,但并不保证它绝对可靠。
                }
                }
            );
        },
截屏2020-06-11 上午9.55.29.png

相关文章

网友评论

      本文标题:H5微信支付流程

      本文链接:https://www.haomeiwen.com/subject/fvvpxktx.html