From 1ab98d2c3ecbb5972d68b5e20ebeceee6def6a0c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=90=B4=E6=98=8A=E5=A4=A9?= <442384644@qq.com> Date: Fri, 9 Oct 2026 09:20:36 +0800 Subject: [PATCH] =?UTF-8?q?fix(=E4=BC=9A=E5=91=98):=20=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E4=BD=99=E9=A2=9D=E8=B4=AD=E4=B9=B0=E4=BB=98=E8=B4=B9=E4=BC=9A?= =?UTF-8?q?=E5=91=98=20bcmul=20=E5=8F=82=E6=95=B0=E7=B1=BB=E5=9E=8B?= =?UTF-8?q?=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit PHP 8 bcmath 函数要求字符串参数,会员支付链路 8 处传入 int 导致 TypeError:abs() 返回 int、86400/time() 为 int 字面量与返回值。 统一 (string) 强转,覆盖订单创建(checkPayMemberType)、支付成功 (setMemberOverdueTime)、到期时间接口(getOverdueTime)、卡密激活 (drawMemberCard)四条路径;postMore 的 type/price 默认值同步改为 字符串,防止漏传时命中同一严格类型声明。 --- .../api/controller/v1/user/MemberCardController.php | 10 +++++----- backend/app/services/user/MemberOrderServices.php | 4 ++-- backend/app/services/user/UserServices.php | 4 ++-- .../app/services/user/member/MemberCardServices.php | 4 ++-- 4 files changed, 11 insertions(+), 11 deletions(-) diff --git a/backend/app/api/controller/v1/user/MemberCardController.php b/backend/app/api/controller/v1/user/MemberCardController.php index 581ea5f74..30a2e93e7 100644 --- a/backend/app/api/controller/v1/user/MemberCardController.php +++ b/backend/app/api/controller/v1/user/MemberCardController.php @@ -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); diff --git a/backend/app/services/user/MemberOrderServices.php b/backend/app/services/user/MemberOrderServices.php index f2392fa40..d0f3061c9 100644 --- a/backend/app/services/user/MemberOrderServices.php +++ b/backend/app/services/user/MemberOrderServices.php @@ -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; diff --git a/backend/app/services/user/UserServices.php b/backend/app/services/user/UserServices.php index d62639095..1687040c9 100644 --- a/backend/app/services/user/UserServices.php +++ b/backend/app/services/user/UserServices.php @@ -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; } diff --git a/backend/app/services/user/member/MemberCardServices.php b/backend/app/services/user/member/MemberCardServices.php index 2abd2cf32..17af4e4e5 100644 --- a/backend/app/services/user/member/MemberCardServices.php +++ b/backend/app/services/user/member/MemberCardServices.php @@ -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'];