public class SignatureProvider extends Object
我方请求微信服务器时,需要根据我方的API证书对参数进行加签;微信服务器会根据我方签名验签以确定请求来自我方服务器;
然后微信服务器响应我方请求并在响应报文中使用【微信平台证书】加签 我方需要根据规则验签是否响应来自微信支付服务器
其中【微信平台证书】定期会进行更新,不受我方管控,我方需要适当的时候获取最新的证书列表。
| 限定符和类型 | 字段和说明 |
|---|---|
private static Map<String,Certificate> |
CERTIFICATE_MAP
微信平台证书容器 key = 序列号 value = 证书对象
|
private static org.springframework.util.IdGenerator |
ID_GENERATOR
The constant ID_GENERATOR.
|
private org.springframework.web.client.RestOperations |
restOperations
The Rest operations.
|
private static String |
SCHEMA
The constant SCHEMA.
|
static String |
TOKEN_PATTERN
The constant TOKEN_PATTERN.
|
private WechatMetaContainer |
wechatMetaContainer
The Wechat meta container.
|
| 构造器和说明 |
|---|
SignatureProvider(WechatMetaContainer wechatMetaContainer)
Instantiates a new Signature provider.
|
| 限定符和类型 | 方法和说明 |
|---|---|
private String |
createSign(String... components)
请求时设置签名 组件
|
String |
decryptResponseBody(String tenantId,
String associatedData,
String nonce,
String ciphertext)
解密响应体.
|
private void |
refreshCertificate(String tenantId)
当我方服务器不存在平台证书或者证书同当前响应报文中的证书序列号不一致时应当刷新 调用/v3/certificates
|
String |
requestSign(String tenantId,
String method,
String canonicalUrl,
String body)
我方请求时加签,使用API证书.
|
boolean |
responseSignVerify(ResponseSignVerifyParams params)
我方对响应验签,和应答签名做比较,使用微信平台证书.
|
WechatMetaContainer |
wechatMetaContainer()
Wechat meta container.
|
private static final org.springframework.util.IdGenerator ID_GENERATOR
private static final Map<String,Certificate> CERTIFICATE_MAP
private final org.springframework.web.client.RestOperations restOperations
private final WechatMetaContainer wechatMetaContainer
public SignatureProvider(WechatMetaContainer wechatMetaContainer)
wechatMetaContainer - the wechat meta containerpublic String requestSign(String tenantId, String method, String canonicalUrl, String body)
tenantId - the properties keymethod - the methodcanonicalUrl - the canonical urlbody - the bodypublic boolean responseSignVerify(ResponseSignVerifyParams params)
params - the paramsprivate void refreshCertificate(String tenantId)
tenantId - tenantIdpublic String decryptResponseBody(String tenantId, String associatedData, String nonce, String ciphertext)
tenantId - the properties keyassociatedData - the associated datanonce - the nonceciphertext - the ciphertextpublic WechatMetaContainer wechatMetaContainer()
Copyright © 2020. All rights reserved.