- 公鑰私鑰:
- 使用RSA簽名驗簽工具windows_V1.4生成公鑰私鑰(秘鑰長度2048為RSA2)
- 秘鑰自己保存使用,登錄支付寶開放平台,將公鑰保存到app_id對應的應用公鑰那里,保存完成,會生成對應的支付寶公鑰,此公鑰用來之后代碼使用。
- 支付以及回調流程:
-
預下單等接口的sign_type參數,統一為RSA2,並且,生成簽名方法需要更換如下:
String sign = AlipaySignature.rsa256Sign(AlipaySignature.getSignContent(map), this.privateKey, "utf-8");
-
初始化支付寶客戶端時,需要使用帶有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") );
-
驗簽時,需要使用驗證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");
-