首页 >  微信开发 >  wx支付 privatekey 无效的密钥格式

wx支付 privatekey 无效的密钥格式

时间:2024-01-01

在对接微信支付的时候,根据支付文档使用固定jar包来获取CloseableHttpClient 。在进行加载商户密钥时,出现了如题错误。错误出现的原因是privateKey有误。

一、代码

出现这个问题的原因是privatekey错了;

    private String appid = "xx";
	private CloseableHttpClient httpClient;
	private String privatekey= "xxx";
	private String mchId = "xx";
	private String mchSerialNo = "xx";
	private String apiV3Key = "xx";
	private String notifyurl= "xx";
	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();
	}

二、原因

1、可能是复制错了,有空格或者多余的字符串啥的,可以仔细比对一番;

2、第一条是确保按照正确的方式获取了privateKey,如果方式不正确,得到的privateKey也不正确;

在微信商户平台申请apiV3证书的时候,需要先根据提示正确安装微信商户支付平台证书工具。获取privateKey的步骤如下

微信官方:正确获取微信商户支付证书privateKey的方式

在下载文件中找到apiclilient.pem,里面的字符串才是真正的privateKey