mirror of
https://gitee.com/zongzhige/shopxo-uniapp.git
synced 2026-06-06 02:38:52 +08:00
订单、充值、会员支付适配多端小程序
This commit is contained in:
7
App.vue
7
App.vue
@ -534,13 +534,14 @@
|
||||
*/
|
||||
showToast(msg, status) {
|
||||
if ((status || 'error') == 'success') {
|
||||
uni.showToast({
|
||||
uni.showToast({
|
||||
icon: 'success',
|
||||
title: msg,
|
||||
duration: 3000
|
||||
});
|
||||
} else {
|
||||
uni.showToast({
|
||||
image: "/static/images/common/toast-error.png",
|
||||
uni.showToast({
|
||||
icon: 'none',
|
||||
title: msg,
|
||||
duration: 3000
|
||||
});
|
||||
|
||||
@ -606,7 +606,8 @@ button[disabled].bg-gray {
|
||||
margin-left: 20rpx;
|
||||
}
|
||||
.item-operation button {
|
||||
padding: 0 35rpx;
|
||||
padding: 0 35rpx;
|
||||
height: 58rpx;
|
||||
line-height: 58rpx;
|
||||
display: inline-flex;
|
||||
}
|
||||
@ -19,14 +19,14 @@
|
||||
.address-alias,
|
||||
.goods-group-alias,
|
||||
.goods-group-map-submit {
|
||||
padding: 5rpx 15rpx;
|
||||
padding: 0 15rpx;
|
||||
line-height: 40rpx;
|
||||
}
|
||||
|
||||
/**
|
||||
* 商品
|
||||
*/
|
||||
.goods-group-list .goods-item:not(:last-child) {
|
||||
.goods-group-list .goods-content .goods-item:not(:last-child) {
|
||||
border-bottom: 1px dashed #efefef;
|
||||
}
|
||||
.goods-group-icon {
|
||||
@ -41,9 +41,6 @@
|
||||
border: 1px solid #3bb4f2;
|
||||
color: #3bb4f2;
|
||||
}
|
||||
.goods-item {
|
||||
padding: 20rpx 0;
|
||||
}
|
||||
.goods-image {
|
||||
width: 160rpx;
|
||||
height: 160rpx;
|
||||
|
||||
@ -49,23 +49,25 @@
|
||||
<view class="goods-group-map-submit br round text-size-xs" :data-index="index" @tap="map_event">查看地图</view>
|
||||
</view>
|
||||
</view>
|
||||
<!-- 商品 -->
|
||||
<view v-for="(item, index2) in group.goods_items" :key="index2" class="goods-item oh">
|
||||
<image class="goods-image fl radius" :src="item.images" mode="aspectFill"></image>
|
||||
<view class="goods-base">
|
||||
<view class="goods-title multi-text">{{item.title}}</view>
|
||||
<view v-if="item.spec != null" class="margin-top-xs cr-gray">
|
||||
<block v-for="(spec, si) in item.spec" :key="si">
|
||||
<text v-if="si > 0">;</text>
|
||||
<text>{{spec.value}}</text>
|
||||
</block>
|
||||
<!-- 商品 -->
|
||||
<view class="goods-content">
|
||||
<view v-for="(item, index2) in group.goods_items" :key="index2" class="goods-item padding-vertical-main oh">
|
||||
<image class="goods-image fl radius" :src="item.images" mode="aspectFill"></image>
|
||||
<view class="goods-base">
|
||||
<view class="goods-title multi-text">{{item.title}}</view>
|
||||
<view v-if="item.spec != null" class="margin-top-xs cr-gray">
|
||||
<block v-for="(spec, si) in item.spec" :key="si">
|
||||
<text v-if="si > 0">;</text>
|
||||
<text>{{spec.value}}</text>
|
||||
</block>
|
||||
</view>
|
||||
<view class="oh pr margin-top-sm">
|
||||
<text class="fw-b">{{currency_symbol}}{{item.price}}</text>
|
||||
<text v-if="item.original_price > 0" class="original-price margin-left-sm">{{currency_symbol}}{{item.original_price}}</text>
|
||||
<text class="buy-number pa cr-gray">x{{item.stock}}</text>
|
||||
</view>
|
||||
</view>
|
||||
<view class="oh pr margin-top-sm">
|
||||
<text class="fw-b">{{currency_symbol}}{{item.price}}</text>
|
||||
<text v-if="item.original_price > 0" class="original-price margin-left-sm">{{currency_symbol}}{{item.original_price}}</text>
|
||||
<text class="buy-number pa cr-gray">x{{item.stock}}</text>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<!-- 优惠劵 -->
|
||||
<view v-if="(plugins_coupon_data || null) != null && (plugins_coupon_data[index] || null) != null && (plugins_coupon_data[index].coupon_data || null) != null && (plugins_coupon_data[index].coupon_data.coupon_list || null) != null && plugins_coupon_data[index].coupon_data.coupon_list.length > 0" class="plugins-coupon bg-white spacing-mb arrow-right" :data-index="index" @tap="plugins_coupon_open_event">
|
||||
|
||||
@ -7,7 +7,7 @@
|
||||
height: 35rpx !important;
|
||||
}
|
||||
.address-alias {
|
||||
padding: 2rpx 10rpx;
|
||||
padding: 0 10rpx;
|
||||
}
|
||||
.address .text {
|
||||
line-height: 44rpx;
|
||||
|
||||
@ -14,6 +14,8 @@ page {
|
||||
}
|
||||
.btn-box button {
|
||||
height: 80rpx;
|
||||
line-height: 80rpx;
|
||||
line-height: 80rpx;
|
||||
padding-top: 0;
|
||||
padding-bottom: 0;
|
||||
width: 300rpx;
|
||||
}
|
||||
@ -7,7 +7,7 @@
|
||||
height: 35rpx !important;
|
||||
}
|
||||
.address-alias {
|
||||
padding: 2rpx 10rpx;
|
||||
padding: 0 10rpx;
|
||||
}
|
||||
.address .text {
|
||||
line-height: 44rpx;
|
||||
|
||||
@ -89,9 +89,8 @@
|
||||
content_list: [
|
||||
{name: "开通单号", field: "payment_user_order_no"},
|
||||
{name: "开通时长", field: "period_unit"},
|
||||
{name: "充值金额", field: "price", unit: "元"},
|
||||
{name: "支付金额", field: "pay_price", unit: "元"},
|
||||
{name: "结算状态", field: "settlement_status_name"}
|
||||
{name: "订单金额", field: "price", unit: "元"},
|
||||
{name: "支付金额", field: "pay_price", unit: "元"}
|
||||
]
|
||||
};
|
||||
},
|
||||
@ -290,7 +289,6 @@
|
||||
|
||||
// 支付方法
|
||||
pay_handle(order_id, index) {
|
||||
var self = this;
|
||||
uni.showLoading({
|
||||
title: "请求中..."
|
||||
});
|
||||
@ -305,26 +303,13 @@
|
||||
success: res => {
|
||||
uni.hideLoading();
|
||||
if (res.data.code == 0) {
|
||||
var data = res.data.data.data;
|
||||
uni.requestPayment({
|
||||
timeStamp: data.timeStamp,
|
||||
nonceStr: data.nonceStr,
|
||||
package: data.package,
|
||||
signType: data.signType,
|
||||
paySign: data.paySign,
|
||||
success: function(res) {
|
||||
// 数据设置
|
||||
self.order_item_pay_success_handle(index);
|
||||
|
||||
// 跳转支付页面
|
||||
uni.navigateTo({
|
||||
url: "/pages/paytips/paytips?code=9000&total_price=" + self.data_list[index]['price']
|
||||
});
|
||||
},
|
||||
fail: function(res) {
|
||||
app.globalData.showToast('支付失败');
|
||||
}
|
||||
});
|
||||
var data = res.data.data;
|
||||
// #ifdef MP-WEIXIN || MP-ALIPAY || MP-BAIDU || MP-TOUTIAO
|
||||
this.common_pay_handle(this, data, index);
|
||||
// #endif
|
||||
// #ifdef MP-QQ
|
||||
this.qq_pay_handle(this, data, index);
|
||||
// #endif
|
||||
} else {
|
||||
app.globalData.showToast(res.data.msg);
|
||||
}
|
||||
@ -334,12 +319,80 @@
|
||||
app.globalData.showToast("服务器请求出错");
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
// 微信、支付宝、百度、头条、QQ支付处理
|
||||
common_pay_handle(self, data, index) {
|
||||
uni.requestPayment({
|
||||
// #ifdef MP-ALIPAY || MP-BAIDU || MP-TOUTIAO
|
||||
orderInfo: data.data,
|
||||
// #endif
|
||||
// #ifdef MP-QQ
|
||||
package: data.data,
|
||||
// #endif
|
||||
// #ifdef MP-WEIXIN
|
||||
timeStamp: data.data.timeStamp,
|
||||
nonceStr: data.data.nonceStr,
|
||||
package: data.data.package,
|
||||
signType: data.data.signType,
|
||||
paySign: data.data.paySign,
|
||||
// #endif
|
||||
// #ifdef MP-TOUTIAO
|
||||
service: 5,
|
||||
// #endif
|
||||
success: res => {
|
||||
// #ifdef MP-ALIPAY
|
||||
if (res.resultCode != 9000) {
|
||||
app.globalData.showToast(res.memo || '支付失败');
|
||||
return false;
|
||||
}
|
||||
// #endif
|
||||
// #ifdef MP-TOUTIAO
|
||||
if (res.code != 0) {
|
||||
app.globalData.showToast('支付失败');
|
||||
return false;
|
||||
}
|
||||
// #endif
|
||||
|
||||
// 数据设置
|
||||
self.order_item_pay_success_handle(index);
|
||||
|
||||
// 跳转支付页面
|
||||
uni.navigateTo({
|
||||
url: "/pages/paytips/paytips?code=9000"
|
||||
});
|
||||
},
|
||||
fail: res => {
|
||||
app.globalData.showToast('支付失败');
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
// QQ支付处理
|
||||
qq_pay_handle(self, data, index) {
|
||||
// 是否微信支付
|
||||
if(data.payment.payment == 'Weixin') {
|
||||
uni.requestWxPayment({
|
||||
url: data.data,
|
||||
referer: app.globalData.data.request_url,
|
||||
success: function(res) {
|
||||
app.globalData.alert({msg: '支付成功后、请不要重复支付、如果订单状态未成功请联系客服处理', is_show_cancel: 0});
|
||||
self.get_data_list();
|
||||
},
|
||||
fail: function (res) {
|
||||
app.globalData.showToast('支付失败');
|
||||
}
|
||||
});
|
||||
} else {
|
||||
self.common_pay_handle(self, data, index);
|
||||
}
|
||||
},
|
||||
|
||||
// 支付成功数据设置
|
||||
order_item_pay_success_handle(index) {
|
||||
// 数据设置
|
||||
var temp_data_list = this.data_list;
|
||||
var temp_data_list = this.data_list;
|
||||
temp_data_list[index]['pay_price'] = temp_data_list[index]['price'];
|
||||
temp_data_list[index]['status'] = 1;
|
||||
temp_data_list[index]['status_name'] = '已支付';
|
||||
this.setData({
|
||||
|
||||
@ -287,7 +287,6 @@
|
||||
|
||||
// 支付方法
|
||||
pay_handle(recharge_id, index) {
|
||||
// 加载loding
|
||||
uni.showLoading({
|
||||
title: "请求中..."
|
||||
});
|
||||
@ -302,27 +301,13 @@
|
||||
success: res => {
|
||||
uni.hideLoading();
|
||||
if (res.data.code == 0) {
|
||||
var self = this;
|
||||
var data = res.data.data.data;
|
||||
uni.requestPayment({
|
||||
timeStamp: data.timeStamp,
|
||||
nonceStr: data.nonceStr,
|
||||
package: data.package,
|
||||
signType: data.signType,
|
||||
paySign: data.paySign,
|
||||
success: function(res) {
|
||||
// 数据设置
|
||||
self.order_item_pay_success_handle(index);
|
||||
|
||||
// 跳转支付页面
|
||||
uni.navigateTo({
|
||||
url: "/pages/paytips/paytips?code=9000&total_price=" + self.data_list[index]['money']
|
||||
});
|
||||
},
|
||||
fail: function(res) {
|
||||
app.globalData.showToast('支付失败');
|
||||
}
|
||||
});
|
||||
var data = res.data.data;
|
||||
// #ifdef MP-WEIXIN || MP-ALIPAY || MP-BAIDU || MP-TOUTIAO
|
||||
this.common_pay_handle(this, data, index);
|
||||
// #endif
|
||||
// #ifdef MP-QQ
|
||||
this.qq_pay_handle(this, data, index);
|
||||
// #endif
|
||||
} else {
|
||||
app.globalData.showToast(res.data.msg);
|
||||
}
|
||||
@ -333,11 +318,79 @@
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
// 微信、支付宝、百度、头条、QQ支付处理
|
||||
common_pay_handle(self, data, index) {
|
||||
uni.requestPayment({
|
||||
// #ifdef MP-ALIPAY || MP-BAIDU || MP-TOUTIAO
|
||||
orderInfo: data.data,
|
||||
// #endif
|
||||
// #ifdef MP-QQ
|
||||
package: data.data,
|
||||
// #endif
|
||||
// #ifdef MP-WEIXIN
|
||||
timeStamp: data.data.timeStamp,
|
||||
nonceStr: data.data.nonceStr,
|
||||
package: data.data.package,
|
||||
signType: data.data.signType,
|
||||
paySign: data.data.paySign,
|
||||
// #endif
|
||||
// #ifdef MP-TOUTIAO
|
||||
service: 5,
|
||||
// #endif
|
||||
success: res => {
|
||||
// #ifdef MP-ALIPAY
|
||||
if (res.resultCode != 9000) {
|
||||
app.globalData.showToast(res.memo || '支付失败');
|
||||
return false;
|
||||
}
|
||||
// #endif
|
||||
// #ifdef MP-TOUTIAO
|
||||
if (res.code != 0) {
|
||||
app.globalData.showToast('支付失败');
|
||||
return false;
|
||||
}
|
||||
// #endif
|
||||
|
||||
// 数据设置
|
||||
self.order_item_pay_success_handle(index);
|
||||
|
||||
// 跳转支付页面
|
||||
uni.navigateTo({
|
||||
url: "/pages/paytips/paytips?code=9000"
|
||||
});
|
||||
},
|
||||
fail: res => {
|
||||
app.globalData.showToast('支付失败');
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
// QQ支付处理
|
||||
qq_pay_handle(self, data, index) {
|
||||
// 是否微信支付
|
||||
if(data.payment.payment == 'Weixin') {
|
||||
uni.requestWxPayment({
|
||||
url: data.data,
|
||||
referer: app.globalData.data.request_url,
|
||||
success: function(res) {
|
||||
app.globalData.alert({msg: '支付成功后、请不要重复支付、如果订单状态未成功请联系客服处理', is_show_cancel: 0});
|
||||
self.get_data_list();
|
||||
},
|
||||
fail: function (res) {
|
||||
app.globalData.showToast('支付失败');
|
||||
}
|
||||
});
|
||||
} else {
|
||||
self.common_pay_handle(self, data, index);
|
||||
}
|
||||
},
|
||||
|
||||
// 支付成功数据设置
|
||||
order_item_pay_success_handle(index) {
|
||||
// 数据设置
|
||||
var temp_data_list = this.data_list;
|
||||
temp_data_list[index]['pay_money'] = temp_data_list[index]['money'];
|
||||
temp_data_list[index]['status'] = 1;
|
||||
temp_data_list[index]['status_name'] = '已支付';
|
||||
this.setData({
|
||||
|
||||
@ -5,9 +5,6 @@
|
||||
right: 20rpx;
|
||||
bottom: 20rpx;
|
||||
}
|
||||
.submit-container button {
|
||||
display: inline-flex;
|
||||
}
|
||||
|
||||
/*
|
||||
* 导航
|
||||
|
||||
@ -19,12 +19,12 @@
|
||||
<view class="fl cr-base fw-b single-text margin-left-sm margin-right-sm">{{user_wallet.give_money || '0.00'}}</view>
|
||||
<view class="fl cr-gray unit">元</view>
|
||||
</view>
|
||||
<view class="submit-container pa">
|
||||
<view class="submit-container pa oh">
|
||||
<navigator v-if="(data_base || null) != null && (data_base.is_enable_recharge || 0) == 1" class="dis-inline" url="/pages/plugins/wallet/recharge/recharge" hover-class="none">
|
||||
<button class="round cr-white bg-green br-green text-size-sm" size="mini" type="default" hover-class="none">充值</button>
|
||||
<button class="round cr-white bg-green br-green text-size-sm fl" size="mini" type="default" hover-class="none">充值</button>
|
||||
</navigator>
|
||||
<navigator v-if="(data_base || null) != null && (data_base.is_enable_cash || 0) == 1" class="dis-inline" url="/pages/plugins/wallet/cash-auth/cash-auth" hover-class="none">
|
||||
<button class="round cr-white bg-main br-main text-size-sm margin-left-lg" size="mini" type="default" hover-class="none">提现</button>
|
||||
<button class="round cr-white bg-main br-main text-size-sm fl margin-left-lg" size="mini" type="default" hover-class="none">提现</button>
|
||||
</navigator>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
@ -6,7 +6,7 @@
|
||||
height: 35rpx !important;
|
||||
}
|
||||
.address-alias {
|
||||
padding: 2rpx 10rpx;
|
||||
padding: 0 10rpx;
|
||||
}
|
||||
.address .text {
|
||||
line-height: 44rpx;
|
||||
|
||||
@ -21,7 +21,7 @@
|
||||
}
|
||||
.address-alias,
|
||||
.address-map-submit {
|
||||
padding: 5rpx 15rpx;
|
||||
padding: 0 15rpx;
|
||||
line-height: 40rpx;
|
||||
}
|
||||
.address-map-submit {
|
||||
|
||||
@ -348,48 +348,33 @@
|
||||
success: res => {
|
||||
uni.hideLoading();
|
||||
if (res.data.code == 0) {
|
||||
var self = this;
|
||||
// 是否直接支付成功
|
||||
if ((res.data.data.is_success || 0) == 1) {
|
||||
self.order_item_pay_success_handle(order_ids);
|
||||
this.order_item_pay_success_handle(order_ids);
|
||||
app.globalData.showToast('支付成功', 'success');
|
||||
} else {
|
||||
// 支付方式类型
|
||||
switch (res.data.data.is_payment_type) {
|
||||
// 正常线上支付
|
||||
case 0:
|
||||
var data = res.data.data;
|
||||
uni.requestPayment({
|
||||
timeStamp: data.data.timeStamp,
|
||||
nonceStr: data.data.nonceStr,
|
||||
package: data.data.package,
|
||||
signType: data.data.signType,
|
||||
paySign: data.data.paySign,
|
||||
success: function(res) {
|
||||
// 数据设置
|
||||
self.order_item_pay_success_handle(
|
||||
order_ids);
|
||||
|
||||
// 跳转支付页面
|
||||
uni.navigateTo({
|
||||
url: "/pages/paytips/paytips?code=9000"
|
||||
});
|
||||
},
|
||||
fail: function(res) {
|
||||
app.globalData.showToast('支付失败');
|
||||
}
|
||||
});
|
||||
var data = res.data.data;
|
||||
// #ifdef MP-WEIXIN || MP-ALIPAY || MP-BAIDU || MP-TOUTIAO
|
||||
this.common_pay_handle(this, data, order_ids);
|
||||
// #endif
|
||||
// #ifdef MP-QQ
|
||||
this.qq_pay_handle(this, data, order_ids);
|
||||
// #endif
|
||||
break;
|
||||
// 线下支付
|
||||
case 1:
|
||||
var order_ids_arr = order_ids.split(',');
|
||||
var temp_data_list = self.data_list;
|
||||
var temp_data_list = this.data_list;
|
||||
for (var i in temp_data_list) {
|
||||
if (order_ids_arr.indexOf(temp_data_list[i]['id']) != -1) {
|
||||
temp_data_list[i]['is_under_line'] = 1;
|
||||
}
|
||||
}
|
||||
self.setData({
|
||||
this.setData({
|
||||
data_list: temp_data_list
|
||||
});
|
||||
app.globalData.alert({
|
||||
@ -399,7 +384,7 @@
|
||||
break;
|
||||
// 钱包支付
|
||||
case 2:
|
||||
self.order_item_pay_success_handle(order_ids);
|
||||
this.order_item_pay_success_handle(order_ids);
|
||||
app.globalData.showToast('支付成功', 'success');
|
||||
break;
|
||||
// 默认
|
||||
@ -416,6 +401,73 @@
|
||||
app.globalData.showToast('服务器请求出错');
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
// 微信、支付宝、百度、头条、QQ支付处理
|
||||
common_pay_handle(self, data, order_ids) {
|
||||
uni.requestPayment({
|
||||
// #ifdef MP-ALIPAY || MP-BAIDU || MP-TOUTIAO
|
||||
orderInfo: data.data,
|
||||
// #endif
|
||||
// #ifdef MP-QQ
|
||||
package: data.data,
|
||||
// #endif
|
||||
// #ifdef MP-WEIXIN
|
||||
timeStamp: data.data.timeStamp,
|
||||
nonceStr: data.data.nonceStr,
|
||||
package: data.data.package,
|
||||
signType: data.data.signType,
|
||||
paySign: data.data.paySign,
|
||||
// #endif
|
||||
// #ifdef MP-TOUTIAO
|
||||
service: 5,
|
||||
// #endif
|
||||
success: res => {
|
||||
// #ifdef MP-ALIPAY
|
||||
if (res.resultCode != 9000) {
|
||||
app.globalData.showToast(res.memo || '支付失败');
|
||||
return false;
|
||||
}
|
||||
// #endif
|
||||
// #ifdef MP-TOUTIAO
|
||||
if (res.code != 0) {
|
||||
app.globalData.showToast('支付失败');
|
||||
return false;
|
||||
}
|
||||
// #endif
|
||||
|
||||
// 数据设置
|
||||
self.order_item_pay_success_handle(order_ids);
|
||||
|
||||
// 跳转支付页面
|
||||
uni.navigateTo({
|
||||
url: "/pages/paytips/paytips?code=9000"
|
||||
});
|
||||
},
|
||||
fail: res => {
|
||||
app.globalData.showToast('支付失败');
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
// QQ支付处理
|
||||
qq_pay_handle(self, data, order_ids) {
|
||||
// 是否微信支付
|
||||
if(data.payment.payment == 'Weixin') {
|
||||
uni.requestWxPayment({
|
||||
url: data.data,
|
||||
referer: app.globalData.data.request_url,
|
||||
success: function(res) {
|
||||
app.globalData.alert({msg: '支付成功后、请不要重复支付、如果订单状态未成功请联系客服处理', is_show_cancel: 0});
|
||||
self.get_data_list();
|
||||
},
|
||||
fail: function (res) {
|
||||
app.globalData.showToast('支付失败');
|
||||
}
|
||||
});
|
||||
} else {
|
||||
self.common_pay_handle(self, data, order_ids);
|
||||
}
|
||||
},
|
||||
|
||||
// 支付成功数据设置
|
||||
|
||||
Reference in New Issue
Block a user