From d6255d59aac4c33de561e11387b1f462de56dbaf Mon Sep 17 00:00:00 2001
From: 石广澎 <shiguangpeng@163.com>
Date: 星期四, 19 九月 2024 20:34:09 +0800
Subject: [PATCH] feat(支付): 云闪付
---
pay/scanpay.vue | 137 +++++++++++++++++++++++++++++----------------
1 files changed, 87 insertions(+), 50 deletions(-)
diff --git a/pay/scanpay.vue b/pay/scanpay.vue
index a4d685e..bf9e9cb 100644
--- a/pay/scanpay.vue
+++ b/pay/scanpay.vue
@@ -13,7 +13,7 @@
<view class="u-p-24 bg-fff u-m-32 u-br-10">
<view class="u-flex u-row-between">
<view class="u-font-28 color-666">閲戦</view>
- <view @click="showRemark=true" class="remark">娣诲姞澶囨敞</view>
+ <view @click="buyerNote='';showRemark=true;" class="remark">娣诲姞澶囨敞</view>
</view>
<view v-if="smoney" class="u-p-v-20 u-flex u-col-bottom u-border-bottom u-relative money-box">
<view class="money-icon color-333 lh-1">楼</view>
@@ -39,14 +39,15 @@
font-size: 13px;
color: #999
}
+
.btn {
font-size: 13px;
color: #1E8BE0
}
</style>
- <span class="txt">寰俊鎼滅储鎴栫洿鎺ョ偣鍑绘墦寮�</span>
+ <span class="txt">寰俊鎼滅储鎴栫偣鍑绘墦寮�</span>
<span class="btn">銆愬唨浼橀偖銆�</span>
- <span class="txt">灏忕▼搴忥紝浜彈鏇村浼樻儬</span>
+ <span class="txt">灏忕▼搴忥紝浜洿澶氫紭鎯狅紒</span>
</script>
</wx-open-launch-weapp>
</view>
@@ -93,29 +94,34 @@
宸查�夋嫨浼樻儬鍒�1寮狅紝鍏辨姷鎵o骏{{ parseFloat((checkCoupon.discount / 100).toFixed(2)) }}
</view>
<scroll-view scroll-y class="u-p-30 coupon-list">
- <view @click="clickCoupon(item)" class="u-m-b-24 u-flex coupon" v-for="(item, index) in couponList" :key="index">
- <view style="color: #D31F28;" class="u-p-h-28">
- <view class="font-bold">
- <text class="u-font-36">锟�</text>
- <text class="money">{{ parseFloat(item.discount / 100) }}</text>
- </view>
- <view class="u-font-24 u-m-t-20">婊{ parseFloat(item.thresholdValue / 100) }}鍏冧娇鐢�</view>
- </view>
- <view class="butt"></view>
- <view class="u-p-30 u-flex-1 u-flex">
- <view class="u-flex-1">
- <view class="u-font-28 color-333 u-line-2">{{ item.name }}</view>
- <view class="u-font-22 color-999 u-m-t-20">
- 鏈夋晥鏈熻嚦锛歿{ $u.timeFormat(item.outTime, 'yyyy-mm-dd hh:MM') }}
+ <u-loadmore v-if="!couponList" status="loading" />
+ <u-empty v-else-if="couponList.length===0" mode="coupon" icon="/static/no_coupon.png" text="鏆傛棤浼樻儬鍒稿彲鐢�!"></u-empty>
+ <block v-else>
+ <view @click="clickCoupon(item)" class="u-m-b-24 u-flex coupon" v-for="(item, index) in couponList" :key="index">
+ <view style="color: #D31F28;" class="u-p-h-28">
+ <view class="font-bold">
+ <text class="u-font-36">锟�</text>
+ <text class="money">{{ parseFloat(item.discount / 100) }}</text>
</view>
+ <view class="u-font-24 u-m-t-20">婊{ parseFloat(item.thresholdValue / 100) }}鍏冧娇鐢�</view>
</view>
- <u-icon v-if="item.id==checkCoupon.id" name="checkmark-circle-fill" color="#D31F28" size="20">
- </u-icon>
+ <view class="butt"></view>
+ <view class="u-p-30 u-flex-1 u-flex">
+ <view class="u-flex-1">
+ <view class="u-font-28 color-333 u-line-2">{{ item.name }}</view>
+ <view class="u-font-22 color-999 u-m-t-20">
+ 鏈夋晥鏈熻嚦锛歿{ $u.timeFormat(item.outTime, 'yyyy-mm-dd hh:MM') }}
+ </view>
+ </view>
+ <u-icon v-if="item.id==checkCoupon.id" name="checkmark-circle-fill" color="#D31F28" size="20">
+ </u-icon>
+ </view>
</view>
- </view>
+ </block>
</scroll-view>
<view @click="getCoupon" class="coupon-btn">纭畾</view>
</u-popup>
+ <!-- 澶囨敞寮圭獥 -->
<u-modal showCancelButton :show="showRemark" title="澶囨敞" confirmColor="#D31F28" @close="showRemark = false" @cancel="showRemark = false" @confirm="showRemark = false">
<view style="border: 1rpx solid #eee;width: 100%">
<u--textarea v-model="buyerNote" placeholder="璇疯緭鍏ュ娉ㄥ唴瀹�" maxlength="100" none count></u--textarea>
@@ -158,7 +164,7 @@
buyerNote: '',
showRemark: false,
UNIONID: null,
- payWay: this.$utils.getPlat(), //2 缁翠俊 5鏀粯瀹�
+ payWay: this.$utils.getPlat(), //2 缁翠俊 5鏀粯瀹� 15浜戦棯浠�
cid: '', //鐮佺墝id C鎵獴闈欐�佺爜鏃舵湁
activityQrcodeId: '', //鍔ㄦ�佹敹娆剧爜 C鎵獴鍔ㄦ�佺爜鏃舵湁
shopId: '', //鍟嗘埛id C鎵獴鍔ㄦ�佺爜鏃舵湁
@@ -177,7 +183,7 @@
isNew: false, // 鏄惁鏂扮敤鎴凤紝鏂扮敤鎴锋煡璇笉鍒扮Н鍒嗗拰閾惰鍗�
canReset: false,
couponShow: false, // 浼樻儬鍒稿脊绐�
- couponList: [], // 浼樻儬鍒�
+ couponList: null, // 浼樻儬鍒�
couponInfo: {
id: '',
discount: 0,
@@ -208,7 +214,7 @@
uni.setStorageSync('SHOPID', opt.shopId)
uni.setStorageSync('SMONEY', opt.smoney)
uni.setStorageSync('AQCI', opt.activityQrcodeId)
- this.UNIONID = uni.getStorageSync('UNIONID' + this.payWay) || null
+ this.UNIONID = uni.getStorageSync('UNIONID') || null
this.isNew = uni.getStorageSync('IS_NEW')
if (opt.smoney) {
this.smoney = opt.smoney
@@ -228,16 +234,19 @@
this.cid = opt.cid
this.init()
}
- if (opt.code || opt.auth_code) {
+ if (opt.code || opt.auth_code || opt.userAuthCode) {
let params = {
code: opt.code
}
let code = opt.code
- if (this.payWay == 2&&opt.state == 1 ) {
+ if (this.payWay == 2 && opt.state == 1) { //寰俊
params.getUserInfo = 1
}
- if (this.payWay == 5) {
+ if (this.payWay == 5) { //鏀粯瀹�
params.code = opt.auth_code
+ }
+ if (this.payWay == 15) { //浜戦棯浠�
+ code = opt.userAuthCode
}
const cd = uni.getStorageSync('cd')
if (code === cd) {
@@ -285,17 +294,23 @@
getToken(res) {
this.token = res.token
if (res.openid) {
- uni.setStorageSync('OPENID' + this.payWay, res.openid)
+ uni.setStorageSync('OPENID', res.openid)
}
if (res.unionid) {
- uni.setStorageSync('UNIONID' + this.payWay, res.unionid)
+ uni.setStorageSync('UNIONID', res.unionid)
+ }
+ if (res.aLiUserId) {
+ uni.setStorageSync('ALIUSERID', res.aLiUserId)
+ }
+ if (res.cloudPayUserId) {
+ uni.setStorageSync('UNIONPAYID', res.cloudPayUserId)
}
this.UNIONID = res.unionid
uni.setStorageSync(ACCESSTOKEN, res.token)
uni.setStorageSync('IS_NEW', res.isNew)
this.isNew = res.isNew
- if (!res.isNew) {
- this.showCoupon()
+ if (!res.isNew && !uni.$u.test.isEmpty(this.money)) {
+ this.queryUseSweepPayCoupon()
}
},
/*鎺堟潈unionid*/
@@ -310,6 +325,16 @@
// 鏇存柊閲戦
changeMoney(str) {
this.money = str;
+ this.couponInfo = {
+ id: '',
+ discount: 0,
+ thresholdValue: 0
+ } // 浼樻儬鍒稿唴瀹�
+ this.checkCoupon = {
+ id: null,
+ discount: 0,
+ thresholdValue: 0
+ }
},
// 灞曠ず閿洏
showBord() {
@@ -348,10 +373,10 @@
res.logoImage = config.baseURL + res.logoImage
}
this.shopInfo = res
- }).catch(() => {
+ }).catch((err) => {
clearTimeout(timer)
this.shopInfo.scanFlag = 0
- this.tips = '褰撳墠鐢ㄦ埛杩囧锛岃绋嶅悗閲嶈瘯锝瀇锝�'
+ this.tips = err.description || '褰撳墠鐢ㄦ埛杩囧锛岃绋嶅悗閲嶈瘯锝瀇锝�'
this.loading = false
})
@@ -377,22 +402,29 @@
},
// 鑾峰彇浼氬憳鐩稿叧淇℃伅
showCoupon() {
- if(this.UNIONID){
- //鑾峰彇鐢ㄦ埛浼樻儬鍒�
- queryUseSweepPayCoupon({
- params: {
- applyPayWayStr: this.payWay,
- cusid: this.shopInfo.id,
- money: Number(this.money * 100),
- }
- }).then(res => {
- this.couponList = res
- this.couponShow = true
- })
- }else{
+ if (this.UNIONID) {
+ if (uni.$u.test.isEmpty(this.money)) {
+ uni.$u.toast('璇疯緭鍏ラ噾棰濓紒')
+ return
+ }
+ this.couponList = null
+ this.couponShow = true
+ this.queryUseSweepPayCoupon()
+ } else {
this.toRegister()
}
-
+ },
+ //鑾峰彇鐢ㄦ埛浼樻儬鍒�
+ queryUseSweepPayCoupon(){
+ queryUseSweepPayCoupon({
+ params: {
+ applyPayWayStr: this.payWay,
+ cusid: this.shopInfo.id,
+ money: Number(this.money * 100),
+ }
+ }).then(res => {
+ this.couponList = res
+ })
},
//閫夋嫨浼樻儬鍒�
clickCoupon(item) {
@@ -447,6 +479,9 @@
}
if (this.payWay == 5) {
this.aliPay(res.paymentData)
+ }
+ if (this.payWay == 15) {
+ this.aliPay(res.paymentUrl)
}
} catch (e) {
//TODO handle the exception
@@ -504,9 +539,11 @@
});
},
closeOrder() {
- closeOrder({params:{
- id: this.orderId,
- }}).then(res => {
+ closeOrder({
+ params: {
+ id: this.orderId,
+ }
+ }).then(res => {
})
}
}
@@ -712,7 +749,7 @@
.coupon-list {
box-sizing: border-box;
- height: calc(50vh - 44px);
+ height: calc(80vh - 44px);
}
--
Gitblit v1.9.1