From 286214d9c30c1271d99786eae77267a530abe9aa Mon Sep 17 00:00:00 2001 From: Chopper Date: Mon, 24 Jan 2022 16:50:42 +0800 Subject: [PATCH] =?UTF-8?q?=E5=BE=AE=E4=BF=A1APP=E6=94=AF=E4=BB=98?= =?UTF-8?q?=E6=8F=90=E7=A4=BA=E7=AD=BE=E5=90=8D=E9=97=AE=E9=A2=98=E7=9A=84?= =?UTF-8?q?=E6=83=85=E5=86=B5=EF=BC=8C=E6=8F=90=E4=BE=9B=E4=B8=80=E4=B8=AA?= =?UTF-8?q?=E8=A7=A3=E5=86=B3=E6=96=B9=E6=A1=88=EF=BC=8C=E9=AA=8C=E8=AF=81?= =?UTF-8?q?=E6=97=A0=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../payment/kit/core/kit/WxPayKit.java | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/framework/src/main/java/cn/lili/modules/payment/kit/core/kit/WxPayKit.java b/framework/src/main/java/cn/lili/modules/payment/kit/core/kit/WxPayKit.java index 45181ecf..3e3f3c62 100644 --- a/framework/src/main/java/cn/lili/modules/payment/kit/core/kit/WxPayKit.java +++ b/framework/src/main/java/cn/lili/modules/payment/kit/core/kit/WxPayKit.java @@ -5,6 +5,8 @@ import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.json.JSONObject; import cn.hutool.json.JSONUtil; +import cn.lili.common.enums.ResultCode; +import cn.lili.common.exception.ServiceException; import cn.lili.modules.payment.kit.core.PaymentHttpResponse; import cn.lili.modules.payment.kit.core.enums.RequestMethodEnums; import cn.lili.modules.payment.kit.core.enums.SignType; @@ -114,6 +116,30 @@ public class WxPayKit { } } + /** + * APP 单独生成签名 + * app 支付环境中,如果遇到签名错误,百思不得其解,则可以使用这个方法调用签名尝试解决 + * + * @param params 需要签名的参数 + * @return 签名后的数据 + */ + public static String createAppSign(Map params, String privateKey) { + + String appid = params.get("appid"); + String timestamp = params.get("timestamp"); + String noncestr = params.get("noncestr"); + String prepayid = params.get("prepayid"); + + String encrypt = appid + "\n" + timestamp + "\n" + noncestr + "\n" + prepayid + "\n"; + + try { + return PayKit.createSign(encrypt, privateKey); + } catch (Exception e) { + throw new ServiceException(ResultCode.ERROR); + } + } + + /** * 生成签名 * @@ -351,6 +377,8 @@ public class WxPayKit { signType = SignType.MD5; } String packageSign = createSign(packageParams, partnerKey, signType); + // 部分微信APP支付 提示签名错误 解开下方注释 替换上边的代码就好。 + // String packageSign = createAppSign(packageParams, partnerKey); packageParams.put("sign", packageSign); return packageParams; }