浏览代码

支付宝2018年回调验证签名失败的问题描述

小柒2012 6 年之前
父节点
当前提交
ef051beaaa

+ 4 - 1
src/main/java/com/itstyle/modules/alipay/controller/AliPayController.java

@@ -25,6 +25,7 @@ import com.alipay.demo.trade.config.Configs;
 import com.itstyle.common.constants.Constants;
 import com.itstyle.common.model.Product;
 import com.itstyle.modules.alipay.service.IAliPayService;
+import com.itstyle.modules.alipay.util.AliPayConfig;
 /**
  * 支付宝支付
  * 创建者 科帮网
@@ -104,9 +105,11 @@ public class AliPayController {
 		//验证签名 校验签名
 		boolean signVerified = false;
 		try {
-			signVerified = AlipaySignature.rsaCheckV1(params, Configs.getAlipayPublicKey(), "UTF-8");
+			signVerified = AlipaySignature.rsaCheckV1(params, Configs.getAlipayPublicKey(), AliPayConfig.CHARSET, AliPayConfig.SIGN_TYPE);
 			//各位同学这里可能需要注意一下,2018/01/26 以后新建应用只支持RSA2签名方式,目前已使用RSA签名方式的应用仍然可以正常调用接口,注意下自己生成密钥的签名算法
 			//signVerified = AlipaySignature.rsaCheckV1(params, Configs.getAlipayPublicKey(), "UTF-8","RSA2");
+			//有些同学通过 可能使用了这个API导致验签失败,特此说明一下
+			//signVerified = AlipaySignature.rsaCheckV2(params, Configs.getAlipayPublicKey(), "UTF-8");//正式环境
 		} catch (AlipayApiException e) {
 			e.printStackTrace();
 			message =  "failed";

+ 5 - 1
src/main/java/com/itstyle/modules/alipay/util/AliPayConfig.java

@@ -15,6 +15,10 @@ public final class AliPayConfig {
      * 私有的默认构造子,保证外界无法直接实例化
      */
     private AliPayConfig(){};
+    /**
+     * 签名方式
+     */
+ 	public static String SIGN_TYPE = "RSA2";
 	 /**
      * 参数类型
      */
@@ -22,7 +26,7 @@ public final class AliPayConfig {
     /**
      * 编码
      */
-    public static String CHARSET = "UTF-8";
+    public static String CHARSET = "utf-8";
     /**
      * 类级的内部类,也就是静态的成员式内部类,该内部类的实例与外部类的实例
      * 没有绑定关系,而且只有被调用到才会装载,从而实现了延迟加载