// 使用定时更新的签名验证器,不需要传入证书
verifier=new ScheduledUpdateCertificatesVerifier(new WechatPay2Credentials(merchanId,new PrivateKeySigner(merchantSerialNumber,merchantPrivateKey)), apiV3Key.getBytes(StandardCharsets.UTF_8));
WechatPayHttpClientBuilder builder = WechatPayHttpClientBuilder.create()
.withMerchant(merchantId, merchantSerialNumber, merchantPrivateKey)
.withValidator(new WechatPay2Validator(verifier))
// ... 接下来,你仍然可以通过builder设置各种参数,来配置你的HttpClient
// 通过WechatPayHttpClientBuilder构造的HttpClient,会自动的处理签名和验签,并进行证书自动更新
CloseableHttpClient httpClient = builder.build();
// 后面跟使用Apache HttpClient一样
CloseableHttpResponse response = httpClient.execute(...);
1.
ScheduledUpdateCertificatesVerifier
ScheduledUpdateCertificatesVerifier
是一个微信支付 API 中的类,它用于定期更新和验证微信支付的证书。它需要一个凭证对象(WechatPay2Credentials
)和 API 密钥来初始化。
- 功能:这个类主要用于定期拉取微信支付的证书,并对请求进行签名验证。它确保在密钥过期或被撤销时自动更新密钥。
2.
WechatPay2Credentials
WechatPay2Credentials
是一个包含微信支付相关凭证的对象。它主要包含两个参数:
merchantId
(商户号)signer
(签名者)这个对象的作用是提供给
ScheduledUpdateCertificatesVerifier
一个凭证,帮助它在请求时进行身份认证。
merchanId
:这个变量代表商户号(merchantId
),即在微信支付商户平台上注册的唯一标识。每个商户都有一个唯一的商户号。
PrivateKeySigner
:是一个用于签名的类,它通过商户的私钥来生成签名,从而确保请求的安全性。
merchantSerialNumber
:商户证书的序列号(merchantSerialNumber
),在微信支付商户平台上可以找到。merchantPrivateKey
:商户的私钥,用于生成签名。这个私钥与商户证书的公钥匹配。它用于对 API 请求进行签名,确保请求的完整性和身份验证。apiV3Key
:这是你微信支付商户账户的 API V3 密钥,用于加密签名 API 请求。.getBytes(StandardCharsets.UTF_8)
:这段代码将apiV3Key
字符串转换成字节数组,以便后续的加密操作。使用UTF-8
字符集确保字符的正确编码。