From d8849143386d1e095cadd212644306c98509b6ca Mon Sep 17 00:00:00 2001 From: Milky0217 Date: Thu, 7 May 2026 15:37:51 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E6=94=AF=E4=BB=98=E5=AE=9D=E8=A1=A8?= =?UTF-8?q?=E5=8D=95=E4=BD=BF=E7=94=A8=E5=8E=9F=E5=A7=8B=E5=80=BC=EF=BC=8C?= =?UTF-8?q?=E6=B5=8F=E8=A7=88=E5=99=A8=E8=87=AA=E5=8A=A8=E5=A4=84=E7=90=86?= =?UTF-8?q?URL=E7=BC=96=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 修复 double-encoding 问题:表单 hidden input 不应预先 URL 编码, 浏览器提交时会自动编码,预编码会导致二次编码(如空格变 %2520) --- src/handlers/payment.rs | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/handlers/payment.rs b/src/handlers/payment.rs index d142ced..a21dd0d 100644 --- a/src/handlers/payment.rs +++ b/src/handlers/payment.rs @@ -170,18 +170,17 @@ fn build_alipay_form_html( let sign = rsa2_sign(&sign_source, &config.private_key)?; - // 生成自动提交的表单 HTML + // 生成自动提交的表单 HTML(使用原始值,浏览器会自动 URL 编码) let mut form_fields = String::new(); for (k, v) in ¶ms { form_fields.push_str(&format!( r#""#, - urlencoding(k), - urlencoding(v) + k, v )); } form_fields.push_str(&format!( r#""#, - urlencoding(&sign) + &sign )); let html = format!(