API v3密钥是用于平台证书解密、回调信息解密,修改API v3密钥对交易没影响
受到美国法律的约束,早期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及以上,均无限制。
加密使用的AES-GCM包含了Galois Message Authentication Code (GMAC)的消息认证机制。解密时会对数据的完整性进行校验。出现tag mismatch异常,表示解密时的消息认证失败。通常有三种可能:
○ 使用了错误的API v3密钥,如使用了其他商户号的密钥,或者使用了APIv2的APIKey。
○ 密文不正确。请检查提交解密的密文和收到的密文。注意报文中的密文经过了Base64编码。
○ 解密时接口遗漏传入附加数据(associated_data)
开发者可以参考我们的示例代码 。
这个错误出现在上送参数需要敏感信息加密的接口中。请参考申明加密使用的平台证书
当证书序列号错误或者不是请求商户号对应的平台证书时,微信支付会返回问题中的错误提示。请检查:
○ 加密使用的证书是否是微信支付平台证书。有时会误用商户证书导致该错误。
○ 是否是请求商户对应的微信支付平台证书,如用了其他商户号的平台证书。
○ 证书是否过期。请按照指引检查证书是否过期,并更新并部署新证书。
Customer Service Tel
Business Development
9:00-18:00
Monday-Friday GMT+8
Technical Support
WeChat Pay Global
ICP证