fix(会员): 修复余额购买付费会员 bcmul 参数类型错误

PHP 8 bcmath 函数要求字符串参数,会员支付链路 8 处传入 int 导致
TypeError:abs() 返回 int、86400/time() 为 int 字面量与返回值。
统一 (string) 强转,覆盖订单创建(checkPayMemberType)、支付成功
(setMemberOverdueTime)、到期时间接口(getOverdueTime)、卡密激活
(drawMemberCard)四条路径;postMore 的 type/price 默认值同步改为
字符串,防止漏传时命中同一严格类型声明。
This commit is contained in:
吴昊天 2026-10-09 09:20:36 +08:00
parent 91ef48d450
commit 1ab98d2c3e
4 changed files with 11 additions and 11 deletions

View File

@ -136,9 +136,9 @@ class MemberCardController
$is_ever_level = 1;
} else {
if ($user_info['is_money_level'] == 0) {
$overdue_time = bcadd(bcmul($vip_day, 86400, 0), time(), 0);
$overdue_time = bcadd(bcmul((string)$vip_day, '86400', 0), (string)time(), 0);
} else {
$overdue_time = bcadd(bcmul($vip_day, 86400, 0), $user_info['overdue_time'], 0);
$overdue_time = bcadd(bcmul((string)$vip_day, '86400', 0), (string)$user_info['overdue_time'], 0);
}
$is_ever_level = 0;
}
@ -166,11 +166,11 @@ class MemberCardController
$userServices = app()->make(UserServices::class);
[$payType, $type, $from, $memberType, $price, $money, $quitUrl, $mcId] = $request->postMore([
['pay_type', 'yue'],
['type', 1],
['type', '1'],
['from', 'weixin'],
['member_type', ''],
['price', 0.00],
['money', 0.00],
['price', '0.00'],
['money', '0.00'],
['quitUrl', ''],
['mc_id', 0]
], true);

View File

@ -403,7 +403,7 @@ class MemberOrderServices extends BaseService
$memberPrice = 0.00;
$isFree = 1;
$isPermanent = 0;
$overdueTime = bcadd(bcmul(abs($newMemberRight[$mcId]['vip_day']), "86400", 0), time(), 0);
$overdueTime = bcadd(bcmul((string)abs($newMemberRight[$mcId]['vip_day']), '86400', 0), (string)time(), 0);
break;
case "month":
case "year":
@ -412,7 +412,7 @@ class MemberOrderServices extends BaseService
$memberPrice = $price;
$isFree = 0;
$isPermanent = 0;
$overdueTime = bcadd(bcmul(abs($newMemberRight[$mcId]['vip_day']), '86400', 0), time(), 0);
$overdueTime = bcadd(bcmul((string)abs($newMemberRight[$mcId]['vip_day']), '86400', 0), (string)time(), 0);
break;
case "ever":
$memberPrice = $price;

View File

@ -2034,9 +2034,9 @@ class UserServices extends BaseService
$is_ever_level = 1;
} else {
if ($user_info['is_money_level'] == 0) {
$overdue_time = bcadd(bcmul($vip_day, 86400, 0), time(), 0);
$overdue_time = bcadd(bcmul((string)$vip_day, '86400', 0), (string)time(), 0);
} else {
$overdue_time = bcadd(bcmul($vip_day, 86400, 0), $user_info['overdue_time'], 0);
$overdue_time = bcadd(bcmul((string)$vip_day, '86400', 0), (string)$user_info['overdue_time'], 0);
}
$is_ever_level = 0;
}

View File

@ -190,11 +190,11 @@ class MemberCardServices extends BaseService
case 1:
case 2:
case 3:
$overdue_time = bcadd(bcmul($batch_info->use_day, 86400, 0), $user_info->overdue_time, 0);
$overdue_time = bcadd(bcmul((string)$batch_info->use_day, '86400', 0), (string)$user_info->overdue_time, 0);
$overdue_time = mktime(date('H'), date('i'), date('s'), date('m', $overdue_time), date('d', $overdue_time), date('Y', $overdue_time));
break;
case 0:
$overdue_time = bcadd(bcmul($batch_info->use_day, 86400, 0), time(), 0);
$overdue_time = bcadd(bcmul((string)$batch_info->use_day, '86400', 0), (string)time(), 0);
break;
}
$channel_type = $data['from'];