其他
修改API v3密钥,会影响现有的使用APIKey密钥的交易吗?
API v3密钥是用于平台证书解密、回调信息解密,修改API v3密钥对交易没影响
使用Java加载密钥时,抛出异常InvalidKeyException: Illegal key size
受到美国法律的约束,早期Java的运行时限制了JCE支持的密钥长度,即默认不支持256位的AES。解决的方法有三个:
- (推荐)升级Java 8u162+,默认使用ulimited policy
- Java 8u151和8u152,可以在你的程序中直接放开策略
Security.setProperty("crypto.policy", "unlimited");
- 其他版本,下载无限强度权限策略文件补丁包,并使用其中的文件覆盖
$JAVA_HOME/lib/security
目录下的对应的local_policy.jar
和US_export_policy.jar
Java9及以上,均无限制。
使用Java解密时,抛出异常AEADBadTagException: Tag mismatch!
加密使用的AES-GCM包含了Galois Message Authentication Code (GMAC)的消息认证机制。解密时会对数据的完整性进行校验。出现tag mismatch异常,表示解密时的消息认证失败。通常有三种可能:
- 使用了错误的API v3密钥,如使用了其他商户号的密钥,或者使用了APIv2的APIKey。
- 密文不正确。请检查提交解密的密文和收到的密文。注意报文中的密文经过了Base64编码。
- 解密时接口遗漏传入附加数据(associated_data)
开发者可以参考我们的示例代码 。
请求返回{"code":"PARAM_ERROR","message":"平台证书序列号Wechatpay-Serial错误"}
这个错误出现在上送参数需要敏感信息加密的接口中。请参考申明加密使用的平台证书
当证书序列号错误或者不是请求商户号对应的平台证书时,微信支付会返回问题中的错误提示。请检查:
- 加密使用的证书是否是微信支付平台证书。有时会误用商户证书导致该错误。
- 是否是请求商户对应的微信支付平台证书,如用了其他商户号的平台证书。
- 证书是否过期。请按照指引检查证书是否过期,并更新并部署新证书。