• 支付宝支付sign_type从RSA到RSA2遇到的问题


    1. 公钥私钥:
      1. 使用RSA签名验签工具windows_V1.4生成公钥私钥(秘钥长度2048为RSA2)
      2. 秘钥自己保存使用,登录支付宝开放平台,将公钥保存到app_id对应的应用公钥那里,保存完成,会生成对应的支付宝公钥,此公钥用来之后代码使用。
    2. 支付以及回调流程:
      1. 预下单等接口的sign_type参数,统一为RSA2,并且,生成签名方法需要更换如下:

         String sign = AlipaySignature.rsa256Sign(AlipaySignature.getSignContent(map), this.privateKey, "utf-8");
        
      2. 初始化支付宝客户端时,需要使用带有sing_type的构造参数,并且传递参数为RSA2:

         //初始化支付宝支付客户端
         this.alipayClient = new DefaultAlipayClient(
         	 ConstanHolder.get("pay.alipay.url")
         	,ConstanHolder.get("pay.alipay.app_id")
         	,privateKey
         	,"json"
         	,"UTF-8"
         	,publicKey
         	,ConstanHolder.get("pay.alipay.sign_type")
         );	
        
      3. 验签时,需要使用验证RSA2的方法(看了支付宝的实现方式,也可以采用rsaCheckV1(Map<String, String> params, String publicKey,String charset,String signType)这个方法来验签,必须传递signType为RSA2)

         Map<String,String> paramMap = req.getParamMap();
         String sign = paramMap.get("sign");
         String content = AlipaySignature.getSignCheckContentV1(paramMap);
         boolean flag = AlipaySignature.rsa256CheckContent(content,sign, publicKey, "UTF-8");
  • 相关阅读:
    tornado web 框架的认识
    JavaScript 作用域知识点梳理
    服务器
    git——学习
    webservice——和API接口
    celery——任务调度模块
    supervisor——进程管理工具
    Python常用的语句
    数据类型比较总结
    字符集和字符编码问题
  • 原文地址:https://www.cnblogs.com/cuiyf/p/9341357.html
Copyright © 2020-2023  润新知