123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382 |
- <template>
- <view>
- <view
- style="width: 700upx;height: 180upx;background: #FFFFFF;margin: 30upx; padding: 20upx;border-radius: 20upx;">
- <view style="display: flex;margin: 15upx 0 0 20upx;">
- <image :src="image" style="width: 20%; height: 120upx;"></image>
- <view style="margin-left: 20upx;width: 70%;">
- <view style="font-size: 28upx;color: #05C25C;font-weight: bold;margin-top: 10upx;">¥ {{money}}
- </view>
- <view
- style="width: 100%;margin-top: 20upx;font-size: 28upx;color: #333333;font-weight: bold;white-space: nowrap;overflow: hidden;text-overflow: ellipsis;">
- {{title}}
- </view>
- </view>
- </view>
- </view>
- <view style="width: 700upx;background: #FFFFFF;margin: 30upx; padding: 20upx;border-radius: 20upx;"
- v-if="payList.length > 0">
- <view style="display: flex;height: 100upx;margin: 0upx 0 0 30upx;align-items: center;padding-bottom: 20upx;"
- v-for="(item,index) in payList" :key='index'>
- <image :src="item.image" style="width: 50upx;height: 50upx;border-radius: 50upx;"></image>
- <view style="font-size: 28upx;color: #333333;margin-left: 20upx;width: 70%;" v-if="item.name == '钱包零钱'">
- {{item.name}}({{lingqian}})
- </view>
- <view style="font-size: 28upx;color: #333333;margin-left: 20upx;width: 70%;" v-else>{{item.name}}</view>
- <radio-group name="openWay" style="margin-left: 40upx;" @tap='selectWay(item.id)'>
- <label class="tui-radio">
- <radio color="#05C25C" :checked="openWay === item.id ? true : false" />
- </label>
- </radio-group>
- </view>
- </view>
- <button v-if="payList.length > 0"
- style="background-color: #05C25C;width: 680upx;height: 80upx;font-size: 28upx;color: #FFFFFF;text-align: center;margin: 30upx;border-radius: 50upx;padding-top: 5upx;"
- @tap='goPay'>确定支付</button>
- </view>
- </template>
- <script>
- export default {
- data() {
- return {
- openWay: 0,
- money: 0,
- lingqian: 0.00,
- title: '',
- image: '',
- id: '',
- providerList: [],
- checkWeixin: true,
- checkZhifubao: true,
- payList: [{
- id: 0,
- image: '/static/image/pay_weixin.png',
- name: '微信'
- }, {
- id: 1,
- image: '/static/image/pay_zhifubao.png',
- name: '支付宝'
- },
- {
- id: 2,
- image: '/static/image/pay_lingqian.png',
- name: '钱包零钱'
- }
- ]
- }
- },
- onBackPress(event) {
- if (event.from == 'backbutton') {
- uni.showModal({
- title: '温馨提示',
- content: '订单尚未完成支付,确认退出吗?',
- showCancel: true,
- cancelText: '继续支付',
- confirmText: '确定',
- success: res => {
- if (res.confirm) {
- uni.redirectTo({
- url: '../member/orderdetail?id=' + this.id
- });
- }
- }
- });
- return true; //阻止默认返回行为
- }
- },
- onLoad(d) {
- this.getlingqian();
- // #ifdef MP-WEIXIN
- this.payList = [];
- this.openWay = 0;
- let data = [];
- let data1 = [{
- id: 0,
- image: '/static/image/pay_weixin.png',
- name: '微信'
- }, {
- id: 2,
- image: '/static/image/pay_lingqian.png',
- name: '钱包零钱'
- }]
- this.payList = data1;
- // #endif
- // #ifdef APP-PLUS
- this.payList = [];
- this.openWay = 0;
- let data1 = [{
- id: 0,
- image: '/static/image/pay_weixin.png',
- name: '微信'
- }, {
- id: 1,
- image: '/static/image/pay_zhifubao.png',
- name: '支付宝'
- }, {
- id: 2,
- image: '/static/image/pay_lingqian.png',
- name: '钱包零钱'
- }]
- this.payList = data1;
- // #endif
- // #ifdef H5
- let target = navigator.userAgent.toLowerCase();
- let isWeixin = (/micromessenger/.test(target)) ? true : false;
- this.payList = [];
- if (isWeixin) {
- this.openWay = 0;
- let data1 = [{
- id: 0,
- image: '/static/image/pay_weixin.png',
- name: '微信'
- }, {
- id: 2,
- image: '/static/image/pay_lingqian.png',
- name: '钱包零钱'
- }]
- this.payList = data1;
- } else {
- this.openWay = 1;
- let data1 = [{
- id: 1,
- image: '/static/image/pay_zhifubao.png',
- name: '支付宝'
- }, {
- id: 2,
- image: '/static/image/pay_lingqian.png',
- name: '钱包零钱'
- }]
- this.payList = data1;
- }
- // #endif
- if (d) {
- this.id = d.id;
- this.getCheckPay(d.id);
- this.getCommondityList(d.id);
- }
- uni.getProvider({
- service: 'payment',
- success: e => {
- let providerList = [];
- e.provider.map(value => {
- switch (value) {
- case 'alipay':
- providerList.push({
- name: '支付宝',
- id: value,
- loading: false
- });
- break;
- case 'wxpay':
- providerList.push({
- name: '微信',
- id: value,
- loading: false
- });
- break;
- default:
- break;
- }
- });
- this.providerList = providerList;
- },
- fail: e => {
- console.log('获取支付通道失败:', e);
- }
- });
- },
- methods: {
- getlingqian() {
- let userId = this.$queue.getData('userId');
- this.$Request.get("/app/artificer/selectArtificerMoney").then(res => {
- if (res.code == 0) {
- this.lingqian = res.data.money ? res.data.money : 0; //累计余额
- }
- });
- },
- getCheckPay(id) {
- this.$Request.getT('/app/orders/wxPay?ordersId=' + id).then(res => {
- if (res.status === 0) {
- uni.redirectTo({
- url: './myList'
- });
- }
- });
- },
- getCommondityList(id) {
- uni.showLoading({
- title: '加载中...'
- });
- this.$Request.getT('/app/orders/find?id=' + id).then(res => {
- if (res.status === 0) {
- this.image = res.data.img;
- this.money = res.data.payMoney;
- this.title = res.data.title;
- }
- uni.hideLoading();
- });
- },
- selectWay: function(id) {
- this.openWay = id;
- },
- goPay() {
- let userId = this.$queue.getData('userId');
- uni.showLoading({
- title: '支付中'
- });
- if (this.openWay === 0) { //0:微信支付
- // #ifdef H5
- this.$Request.postJson('/pay/wxPayWeb?ordersId=' + this.id + '&userId=' + userId).then(res => {
- this.callPay(res);
- });
- // #endif
- // #ifdef APP-PLUS
- this.$Request.postJson('/pay/wxPayApp?ordersId=' + this.id + '&userId=' + userId).then(res => {
- this.setPayment('wxpay', JSON.stringify(res));
- });
- // #endif
- // #ifdef MP-WEIXIN
- this.$Request.postJson('/pay/wxPayJS?ordersId=' + this.id + '&userId=' + userId).then(res => {
- uni.requestPayment({
- provider: 'wxpay',
- timeStamp: res.timestamp,
- nonceStr: res.noncestr,
- package: res.package,
- signType: res.signType,
- paySign: res.sign,
- success: function(res) {
- uni.showLoading({
- title: '支付成功'
- });
- uni.hideLoading();
- setTimeout(() => {
- uni.redirectTo({
- url: '../my/myList'
- });
- }, 1000);
- },
- fail: function(err) {
- uni.hideLoading();
- this.$queue.showToast('支付失败');
- }
- });
- });
- // #endif
- } else if (this.openWay === 1) { //1:支付宝支付
- // #ifdef H5
- this.$Request.getT('/aliPay/payH5?ordersId=' + this.id).then(res => {
- const div = document.createElement('div')
- div.innerHTML = res.data //此处form就是后台返回接收到的数据
- document.body.appendChild(div)
- document.forms[0].submit()
- });
- // #endif
- // #ifdef APP-PLUS
- this.$Request.getT('/aliPay/payApp?ordersId=' + this.id).then(res => {
- this.setPayment('alipay', res.data);
- });
- // #endif
- } else if (this.openWay === 2) { //2:零钱支付
- let orderIds = this.id;
- this.$Request.getT('/app/orders/changePay?ordersId=' + this.id).then(res => {
- if (res.status === 0) {
- uni.hideLoading();
- this.$queue.showToast('支付成功');
- setTimeout(function() {
- console.log("id:" + orderIds)
- uni.hideLoading();
- uni.redirectTo({
- url: '/package/pages/zysc/member/orderdetail?id=' + orderIds
- });
- }, 1000);
- } else {
- uni.hideLoading();
- this.$queue.showToast(res.msg);
- }
- });
- }
- },
- callPay: function(response) {
- if (typeof WeixinJSBridge === "undefined") {
- if (document.addEventListener) {
- document.addEventListener('WeixinJSBridgeReady', this.onBridgeReady(response), false);
- } else if (document.attachEvent) {
- document.attachEvent('WeixinJSBridgeReady', this.onBridgeReady(response));
- document.attachEvent('onWeixinJSBridgeReady', this.onBridgeReady(response));
- }
- } else {
- this.onBridgeReady(response);
- }
- },
- onBridgeReady: function(response) {
- let that = this;
- if (!response.package) {
- return;
- }
- WeixinJSBridge.invoke(
- 'getBrandWCPayRequest', {
- "appId": response.appid, //公众号名称,由商户传入
- "timeStamp": response.timestamp, //时间戳,自1970年以来的秒数
- "nonceStr": response.noncestr, //随机串
- "package": response.package,
- "signType": response.signType, //微信签名方式:
- "paySign": response.sign //微信签名
- },
- function(res) {
- if (res.err_msg === "get_brand_wcpay_request:ok") {
- // 使用以上方式判断前端返回,微信团队郑重提示:
- //res.err_msg将在用户支付成功后返回ok,但并不保证它绝对可靠。
- uni.showLoading({
- title: '支付成功'
- });
- setTimeout(function() {
- uni.hideLoading();
- uni.redirectTo({
- url: '../member/orderdetail?id=' + that.id
- });
- }, 1000);
- } else {
- uni.hideLoading();
- }
- WeixinJSBridge.log(response.err_msg);
- }
- );
- },
- setPayment(name, order) {
- let that = this;
- uni.requestPayment({
- provider: name,
- orderInfo: order, //微信、支付宝订单数据
- success: function(res) {
- uni.hideLoading();
- uni.showLoading({
- title: '支付成功'
- });
- setTimeout(function() {
- uni.hideLoading();
- uni.redirectTo({
- url: '../member/orderdetail?id=' + that.id
- });
- }, 1000);
- },
- fail: function(err) {
- uni.hideLoading();
- console.log(12)
- }
- });
- }
- }
- }
- </script>
- <style>
- page {
- background: #F2F2F2;
- }
- </style>
|