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');