From ccf0af4ed21a7066ad169308a01a5a0ca1cb7f9e Mon Sep 17 00:00:00 2001 From: li Date: Wed, 3 Jun 2026 19:12:26 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20AlinPay=E5=85=85=E5=80=BC=E4=B8=8A?= =?UTF-8?q?=E5=88=86=E6=8C=89=E4=BB=A3=E6=94=B6=E6=89=8B=E7=BB=AD=E8=B4=B9?= =?UTF-8?q?=E7=8E=87=E6=8A=98=E7=AE=97,=E5=AE=A2=E6=88=B7=E6=89=BF?= =?UTF-8?q?=E6=8B=85=E6=89=8B=E7=BB=AD=E8=B4=B9,=E9=98=B2=E4=BB=A3?= =?UTF-8?q?=E4=BB=98=E8=B4=A6=E6=88=B7=E8=A2=AB=E6=8E=8F=E7=A9=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 根因:AlinPay代收时从平台代付账户扣手续费(回调real_amount仍是充值全额), 但系统全额上分→客户余额>账户实收→提现必差手续费那块,账户越提越空。 改为按ALIN_VN配置collection_fee_rate(%)折算上分额:充100万→上分99万(1%费率), 上分/扣代理同步折算,使客户余额=账户实收,代付永远够。back_money仍记全额供审计。 --- application/onlinechip/controller/traits/alinPay.php | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/application/onlinechip/controller/traits/alinPay.php b/application/onlinechip/controller/traits/alinPay.php index 0c92fb3..b4404fa 100644 --- a/application/onlinechip/controller/traits/alinPay.php +++ b/application/onlinechip/controller/traits/alinPay.php @@ -232,6 +232,15 @@ trait alinPay 'agent' => 1, ])->lock(true)->find(); + // 代收手续费由客户承担:AlinPay 代收时从平台代付账户扣手续费(回调 real_amount 仍是充值全额), + // 若全额上分会导致代付账户被持续掏空(充100万→账户净收99万→提现100万必差)。 + // 故按 ALIN_VN 配置的 collection_fee_rate(百分比) 折算上分额,使"客户余额=账户实收"。 + $alinCfg = json_decode(Db::name('pay_channel')->where('key', 'ALIN_VN')->value('value'), true); + $alinFeeRate = isset($alinCfg['collection_fee_rate']) ? floatval($alinCfg['collection_fee_rate']) : 0; + if ($alinFeeRate > 0) { + $order['money'] = round($order['money'] * (1 - $alinFeeRate / 100), 2); + } + if (!$zdl || $zdl['money'] < $order['money']) { Db::rollback(); addLogToFile('代收结算失败:代理余额不足 order=' . $orderNo, 'alin_callback_error', 'alin');