国产精品爱久久久久久久小说,女人扒开腿让男人桶到爽 ,亚洲欧美国产双大乳头,国产成人精品综合久久久久,国产精品制服丝袜无码,免费无码精品黄av电影,黑色丝袜无码中中文字幕,乱熟女高潮一区二区在线

            vue項(xiàng)目 微信支付 和 支付寶支付

            2019-7-2    seo達(dá)人

            如果您想訂閱本博客內(nèi)容,每天自動(dòng)發(fā)到您的郵箱中, 請(qǐng)點(diǎn)這里

            做了一個(gè)項(xiàng)目,有充值功能,充值方式為 微信和支付寶,效果如下:



            代碼:

            <template>
            <el-card class="box-card">
            <ul class="msg-box">
            <li>
            <h4>我要充值</h4>
            </li>
            <li>
            <h4 style="margin-bottom: 15px;">充值金額</h4>
            <el-radio-group v-model="amountVal" @change="amountChange">
            <el-radio border :label="''+ 100">充值100</el-radio>
            <el-radio border :label="''+ 500">充值500</el-radio>
            <el-radio border :label="''+ 1000">充值1000</el-radio>
            <el-radio border :label="''+ 2000">充值2000</el-radio>
            <el-radio border :label="''+ 5000">充值5000</el-radio>
            <el-radio border :label="''">自定義</el-radio>
            </el-radio-group>
            </li>
            <li>
            <h4 style="margin-bottom: 15px;">充值方式</h4>
            <el-radio-group v-model="rechargeParams.paymentType" @change="paymentTypeChange">
            <el-radio border :label="''+ 0">微信</el-radio>
            <el-radio border :label="''+ 1">支付寶</el-radio>
            </el-radio-group>
            </li>
            <li>
            <h4 style="margin-bottom: 15px;">充值金額</h4>
            <el-input :disabled="disabled" clearable v-model="rechargeParams.totalAmt" placeholder="請(qǐng)輸入金額" style="width: 150px;"></el-input>
            </li>
            </ul>
            <div style="text-align: center; margin-top: 30px;">
            <el-button type="primary" @click="surePay">確認(rèn)支付</el-button>
            </div>
            </el-card>
            </template>
             
            <script>
            export default {
            data() {
            return {
            amountVal: '',
            disabled: false,
            //充值參數(shù)
            rechargeParams: {
            "totalAmt": '', //金額
            "paymentType": "0", //支付方式[0:微信,1:支付寶,2:余額,3:活動(dòng)]
            "transType": "0" //交易類(lèi)型[0:充值,1:消費(fèi)]
            }
            }
            },
            methods: {
            //充值金額
            amountChange(val) {
            this.rechargeParams.totalAmt = val;
            if (val == '') {
            this.disabled = false
            } else {
            this.disabled = true
            }
            },
            //支付方式
            paymentTypeChange(val) {
            this.rechargeParams.paymentType = val
            },
            //確認(rèn)支付
            async surePay() {
            if (this.rechargeParams.totalAmt == '') {
            this.$message.warning('請(qǐng)輸入金額');
            return;
            }
            const res = await this.$http.post('orderInfo/createOrderInfo', this.rechargeParams)
            const {
            code,
            msg,
            result
            } = res.data
            if (code === '200') {
            //支付方式跳轉(zhuǎn)
            if (this.rechargeParams.paymentType == '0') {
            this.$message.success('微信支付');
            this.wechatPay(result);
            } else if (this.rechargeParams.paymentType == '1') {
            this.$message.success('支付寶支付')
            const payDiv = document.getElementById('payDiv');
            if (payDiv) {
            document.body.removeChild(payDiv);
            }
            const div = document.createElement('div');
            div.id = 'payDiv';
            div.innerHTML = result;
            document.body.appendChild(div);
            document.getElementById('payDiv').getElementsByTagName('form')[0].submit();
            } else if (this.rechargeParams.paymentType == '2') {
            this.$message.success('余額支付成功');
            this.$router.push({
            name: 'order'
            })
            } else {
            this.$message.success('活動(dòng)支付')
            }
            } else if (code === 401) {
            this.$message.error(msg)
            this.$router.push({
            name: 'login'
            })
            } else {
            this.$message.error(msg)
            }
            },
            //微信支付
            wechatPay(result) {
            if (result) {
            const orderParams = JSON.parse(result);
            sessionStorage.qrurl = orderParams.qrurl;
            sessionStorage.amt = orderParams.amt;
            sessionStorage.returnUrl = orderParams.returnUrl;
            sessionStorage.order_id = orderParams.order_id;
            this.$router.push({
            name: 'wechatPay'
            })
            }
            }
            }
            }
            </script>
             
            <style scoped>
            /* 信息列表樣式 */
            .msg-box > li {
            list-style: none;
            border-bottom: 1px solid #c5c5c5;
            padding: 20px 10px;
            }
            </style>
            支付寶方式:后臺(tái)會(huì)返回來(lái)一個(gè)form,然后提交form自動(dòng)跳轉(zhuǎn)到支付寶支付頁(yè)面。

            微信方式:需要自己根據(jù)后臺(tái)返回的url生成二維碼頁(yè)面,如圖所示:



            代碼:

            <template>
            <div class="payBox">
            <div class="img-logo">
            <img src="http://img.huoxingbeidiao.com/public/WePayLogo.png" alt="">
            </div>
            <div class="info-box">
            <div style="padding-bottom: 20px;">
            <qrcode-vue :value="qrurl" :size="200" level="H"></qrcode-vue>
            </div>
            <img src="http://img.huoxingbeidiao.com/public/WePayInfo.png" alt="">
            <p class="price">¥&nbsp;{{amt}}</p>
            </div>
            </div>
            </template>
             
            <script>
            import QrcodeVue from 'qrcode.vue'
            export default {
            data() {
            return {
            amt: 0,
            qrurl: '',
            timer: null
            }
            },
            components: {
            QrcodeVue
            },
            methods: {
            getOrderInfo() {
            if (sessionStorage.qrurl && sessionStorage.amt) {
            this.qrurl = sessionStorage.qrurl;
            this.amt = sessionStorage.amt;
            }
            },
            startLoop() {
            this.timer = setInterval(() => {
            this.isPaySuccess()
            }, 3000)
            },
            async isPaySuccess() {
            const orderId = sessionStorage.order_id;
            const res = await this.$http.get('orderInfo/queryOrder?orderId=' + orderId)
            const {
            code,
            msg,
            resultList
            } = res.data
            if (code === '200') {
            clearInterval(this.timer);
            this.timer = null;
            sessionStorage.removeItem('qrurl');
            sessionStorage.removeItem('amt');
            sessionStorage.removeItem('order_id');
            sessionStorage.removeItem('returnUrl');
            setTimeout(() => {
            this.$router.push({
            name: 'order'
            })
            }, 3000)
            } else if (code === 401) {
            clearInterval(this.timer);
            this.timer = null;
            sessionStorage.removeItem('qrurl');
            sessionStorage.removeItem('amt');
            sessionStorage.removeItem('order_id');
            sessionStorage.removeItem('returnUrl');
            this.$message.error(msg)
            this.$router.push({
            name: 'login'
            })
            } else {
             
            }
            }
            },
            created() {
            this.getOrderInfo()
            this.startLoop()
            },
            beforeDestroy() {
            clearInterval(this.timer)
            this.timer = null
            }
            }
            </script>
             
            <style scoped>
            .payBox {
            width: 1000px;
            margin: 0 auto;
            }
             
            .payBox .img-logo {
            padding: 20px 0;
            text-align: center;
            }
             
            .payBox .img-logo img {
            width: 180px;
            }
             
            .info-box {
            padding: 60px 0;
            border-top: 3px solid #F43B66;
            -webkit-box-shadow: 0 0 32px 0 rgba(0, 0, 0, .18);
            box-shadow: 0 0 32px 0 rgba(0, 0, 0, .18);
            text-align: center;
            }
             
            .info-box .price {
            color: #F43B66;
            font-size: 40px;
            padding-top: 20px;
            padding-bottom: 20px;
            border-bottom: 1px solid #f1f1f1;
            }
            </style>
            需要安裝qrcode.vue

            npm install --save qrcode.vue  或  yarn add qrcode.vue
            藍(lán)藍(lán)設(shè)計(jì)www.dzxscac.cn )是一家專(zhuān)注而深入的界面設(shè)計(jì)公司,為期望卓越的國(guó)內(nèi)外企業(yè)提供卓越的UI界面設(shè)計(jì)、BS界面設(shè)計(jì) 、 cs界面設(shè)計(jì) 、 ipad界面設(shè)計(jì) 、 包裝設(shè)計(jì) 、 圖標(biāo)定制 、 用戶(hù)體驗(yàn) 、交互設(shè)計(jì)、 網(wǎng)站建設(shè) 、平面設(shè)計(jì)服務(wù)

            日歷

            鏈接

            個(gè)人資料

            存檔

            主站蜘蛛池模板: 日日人人爽人人爽人人片av| 91国产免费观看| 欧美日本一区二区| 2025韩国大尺度电影| 中文字幕亚洲欧美日韩2019| 极品少妇av| 亚洲天堂成人黄色在线播放| 亚洲熟女中文字幕男人总站| 向日葵视频在线| 操丰满女人| 国产精品女丝袜白丝袜| 精品熟女少妇av久久免费| wwwxxxx国产| 国产日韩精品欧美一区喷水| 久久se精品一区精品二区国产| 久久久久久久成人| 国产第一区二区三区精品| 午夜成人精品福利网站在线观看| 日本电影一区二区三区| 国产美女明星三级做爰| 国产97色在线 | 亚洲| 亚洲乱亚洲乱少妇无码| 国内毛片毛片毛片| 国产乱人伦真实精品视频| 久久久国产成人一区二区| 日韩在线观看一区| 欧美亚洲综合网| 九九综合va免费看| 亚洲精品久久久久久成人| 国产精品亚洲lv粉色| 国产精品成人中文字幕| 加勒比东京热无码一区| 欧美日b视频| 午夜精品福利一区二区| 亚洲一卡一卡二新区无人区| 任你躁久久精品6| www天堂网| 国产精品熟女一区二区不卡| 亚洲伊人丝袜精品久久| 在线不卡av| 黑人巨大精品欧美一区二区免费|