refactor(payment): 重构微信支付私钥处理逻辑

- 将方法参数从 keyPath 修改为 key,移除对文件路径的依赖
- 更新方法签名和文档注释,以适应新的参数
- 删除 WechatPaymentSetting 中未使用的证书字段
This commit is contained in:
pikachu1995@126.com 2024-12-27 11:02:57 +08:00
parent 586a507bb1
commit 9225b4ff10
4 changed files with 24 additions and 24 deletions

View File

@ -313,16 +313,16 @@ public class PayKit {
* v3 接口创建签名 * v3 接口创建签名
* *
* @param signMessage 待签名的参数 * @param signMessage 待签名的参数
* @param keyPath key.pem 证书路径 * @param key key.pem 证书
* @return 生成 v3 签名 * @return 生成 v3 签名
* @throws Exception 异常信息 * @throws Exception 异常信息
*/ */
public static String createSign(String signMessage, String keyPath) throws Exception { public static String createSign(String signMessage, String key) throws Exception {
if (StrUtil.isEmpty(signMessage)) { if (StrUtil.isEmpty(signMessage)) {
return null; return null;
} }
//获取商户私钥 //获取商户私钥
PrivateKey privateKey = PayKit.getPrivateKey(keyPath); PrivateKey privateKey = PayKit.getPrivateKey(key);
//生成签名 //生成签名
return RsaKit.encryptByPrivateKey(signMessage, privateKey); return RsaKit.encryptByPrivateKey(signMessage, privateKey);
} }
@ -378,13 +378,13 @@ public class PayKit {
/** /**
* 获取商户私钥 * 获取商户私钥
* *
* @param keyPath 商户私钥证书路径 * @param key 商户私钥证书
* @return {@link PrivateKey} 商户私钥 * @return {@link PrivateKey} 商户私钥
* @throws Exception 异常信息 * @throws Exception 异常信息
*/ */
public static PrivateKey getPrivateKey(String keyPath) throws Exception { public static PrivateKey getPrivateKey(String key) throws Exception {
String originalKey = FileUtil.readUtf8String(keyPath); // String originalKey = FileUtil.readUtf8String(keyPath);
String privateKey = originalKey String privateKey = key
.replace("-----BEGIN PRIVATE KEY-----", "") .replace("-----BEGIN PRIVATE KEY-----", "")
.replace("-----END PRIVATE KEY-----", "") .replace("-----END PRIVATE KEY-----", "")
.replaceAll("\\s+", ""); .replaceAll("\\s+", "");

View File

@ -449,7 +449,7 @@ public class WxPayKit {
* @param urlSuffix 可通过 WxApiType 来获取URL挂载参数需要自行拼接 * @param urlSuffix 可通过 WxApiType 来获取URL挂载参数需要自行拼接
* @param mchId 商户Id * @param mchId 商户Id
* @param serialNo 商户 API 证书序列号 * @param serialNo 商户 API 证书序列号
* @param keyPath key.pem 证书路径 * @param key key.pem 证书
* @param body 接口请求参数 * @param body 接口请求参数
* @param nonceStr 随机字符库 * @param nonceStr 随机字符库
* @param timestamp 时间戳 * @param timestamp 时间戳
@ -458,11 +458,11 @@ public class WxPayKit {
* @throws Exception 异常信息 * @throws Exception 异常信息
*/ */
public static String buildAuthorization(RequestMethodEnums method, String urlSuffix, String mchId, public static String buildAuthorization(RequestMethodEnums method, String urlSuffix, String mchId,
String serialNo, String keyPath, String body, String nonceStr, String serialNo, String key, String body, String nonceStr,
long timestamp, String authType) throws Exception { long timestamp, String authType) throws Exception {
//构建签名参数 //构建签名参数
String buildSignMessage = PayKit.buildSignMessage(method, urlSuffix, timestamp, nonceStr, body); String buildSignMessage = PayKit.buildSignMessage(method, urlSuffix, timestamp, nonceStr, body);
String signature = PayKit.createSign(buildSignMessage, keyPath); String signature = PayKit.createSign(buildSignMessage, key);
//根据平台规则生成请求头 authorization //根据平台规则生成请求头 authorization
return PayKit.getAuthorization(mchId, serialNo, nonceStr, String.valueOf(timestamp), signature, authType); return PayKit.getAuthorization(mchId, serialNo, nonceStr, String.valueOf(timestamp), signature, authType);
} }

View File

@ -165,7 +165,7 @@ public class WechatApi {
* @param mchId 商户Id * @param mchId 商户Id
* @param serialNo 商户 API 证书序列号 * @param serialNo 商户 API 证书序列号
* @param platSerialNo 平台序列号接口中包含敏感信息时必传 * @param platSerialNo 平台序列号接口中包含敏感信息时必传
* @param keyPath apiclient_key.pem 证书路径 * @param keyPath apiclient_key.pem 证书
* @param body 接口请求参数 * @param body 接口请求参数
* @param nonceStr 随机字符库 * @param nonceStr 随机字符库
* @param timestamp 时间戳 * @param timestamp 时间戳
@ -175,12 +175,12 @@ public class WechatApi {
* @throws Exception 接口执行异常 * @throws Exception 接口执行异常
*/ */
public static PaymentHttpResponse v3(RequestMethodEnums method, String urlPrefix, String urlSuffix, public static PaymentHttpResponse v3(RequestMethodEnums method, String urlPrefix, String urlSuffix,
String mchId, String serialNo, String platSerialNo, String keyPath, String mchId, String serialNo, String platSerialNo, String key,
String body, String nonceStr, long timestamp, String authType, String body, String nonceStr, long timestamp, String authType,
File file) throws Exception { File file) throws Exception {
//构建 Authorization //构建 Authorization
String authorization = WxPayKit.buildAuthorization(method, urlSuffix, mchId, serialNo, String authorization = WxPayKit.buildAuthorization(method, urlSuffix, mchId, serialNo,
keyPath, body, nonceStr, timestamp, authType); key, body, nonceStr, timestamp, authType);
if (StrUtil.isEmpty(platSerialNo)) { if (StrUtil.isEmpty(platSerialNo)) {
platSerialNo = serialNo; platSerialNo = serialNo;
@ -252,17 +252,17 @@ public class WechatApi {
* @param mchId 商户Id * @param mchId 商户Id
* @param serialNo 商户 API 证书序列号 * @param serialNo 商户 API 证书序列号
* @param platSerialNo 平台序列号 * @param platSerialNo 平台序列号
* @param keyPath apiclient_key.pem 证书路径 * @param key apiclient_key.pem 证书
* @param body 接口请求参数 * @param body 接口请求参数
* @return {@link PaymentHttpResponse} 请求返回的结果 * @return {@link PaymentHttpResponse} 请求返回的结果
* @throws Exception 接口执行异常 * @throws Exception 接口执行异常
*/ */
public static PaymentHttpResponse v3(RequestMethodEnums method, String urlPrefix, String urlSuffix, String mchId, public static PaymentHttpResponse v3(RequestMethodEnums method, String urlPrefix, String urlSuffix, String mchId,
String serialNo, String platSerialNo, String keyPath, String body) throws Exception { String serialNo, String platSerialNo, String key, String body) throws Exception {
long timestamp = System.currentTimeMillis() / 1000; long timestamp = System.currentTimeMillis() / 1000;
String authType = "WECHATPAY2-SHA256-RSA2048"; String authType = "WECHATPAY2-SHA256-RSA2048";
String nonceStr = WxPayKit.generateStr(); String nonceStr = WxPayKit.generateStr();
return v3(method, urlPrefix, urlSuffix, mchId, serialNo, platSerialNo, keyPath, body, nonceStr, timestamp, authType, null); return v3(method, urlPrefix, urlSuffix, mchId, serialNo, platSerialNo, key, body, nonceStr, timestamp, authType, null);
} }
/** /**

View File

@ -41,14 +41,14 @@ public class WechatPaymentSetting {
* 私钥 * 私钥
*/ */
private String apiclient_key; private String apiclient_key;
/** // /**
* pem 证书 // * pem 证书
*/ // */
private String apiclient_cert_pem; // private String apiclient_cert_pem;
/** // /**
* p12 证书 // * p12 证书
*/ // */
private String apiclient_cert_p12; // private String apiclient_cert_p12;
/** /**
* 商户证书序列号 * 商户证书序列号
*/ */