<template> <view class="pay"> <view class="pay-hd"> <view class="a">订单号:<text>{{order_id}}</text></view> <view class="a">支付价格:<text>¥{{orderInfo.pay_price}}</text>元</view> </view> <view class="pay-bd"> <view class="title">选择支付方式</view> <view class="item" v-for="(a,i) in list2" @click="tabItem(i)"> <image v-if="tabIndex == i" src="@/static/invoice/select-on.png"></image> <image v-else src="@/static/invoice/select.png"></image> {{a.method == 'wechat'?'微信支付':'余额支付'}}<text v-if="a.method == 'balance'">(余额:{{userInfo.balance}})</text> </view> </view> <view class="pay-btn" @click="clickPay()">确认支付</view> </view> </template> <script> import { Wechat } from '@/core/payment' import * as newFunApi from '@/api/newFun' export default { data() { return { tabIndex: 0, type: "", order_id: "", userInfo: {}, list2: [], orderInfo: {}, isClick: true, }; }, onLoad(o) { console.log(o) this.order_id = o.order_id; this.type = o.type; this.toServerOrder(); }, methods: { clickPay(){ if(this.isClick == false){ return; } this.isClick = false; if(this.list2[this.tabIndex].method == "balance"){ if(Number(this.orderInfo.pay_price) <= Number(this.userInfo.balance)){ this.toPay() }else{ this.isClick = true; uni.showToast({ icon: "none", title: "余额不足,请选择其他支付方式" }) } }else if(this.list2[this.tabIndex].method == "wechat"){ this.toPay1() } }, //创建支付方式信息 async toServerOrder(order_id) { let {status, data, message } = await newFunApi.serverOrderInfo({ client: 'MP-WEIXIN', order_id: this.order_id }) if(status == 200){ this.userInfo = data.personal this.orderInfo = data.order this.list2 = data.paymentMethods; console.log(data) console.log(this.orderInfo) console.log(this.list2) console.log(this.userInfo) }else{ uni.showToast({ icon: "none", title: message }) } }, async toPay1() { const that = this; const {status, data } = await newFunApi.serverOrderPay({ order_id: this.order_id, method: 'wechat', client: "MP-WEIXIN", }) if(status == 200) { Wechat.payment(data.payment) .then((result) => { console.log(22,result) uni.showToast({ title: "支付成功" }) this.isClick = true; setTimeout(()=>{ if(that.type == 'fuwu'){ uni.redirectTo({ url: "/pages/news/recycling/orderList" }) }else if(that.type == 'fuwuorder'){ uni.navigateBack({ delta:1 }) } },1000) }) .catch(err => { uni.showToast({ title: "支付失败" }) this.isClick = true; setTimeout(()=>{ if(that.type == 'fuwu'){ uni.redirectTo({ url: "/pages/news/recycling/orderList" }) }else if(that.type == 'fuwuorder'){ uni.navigateBack({ delta:1 }) } },1000) }) } }, //去支付 余额支付 async toPay() { const that = this; const {status, message} = await newFunApi.serverOrderPay({ order_id: this.order_id, method: 'balance', client: "MP-WEIXIN", }) if(status == 200) { uni.showToast({ title: "支付成功" }) this.isClick = true; setTimeout(()=>{ if(that.type == 'fuwu'){ uni.redirectTo({ url: "/pages/news/recycling/orderList" }) }else if(that.type == 'fuwuorder'){ uni.navigateBack({ delta:1 }) } },1000) }else{ this.isClick = true; uni.showToast({ icon: "none", title: message }) } }, tabItem(i){ this.tabIndex = i } } } </script> <style lang="scss" scoped> .pay{ overflow: hidden; &-hd{ width: 710rpx; padding: 0 20rpx; box-sizing: border-box; background-color: #fff; margin: 0 auto; margin-top: 20rpx; .a{ padding: 20rpx 0; display: flex; align-items: center; font-size: 28rpx; color: #666; text{ margin-left: 20rpx; color: #212121; } } } &-bd{ width: 710rpx; padding: 0 20rpx; box-sizing: border-box; background-color: #fff; margin: 0 auto; margin-top: 20rpx; .title{ padding: 30rpx 0; font-size: 30rpx; } .item{ padding: 20rpx 0; display: flex; align-items: center; font-size: 28rpx; color: #212121; image{ width: 30rpx; height: 30rpx; margin-right: 20rpx; } text{ margin-left: 20rpx; color: #666; } } } &-btn{ width: 710rpx; padding: 0 20rpx; line-height: 80rpx; box-sizing: border-box; background-color: #ff3939; margin: 0 auto; margin-top: 160rpx; text-align: center; font-size: 36rpx; color: #fff; border-radius: 20rpx; } } </style>