Browse Source

wx支付

devlop
mo-bai 4 years ago
parent
commit
26edc6ab84
4 changed files with 98 additions and 6 deletions
  1. 15
      apis/orderApi.js
  2. 7
      enums/index.js
  3. 4
      env/index.js
  4. 78
      pages/order-detail/index.vue

15
apis/orderApi.js

@ -137,3 +137,18 @@ export function getReciptCode(data) {
data
})
}
/**
* 提交微信直付单返回微信支付参数
* @param {object} data
* @property {string} data.customerOrderId
* @property {string} data.wxAppid
* @property {string} data.openid
* @property {string} data.apiType
*/
export function makeSupplierPay(data) {
return http.post({
url: '/base-paper-trading/submit/wx/straight/pay',
data
})
}

7
enums/index.js

@ -3,11 +3,14 @@ const urlEnv = env === 'production' ? '' : `-${env}`
export const XAPPID = '503258978847966404'
export const WX_APPID = 'wxbdd9c878b33e451d'
// 统一支付接口
export const PAY_URL = `https://api-client-psc${urlEnv}.qniao.cn/payment-settlement-center/pay-for-service-account`
// 当前支付页面地址
export const VIP_URL = `https://shopkeeper${urlEnv}.qniao.cn/#/pages/vip-center/index`
// 订单详情页面
export const ORDER_URL = `https://shopkeeper${urlEnv}.qniao.cn/#/pages/order-detail/index`
// 千鸟云工厂公众号appid
export const QN_APPID = 'wxa1bf402cebec98ed'
/**
@ -177,7 +180,7 @@ export const orderStatusMap = {
}
/**
* 供应商订单状态 待客户确认订单/30202,待供应商确认订单/30205,待发货/30106,已发货/30107 已发货在H5客户端显示 待收货/30107 ,待客户借款/30207,支付中/30208,待客户支付/30214,付款失败/30211,已完成/30213,待客户还款/30217,已取消/30212,还款中/30216
* 供应商订单状态 待客户确认订单/30202,待供应商确认订单/30205,待发货/30106,已发货/30107 已发货在H5客户端显示 待收货/30107 ,待客户借款/30207,支付中/30208,待客户支付/30214,微信服务商支付/30215,付款失败/30211,已完成/30213,待客户还款/30217,已取消/30212,还款中/30216
*/
export const supplierOrderStatusEnum = {
WAIT_CLIENT_CONFIRM: 30202,
@ -187,6 +190,7 @@ export const supplierOrderStatusEnum = {
WAIT_CLIENT_LOAN: 30207,
PAYING: 30208,
WAIT_CLIENT_PAY: 30214,
WX_PAY_SUPPLIER: 30215,
PAY_FAIL: 30211,
FINISHED: 30213,
WAIT_CLIENT_REPAY: 30217,
@ -204,6 +208,7 @@ export const supplierOrderStatusMap = {
[supplierOrderStatusEnum.WAIT_CLIENT_LOAN]: '待借款',
[supplierOrderStatusEnum.PAYING]: '支付中',
[supplierOrderStatusEnum.WAIT_CLIENT_PAY]: '待支付',
[supplierOrderStatusEnum.WX_PAY_SUPPLIER]: '待支付',
[supplierOrderStatusEnum.PAY_FAIL]: '付款失败',
[supplierOrderStatusEnum.FINISHED]: '已完成',
[supplierOrderStatusEnum.WAIT_CLIENT_REPAY]: '待还款',

4
env/index.js

@ -1,8 +1,8 @@
/**
* @description 唯一环境变量
*/
// const env = 'test'
const env = 'test'
// const env = 'dev'
const env = 'production'
// const env = 'production'
export default env

78
pages/order-detail/index.vue

@ -28,6 +28,8 @@
<view v-if="supplierOrder.status == supplierOrderStatusEnum.WAIT_CLIENT_PAY" class="button-item" @click="confirmWxPay(supplierOrder.mallSupplierId)">
去付款
</view>
<!-- 微信支付服务商待付款 -->
<view v-if="supplierOrder.status == supplierOrderStatusEnum.WX_PAY_SUPPLIER" class="button-item" @click="makeWxpay()">去付款</view>
<!-- 待收货展示 -->
<view v-else-if="supplierOrder.status == supplierOrderStatusEnum.WAIT_RECEIVE" class="button-item" @click="confirmReceive(supplierOrder)">
确认收货
@ -154,9 +156,19 @@
<script>
import { go2, back, uploadImage } from '@/utils/hook.js'
import { getClientOrderInfo, clientUploadVoucher, clientDeleteVoucher, clientConfirmOrder, getReciptCode } from '@/apis/orderApi.js'
import { transformFileToImg, getFeisuanUrl } from '@/apis/commonApi.js'
import { orderStatusEnum, supplierOrderStatusMap, supplierOrderStatusEnum, paymentMethodMap, paymentMethodEnum, invoiceStatusMap } from '@/enums/index.js'
import { getClientOrderInfo, clientUploadVoucher, clientDeleteVoucher, clientConfirmOrder, getReciptCode, makeSupplierPay } from '@/apis/orderApi.js'
import { transformFileToImg, getFeisuanUrl, getOpenId } from '@/apis/commonApi.js'
import {
orderStatusEnum,
supplierOrderStatusMap,
supplierOrderStatusEnum,
paymentMethodMap,
paymentMethodEnum,
invoiceStatusMap,
ORDER_URL,
QN_APPID,
WX_APPID
} from '@/enums/index.js'
const statusImg = {
[orderStatusEnum.WAIT_SUPPLIER_CONFIRM]: '待供应商确认',
[orderStatusEnum.ORDERED]: '已下单',
@ -177,6 +189,8 @@ const showVoucherStatus = [
export default {
data() {
return {
wxCode: null,
orderId: null,
orderInfo: {
deliveryAddress: {},
supplierOrder: []
@ -192,6 +206,7 @@ export default {
},
onLoad(option) {
if (option.orderId) {
this.orderId = option.orderId
this.init(option.orderId)
} else {
uni.showToast({
@ -204,6 +219,15 @@ export default {
}
})
}
let url = window.location.href
let codeIndex = url.indexOf('code=')
if (codeIndex > 0) {
let endIndex = url.indexOf('&', codeIndex)
this.wxCode = url.substring(codeIndex + 5, endIndex)
if (this.wxCode) {
this.payForOrder(this.wxCode)
}
}
},
methods: {
go2,
@ -354,6 +378,54 @@ export default {
}
})
},
//
makeWxpay() {
let url = ORDER_URL + '?orderId=' + this.orderId
let redirectUrl = encodeURIComponent(url)
window.location.href = `https://open.weixin.qq.com/connect/oauth2/authorize?appid=${QN_APPID}&redirect_uri=${redirectUrl}&response_type=code&scope=snsapi_base&state=STATE#wechat_redirect`
},
payForOrder() {
getOpenId({ authCode: this.wxCode, authMethod: 'WeChatServiceAccount' }).then((res) => {
makeSupplierPay({ customerOrderId: this.orderInfo.orderId, wxAppid: QN_APPID, apiType: 'jsapi', openid: res.openId }).then((result) => {
let info = {
appId: result.appId,
timeStamp: result.timeStamp,
nonceStr: result.nonceStr,
package: `prepay_id=${result.prepayId}`,
signType: result.signType,
paySign: result.paySign
}
console.log('info', info)
this.wxPay(info)
})
})
},
//
wxPay(info) {
WeixinJSBridge.invoke('getBrandWCPayRequest', { ...info }, function (res) {
//res.err_msgok
if (res.err_msg == 'get_brand_wcpay_request:ok') {
uni.showToast({
title: '支付成功',
icon: 'success',
duration: 1000
})
setTimeout(() => {
go2('mine', {}, true)
}, 1000)
} else {
uni.showToast({
title: '支付失败',
icon: 'error',
duration: 2000
})
setTimeout(() => {
go2('mine', {}, true)
}, 1000)
}
})
},
clip(content) {
uni.setClipboardData({
data: content,

Loading…
Cancel
Save