From 5071816ea03b3529bc9075721f1a523d5e8a8d4c Mon Sep 17 00:00:00 2001 From: YunaiV Date: Sun, 11 May 2025 12:39:23 +0800 Subject: [PATCH] =?UTF-8?q?feat=EF=BC=9A=E3=80=90MALL=20=E5=95=86=E5=9F=8E?= =?UTF-8?q?=E3=80=91=E5=95=86=E5=9F=8E=E5=88=86=E4=BD=A3=E6=8F=90=E7=8E=B0?= =?UTF-8?q?=EF=BC=8C=E5=AE=8C=E6=88=90=E5=AF=B9=E5=BE=AE=E4=BF=A1=E8=BD=AC?= =?UTF-8?q?=E8=B4=A6=EF=BC=88=E5=B0=8F=E7=A8=8B=E5=BA=8F=EF=BC=89=E7=9A=84?= =?UTF-8?q?=E5=AF=B9=E6=8E=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pages/commission/wallet.vue | 34 ++++++++++++++++++++++++++++++++-- pages/commission/withdraw.vue | 6 +++++- sheep/api/pay/transfer.js | 14 ++++++++++++++ sheep/platform/pay.js | 17 +++++++++++++++++ 4 files changed, 68 insertions(+), 3 deletions(-) create mode 100644 sheep/api/pay/transfer.js diff --git a/pages/commission/wallet.vue b/pages/commission/wallet.vue index c14e46a3..73024dbc 100644 --- a/pages/commission/wallet.vue +++ b/pages/commission/wallet.vue @@ -194,6 +194,7 @@ import BrokerageApi from '@/sheep/api/trade/brokerage'; import { fen2yuan } from '@/sheep/hooks/useGoods'; import { resetPagination } from '@/sheep/helper/utils'; + import PayTransferApi from '@/sheep/api/pay/transfer'; const headerBg = sheep.$url.css('/static/img/shop/user/wallet_card_bg.png'); @@ -322,12 +323,41 @@ if (code !== 0) { return; } + if (data.status === 11) { + sheep.$helper.toast('该提现单已确认收款'); + item.status = 11; + return; + } + if (!data.transferChannelMchId || !data.transferChannelPackageInfo) { + sheep.$helper.toast('提现信息异常,请稍后再试'); + return; + } // 调用微信确认收款 + const payTransferId = data.payTransferId; await requestMerchantTransfer( data.transferChannelMchId, data.transferChannelPackageInfo, - (res) => { - debugger; + async (res) => { + if (res.result !== 'success') { + sheep.$helper.toast(res.errMsg); + return; + } + // 同步转账单状态 + try { + const syncTransferResult = await PayTransferApi.syncTransfer(payTransferId); + console.log('syncTransferResult 结果', syncTransferResult); + } catch (e) { + console.error('syncTransferResult 异常', e); + } + // 查询提现单最新状态 + const { data } = await BrokerageApi.getBrokerageWithdraw(item.id); + if (data && data.status !== 11) { + sheep.$helper.toast('确认收款成功,但数据存在延迟,请以实际【微信支付】到账为准'); + return; + } + sheep.$helper.toast('确认收款成功'); + // 更新到列表中 + item.status = 11; }, ); } diff --git a/pages/commission/withdraw.vue b/pages/commission/withdraw.vue index 2359012c..0f722b07 100644 --- a/pages/commission/withdraw.vue +++ b/pages/commission/withdraw.vue @@ -172,7 +172,7 @@ import BrokerageApi from '@/sheep/api/trade/brokerage'; import DictApi from '@/sheep/api/system/dict'; import SLayout from '@/sheep/components/s-layout/s-layout.vue'; - import { goBindWeixin } from '@/sheep/platform/pay'; + import { getWeixinPayChannelCode, goBindWeixin } from '@/sheep/platform/pay'; const headerBg = sheep.$url.css('/static/img/shop/user/withdraw_bg.png'); const statusBarHeight = sheep.$platform.device.statusBarHeight * 2; @@ -236,6 +236,10 @@ }; if (state.accountInfo.type === '5') { data.userAccount = openid; + data.transferChannelCode = getWeixinPayChannelCode(); + } else { + delete data.userAccount; + delete data.transferChannelCode; } let { code } = await BrokerageApi.createBrokerageWithdraw(data); if (code !== 0) { diff --git a/sheep/api/pay/transfer.js b/sheep/api/pay/transfer.js new file mode 100644 index 00000000..5e233055 --- /dev/null +++ b/sheep/api/pay/transfer.js @@ -0,0 +1,14 @@ +import request from '@/sheep/request'; + +const PayTransferApi = { + // 同步转账单 + syncTransfer: (id) => { + return request({ + url: '/pay/transfer/sync', + method: 'GET', + params: { id }, + }); + }, +}; + +export default PayTransferApi; diff --git a/sheep/platform/pay.js b/sheep/platform/pay.js index 35d20508..f0b5cc0c 100644 --- a/sheep/platform/pay.js +++ b/sheep/platform/pay.js @@ -387,3 +387,20 @@ export function goBindWeixin() { }, }); } + +// 获取微信支付渠道码 +export function getWeixinPayChannelCode() { + const platform = sheep.$platform.name; + switch (platform) { + case 'WechatOfficialAccount': + return 'wx_pub'; + case 'WechatMiniProgram': + return 'wx_lite'; + case 'App': + return 'wx_app'; + case 'H5': + return 'wx_wap'; + default: + return ''; + } +}