From adda69de16e3317f84a16754f842014309d4d96d Mon Sep 17 00:00:00 2001 From: Billy <641833868@qq.com> Date: Mon, 27 Oct 2025 15:26:09 +0800 Subject: [PATCH] 1 --- addons/shopro/library/ccblife/CcbPaymentService.php | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/addons/shopro/library/ccblife/CcbPaymentService.php b/addons/shopro/library/ccblife/CcbPaymentService.php index 4fe48e3..49e0af5 100644 --- a/addons/shopro/library/ccblife/CcbPaymentService.php +++ b/addons/shopro/library/ccblife/CcbPaymentService.php @@ -477,7 +477,15 @@ class CcbPaymentService // 使用服务方公钥加密这30位十六进制字符串 // CcbRSA::encrypt 会自动进行base64编码 - return CcbRSA::encrypt($last30Chars, $servicePublicKey); + $encpub = CcbRSA::encrypt($last30Chars, $servicePublicKey); + + // ⚠️ 关键修复:转换为URL-safe BASE64格式 + // 根据文档和示例:"若密文中带有"+"、"/"符号,说明少了BASE64这一步骤" + // 实际上需要将标准BASE64的 + 和 / 替换为 - 和 _ + // 这样在URL传输时不会被误解析,也符合建行的格式要求 + $encpub = str_replace(['+', '/'], ['-', '_'], $encpub); + + return $encpub; } catch (\Exception $e) { Log::error('[建行支付] ENCPUB生成失败: ' . $e->getMessage());