From c63709bd4f6fcaf646303e9f4f702ea94141216a Mon Sep 17 00:00:00 2001 From: liruiqiang <3151805288@qq.com> Date: Wed, 10 Sep 2025 11:58:04 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AE=A2=E5=8D=95=E8=AF=A6=E6=83=85=E6=94=AF?= =?UTF-8?q?=E4=BB=98=E4=B8=8E=E6=A8=A1=E6=8B=9F=E5=8F=91=E8=B4=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pagesOrder/detail/detail.vue | 40 ++++++++++++++-- src/pagesOrder/payment/payment.vue | 95 ++++++++++++++++++++++++++++++++++++++ src/services/order.ts | 12 +++++ src/services/pay.ts | 25 ++++++++++ 4 files changed, 169 insertions(+), 3 deletions(-) create mode 100644 src/pagesOrder/payment/payment.vue create mode 100644 src/services/pay.ts diff --git a/src/pagesOrder/detail/detail.vue b/src/pagesOrder/detail/detail.vue index 8c8af09..12a14f8 100644 --- a/src/pagesOrder/detail/detail.vue +++ b/src/pagesOrder/detail/detail.vue @@ -53,7 +53,13 @@ 再次购买 - 模拟发货 + + 模拟发货 + @@ -141,7 +147,7 @@ @@ -192,7 +198,8 @@ import { onLoad, onReady } from '@dcloudio/uni-app' import { useGuessList } from '@/composables' import { ref } from 'vue' import { OrderState, orderStateList } from '@/services/constants' -import { getMemberOrderByIdAPI } from '@/services/order' +import { getMemberOrderByIdAPI, getMemberOrderConsignmentByIdAPI } from '@/services/order' +import { getPayMockAPI, getPayWxPayMiniPayAPI } from '@/services/pay' // 获取屏幕边界到安全区域距离 const { safeAreaInsets } = uni.getSystemInfoSync() @@ -273,6 +280,33 @@ const onTimeup = () => { // 修改订单状态为已取消 order.value!.orderState = OrderState.YiQuXiao } + +// 订单支付 +const onOrderPay = async () => { + // 通过环境变量区分开发环境 + if (import.meta.env.DEV) { + // 开发环境:模拟支付,修改订单状态为已支付 + await getPayMockAPI({ orderId: query.id }) + } else { + // 生产环境:获取支付参数 + 发起微信支付 + const res = await getPayWxPayMiniPayAPI({ orderId: query.id }) + await wx.requestPayment(res.result) + } + // 关闭当前页,再跳转支付结果页 + uni.redirectTo({ url: `/pagesOrder/payment/payment?id=${query.id}` }) +} + +// 是否为开发环境 +const isDev = import.meta.env.DEV +// 模拟发货 +const onOrderSend = async () => { + if (isDev) { + await getMemberOrderConsignmentByIdAPI(query.id) + uni.showToast({ icon: 'success', title: '模拟发货完成' }) + // 主动更新订单状态 + order.value!.orderState = OrderState.DaiShouHuo + } +} diff --git a/src/services/order.ts b/src/services/order.ts index 9185a29..6324266 100644 --- a/src/services/order.ts +++ b/src/services/order.ts @@ -59,3 +59,15 @@ export const getMemberOrderRepurchaseByIdAPI = (id: string) => { url: `/member/order/repurchase/${id}`, }) } + +/** + * 模拟发货-内测版 + * @description 在DEV环境下使用,仅在订单状态为待发货时,可模拟发货,调用后订单状态修改为待收货,包含模拟物流。 + * @param id 订单id + */ +export const getMemberOrderConsignmentByIdAPI = (id: string) => { + return http({ + method: 'GET', + url: `/member/order/consignment/${id}`, + }) +} diff --git a/src/services/pay.ts b/src/services/pay.ts new file mode 100644 index 0000000..11ccc55 --- /dev/null +++ b/src/services/pay.ts @@ -0,0 +1,25 @@ +import { http } from '@/utils/http' + +/** + * 获取微信支付参数 + * @param data orderId 订单id + */ +export const getPayWxPayMiniPayAPI = (data: { orderId: string }) => { + return http({ + method: 'GET', + url: '/pay/wxPay/miniPay', + data, + }) +} + +/** + * 模拟支付-内测版 + * @param data orderId 订单id + */ +export const getPayMockAPI = (data: { orderId: string }) => { + return http({ + method: 'GET', + url: '/pay/mock', + data, + }) +}