其他


修改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.jarUS_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错误"}

这个错误出现在上送参数需要敏感信息加密的接口中。请参考申明加密使用的平台证书

当证书序列号错误或者不是请求商户号对应的平台证书时,微信支付会返回问题中的错误提示。请检查:

  • 加密使用的证书是否是微信支付平台证书。有时会误用商户证书导致该错误。
  • 是否是请求商户对应的微信支付平台证书,如用了其他商户号的平台证书。
  • 证书是否过期。请按照指引检查证书是否过期,并更新并部署新证书。


技术咨询

文档反馈