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'],