From c4df5ae710ac12af7f45f847892a801c79a93fd3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=8F=AF=E4=B9=90=E5=8A=A0=E5=86=B0?= <11869599+addie66@user.noreply.gitee.com> Date: Mon, 5 Oct 2026 10:39:14 +0800 Subject: [PATCH] =?UTF-8?q?```=20feat(shopro=5Fhuifu):=20=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0=E5=88=86=E8=B4=A6=E7=A1=AE=E8=AE=A4=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=E7=9A=84=E7=A1=AE=E8=AE=A4=E5=9F=BA=E7=A1=80=E9=87=91=E9=A2=9D?= =?UTF-8?q?=E5=8F=82=E6=95=B0=E6=94=AF=E6=8C=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 新增可选的确认基础金额参数,用于控制分账确认时的总金额计算, 同时添加了相应的日志记录功能,便于调试和监控分账流程。 ``` --- addons/shopro_huifu/library/HuifuSplitService.php | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/addons/shopro_huifu/library/HuifuSplitService.php b/addons/shopro_huifu/library/HuifuSplitService.php index e201f5a..648de9c 100644 --- a/addons/shopro_huifu/library/HuifuSplitService.php +++ b/addons/shopro_huifu/library/HuifuSplitService.php @@ -97,7 +97,7 @@ class HuifuSplitService ]); } - $confirmResult = $this->confirm($ext, $acctInfos, $outOrderNo); + $confirmResult = $this->confirm($ext, $acctInfos, $outOrderNo, $confirmBase); $splitOrder->status = 2; $splitOrder->confirm_hf_seq_id = $confirmResult['hf_seq_id'] ?? ($confirmResult['confirm_hf_seq_id'] ?? ''); $splitOrder->hf_req_seq_id = $outOrderNo; @@ -136,7 +136,7 @@ class HuifuSplitService return $this->executeByOrderId($orderId); } - protected function confirm($ext, array $acctInfos, $confirmReqSeqId) + protected function confirm($ext, array $acctInfos, $confirmReqSeqId, $confirmBase = null) { SdkLoader::requireRequest('V2TradePaymentDelaytransConfirmRequest.php'); $request = new \BsPaySdk\request\V2TradePaymentDelaytransConfirmRequest(); @@ -144,7 +144,16 @@ class HuifuSplitService $request->setReqSeqId($confirmReqSeqId); $request->setHuifuId($this->config->get('huifu_id')); - $acctSplitBunch = json_encode(['acct_infos' => $acctInfos], JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES); + $confirmBase = $confirmBase !== null + ? number_format((float) $confirmBase, 2, '.', '') + : null; + $bunch = ['acct_infos' => $acctInfos]; + if ($confirmBase !== null && bccomp($confirmBase, '0.00', 2) > 0) { + // 本次交易确认总额(待确认全额);acct_infos 为向外分出的部分,其余留主商户 + $bunch['total_div_amt'] = $confirmBase; + } + $acctSplitBunch = json_encode($bunch, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES); + \think\Log::info('[shopro_huifu] delaytrans confirm acct_split_bunch=' . $acctSplitBunch); $request->setExtendInfo([ 'org_req_date' => $ext['req_date'], 'org_req_seq_id' => $ext['req_seq_id'],