难道子商户的分账不能使用服务商的证书吗?只能使用子商户的证书?
服务商分账时使用服务商的证书提示:商户未申请过证书。请到商户平台上申请证书授权机构颁发的证书请求分账时需要再请求头中添加 Wechatpay-Serial 参数,对于普通商户使用自己的证书自动更新平台证书是可以的,但是如果是特约商户,使用服务商的证书就报错了。更新证书时 statusCode = 401 {"code":"SIGN_ERROR","message":"商户未申请过证书。请到商户平台上申请证书授权机构颁发的证书。详情可参考:http://kf.qq.com/faq/180824JvUZ3i180824YvMNJj.html。"} public static X509CertImpl x509Cert(String merchantId,WxConfDTO confDTO){ try { byte[] bytes = FileUtil.httpBytes(confDTO.getPrivateFilePath()); PrivateKey merchantPrivateKey = PemUtil.loadPrivateKey(new String(bytes, StandardCharsets.UTF_8)); // 获取证书管理器实例 CertificatesManager certificatesManager = CertificatesManager.getInstance(); // 向证书管理器增加需要自动更新平台证书的商户信息 certificatesManager.putMerchant(merchantId, new WechatPay2Credentials(merchantId, new PrivateKeySigner(confDTO.getSerialNo(), merchantPrivateKey)), confDTO.getPrivateKey().getBytes(StandardCharsets.UTF_8)); // 从证书管理器中获取verifier Verifier verifier = certificatesManager.getVerifier(merchantId); return (X509CertImpl) verifier.getValidCertificate(); } catch (Exception e) { log.error("x509CertError,{},{}",merchantId,confDTO); throw new BaseException("获取加密信息异常!"); } }
2024-12-17