Browse Source

对接H5支付

master
梁欣 1 year ago
parent
commit
53d2c82764
  1. 2
      core/payment/alipay.js
  2. 105
      pages/checkout/cashier/index.vue
  3. 12
      pages/goods/list.vue
  4. 4
      pages/index/index.vue
  5. 5
      pages/order/index.vue

2
core/payment/alipay.js

@ -6,7 +6,7 @@ import { PayMethodEnum } from '@/common/enum/payment'
* 发起支付请求 (用于H5)
* @param {Object} option 参数
*/
const paymentAsH5 = option => {
export const paymentAsH5 = option => {
const options = { formHtml: '', ...option }
// 跳转到支付宝支付页
return new Promise((resolve, reject) => {

105
pages/checkout/cashier/index.vue

@ -5,7 +5,7 @@
<!-- 支付剩余时间 -->
<view class="order-countdown">
<text class="m-r-6">剩余时间</text>
<count-down :date="order.expirationTime" separator="zh" theme="text" />
<count-down :date="order.expirationTime" separator="zh" theme="text"/>
</view>
<!-- 付款金额 -->
<view class="order-amount">
@ -44,11 +44,15 @@
<!-- 支付确认弹窗 -->
<!-- #ifdef H5 -->
<u-modal v-if="tempUnifyData" v-model="showConfirmModal" title="支付确认" show-cancel-button confirm-text="已完成支付"
<u-modal v-if="tempUnifyData" v-model="showConfirmModal" title="支付确认" show-cancel-button
confirm-text="已完成支付"
:confirm-color="appTheme.mainBg" negative-top="100" :asyncClose="true"
@confirm="onTradeQuery(tempUnifyData.outTradeNo, tempUnifyData.method)">
<view class="modal-content">
<text>请在{{ PayMethodClientNameEnum[tempUnifyData.method] }}内完成支付如果您已经支付成功请点击已完成支付按钮</text>
<text>请在{{
PayMethodClientNameEnum[tempUnifyData.method]
}}内完成支付如果您已经支付成功请点击已完成支付按钮
</text>
</view>
</u-modal>
<!-- #endif -->
@ -56,39 +60,40 @@
</template>
<script>
import wx from "weixin-js-sdk";
import storage from '@/utils/storage'
import {
import wx from "weixin-js-sdk";
import storage from '@/utils/storage'
import {
inArray,
urlEncode
} from '@/utils/util'
import {
} from '@/utils/util'
import {
Alipay,
Wechat
} from '@/core/payment'
import CountDown from '@/components/countdown'
import {
} from '@/core/payment'
import CountDown from '@/components/countdown'
import {
PayMethodEnum
} from '@/common/enum/payment'
import {
} from '@/common/enum/payment'
import {
PayStatusEnum
} from '@/common/enum/order'
import * as CashierApi from '@/api/cashier'
} from '@/common/enum/order'
import * as CashierApi from '@/api/cashier'
import {paymentAsH5} from "../../../core/payment/alipay";
//
const PayMethodIconEnum = {
//
const PayMethodIconEnum = {
[PayMethodEnum.WECHAT.value]: 'icon-wechat-pay',
[PayMethodEnum.ALIPAY.value]: 'icon-alipay',
[PayMethodEnum.BALANCE.value]: 'icon-balance-pay'
}
}
//
const PayMethodClientNameEnum = {
//
const PayMethodClientNameEnum = {
[PayMethodEnum.WECHAT.value]: '微信',
[PayMethodEnum.ALIPAY.value]: '支付宝'
}
}
export default {
export default {
components: {
CountDown
},
@ -228,7 +233,8 @@
CashierApi.orderPay(app.orderId, {
method: app.curPaymentItem.method,
client: app.platform,
extra: app.getExtraAsUnify(app.curPaymentItem.method)
extra: app.getExtraAsUnify(app.curPaymentItem.method),
token: uni.getStorageSync('t_token')
})
.then(result => app.onSubmitCallback(result))
.finally(err => {
@ -259,7 +265,10 @@
//
if (method === PayMethodEnum.ALIPAY.value) {
console.log('paymentData', JSON.stringify(paymentData))
Alipay.payment(paymentData)
// Alipay.payment(paymentData)
// .then(res => app.onPaySuccess(res))
// .catch(err => app.onPayFail(err))
Alipay.paymentAsH5({formHtml: result.data.data})
.then(res => app.onPaySuccess(res))
.catch(err => app.onPayFail(err))
}
@ -267,16 +276,15 @@
if (method === PayMethodEnum.WECHAT.value) {
console.log('paymentData', paymentData)
wx.miniProgram.getEnv((res) => {
console.log('money',paymentData.pay_price)
console.log('order_no',paymentData.pay_price)
console.log('money', paymentData.pay_price)
console.log('order_no', paymentData.pay_price)
if (res.miniprogram) {
// /pages/dx-scan-code/scan-code,
wx.miniProgram.navigateTo({
url: '/sub_pages/hdpay/hdpay?money='+paymentData.pay_price+'&orderNo='+paymentData.order_no
url: '/sub_pages/hdpay/hdpay?money=' + paymentData.pay_price + '&orderNo=' + paymentData.order_no
})
} else {
console.log(res, 'res')
app.$toast('非微信环境逻辑')
@ -303,7 +311,7 @@
"signType": "RSA", //
"paySign": paymentData.paySign //
},
function(res) {
function (res) {
app.$toast('订单支付成功')
app.onSuccessNav()
});
@ -311,11 +319,6 @@
}, 500)
// Wechat.payment({ orderKey: app.orderId, ...paymentData })
// .then(res => app.onPaySuccess(res))
// .catch(err => app.onPayFail(err))
@ -398,21 +401,21 @@
},
}
}
}
</script>
<style>
page {
page {
background: #F4F4F4;
}
}
</style>
<style lang="scss" scoped>
.container {
.container {
background-color: #F4F4F4;
}
}
//
.order-info {
//
.order-info {
padding: 80rpx 0;
text-align: center;
@ -441,10 +444,10 @@
font-size: 56rpx;
}
}
}
}
//
.payment-method {
//
.payment-method {
width: 94%;
margin: 0 auto 20rpx auto;
padding: 0 40rpx;
@ -491,11 +494,11 @@
}
}
}
}
//
.modal-content {
//
.modal-content {
padding: 40rpx 48rpx;
font-size: 30rpx;
line-height: 50rpx;
@ -503,11 +506,11 @@
color: #606266;
// height: 620rpx;
box-sizing: border-box;
}
}
//
.footer-fixed {
//
.footer-fixed {
position: fixed;
bottom: var(--window-bottom);
left: 0;
@ -547,5 +550,5 @@
}
}
}
}
</style>

12
pages/goods/list.vue

@ -16,6 +16,9 @@
<view class="sort-item" :class="{ active: sortType === 'all' }" @click="handleSortType('all')">
<text>综合</text>
</view>
<view class="sort-item" :class="{ active: sortType === 'category' }" @click="changeCategory">
<text>{{ categoryText }}</text>
</view>
<view class="sort-item" :class="{ active: sortType === 'sales' }" @click="handleSortType('sales')">
<text>销量</text>
</view>
@ -180,7 +183,10 @@
},
// 4
noMoreSize: 4,
}
},
mainCategoryId: 0, // id
categoryText: '全部分类',
childCategoryList: []
}
},
@ -286,6 +292,10 @@
app.mescroll.resetUpScroll()
},
changeCategory(category){
},
//
handleShowView() {
const app = this

4
pages/index/index.vue

@ -399,8 +399,8 @@
console.log('logut')
})
uni.getStorageSync('t_id', options.id)
uni.getStorageSync('t_token', options.token)
uni.setStorageSync('t_id', options.id)
uni.setStorageSync('t_token', options.token)
_this.getUserInfo(options.id, options.token)
}

5
pages/order/index.vue

@ -401,7 +401,10 @@
content: '确认要取消该订单吗?',
success(o) {
if (o.confirm) {
OrderApi.cancel(orderId)
OrderApi.cancel(orderId, {
token: uni.getStorageSync('t_token'),
userId: uni.getStorageSync('t_id'),
})
.then(result => {
//
app.$toast(result.message)

Loading…
Cancel
Save