小程序
小游戏
企业微信
微信支付
扫描小程序码分享
这个密钥到底要怎么弄,有没有详细的指导文档,证书下载的密钥里面---BEGIN ENCRYPTED PRIVATE KEY -- 为啥微信给我指导文档都是---BEGIN PRIVATE KEY --
1 个回答
加粗
标红
插入代码
插入链接
插入图片
上传视频
示例代码你如果用不了,你可以用官方提供的SDK
附:微信V3接口响应返回“平台私钥解密失败”解决方法
https://developers.weixin.qq.com/community/develop/doc/000eec863c8df887b0db292355b409
你好,麻烦通过点击下方“反馈信息”按钮,提供出现问题的。
是的
关注后,可在微信内接收相应的重要提醒。
请使用微信扫描二维码关注 “微信开放社区” 公众号
示例代码你如果用不了,你可以用官方提供的SDK
附:微信V3接口响应返回“平台私钥解密失败”解决方法
https://developers.weixin.qq.com/community/develop/doc/000eec863c8df887b0db292355b409
public void setup() throws IOException {
// 加载商户私钥(privateKey:私钥字符串)
PrivateKey merchantPrivateKey = PemUtil
.loadPrivateKey(new ByteArrayInputStream(privateKey.getBytes("utf-8")));
// 加载平台证书(mchId:商户号,mchSerialNo:商户证书序列号,apiV3Key:V3密钥)
AutoUpdateCertificatesVerifier verifier = new AutoUpdateCertificatesVerifier(
new WechatPay2Credentials(mchId, new PrivateKeySigner(mchSerialNo, merchantPrivateKey)),apiV3Key.getBytes("utf-8"));
// 初始化httpClient
httpClient = WechatPayHttpClientBuilder.create()
.withMerchant(mchId, mchSerialNo, merchantPrivateKey)
.withValidator(new WechatPay2Validator(verifier)).build();
}
@After
public void after() throws IOException {
httpClient.close();
}
商户私钥(privateKey:私钥字符串)这个是否是api证书里面的apiclient_key.pem
是的
* 获取私钥。
*
* @param filename 私钥文件路径 (required)
* @return 私钥对象
*/
public static PrivateKey getPrivateKey(String filename) throws IOException {
String content = new String(Files.readAllBytes(Paths.get(filename)), "utf-8");
try {
String privateKey = content.replace("-----BEGIN PRIVATE KEY-----", "")
.replace("-----END PRIVATE KEY-----", "")
.replaceAll("\\s+", "");
KeyFactory kf = KeyFactory.getInstance("RSA");
return kf.generatePrivate(
new PKCS8EncodedKeySpec(Base64.getDecoder().decode(privateKey)));
} catch (NoSuchAlgorithmException e) {
throw new RuntimeException("当前Java环境不支持RSA", e);
} catch (InvalidKeySpecException e) {
throw new RuntimeException("无效的密钥格式");
}
}
调用这个方法提示失败。我看了下api证书里面的apiclient_key.pem的包含-----BEGIN ENCRYPTED PRIVATE KEY----- 和官网提示方法里面不一样-----BEGIN PRIVATE KEY----- 就是最上面一张我本地调用报错的图。api证书里面的apiclient_key.pem还需要做什么特殊处理的么