微信支付变更安全认证方式:平台证书改用公钥
创作时间:
2025-01-21 23:17:13
作者:
@小白创作中心
微信支付变更安全认证方式:平台证书改用公钥
问题说明
微信支付对于新申请商户号以及平台证书过期的商户,已不再签发平台证书,需要更换使用微信支付平台公钥进行敏感信息加密和通知回调签名验证。因此,此类商户号在调用获取平台证书接口时,会出现"证书不存在"或者"系统繁忙"的错误提示。
解决方案
目前会存在两种情况:
- 新申请的商户号在商户后台没有"平台证书"管理入口
- 存量商户存在有效期内的平台证书或平台证书已过期未签发
对于第一种情况,可以直接在商户后台启用"微信支付公钥"。下面的教程主要以存量商户切换公钥为例进行说明。
1.1 获取商户对应的平台公钥
商户后台 -> 账户中心 -> API安全 -> 申请"微信支付公钥",在点击申请时会提示查看指引,需要点击查看才能进行公钥申请。
下载公钥:
点击"下载公钥"后会自动下载文件名为'pub_key.pem'的公钥,并在后台生成以"PUB_KEY_ID"开头的公钥ID(如果丢失,可以在后台重复下载,公钥ID不变)。
1.2 接口开发
下面的示例说明均使用官方SDK,仅供参考。
PHP示例
// 从本地文件中加载「微信支付平台证书」或者「微信支付平台公钥」,用来验证微信支付应答的签名,这里直接使用前面从后台获取的微信支付平台公钥;
$platformCertificateOrPublicKeyFilePath = 'file:///path/to/wechatpay/certificate_or_publickey.pem';
$platformPublicKeyInstance = Rsa::from($platformCertificateOrPublicKeyFilePath, Rsa::KEY_TYPE_PUBLIC);
// 「微信支付平台证书」的「证书序列号」或者是「微信支付平台公钥ID」
// 「平台证书序列号」及/或「平台公钥ID」可以从 商户平台 -> 账户中心 -> API安全 直接查询到,这里直接写前面从后台获取的微信支付平台公钥ID,注意要带上'PUB_KEY_ID_'
$platformCertificateSerialOrPublicKeyId = 'PUB_KEY_ID_0114232134912410000000000000';
Java示例
// 可以根据实际情况使用publicKeyFromPath或publicKey加载公钥
Config config =
new RSAPublicKeyConfig.Builder()
.merchantId(merchantId)
.privateKeyFromPath(privateKeyPath)
.publicKeyFromPath(publicKeyPath)
.publicKeyId(publicKeyId)
.merchantSerialNumber(merchantSerialNumber)
.apiV3Key(apiV3Key)
.build();
Go示例
var (
wechatpayPublicKeyID string = "PUB_KEY_ID_0114232134912410000000000000" // 微信支付公钥ID
)
wechatpayPublicKey, err = utils.LoadPublicKeyWithPath("/path/to/wechatpay/pub_key.pem")
if err != nil {
panic(fmt.Errorf("load wechatpay public key err:%s", err.Error()))
}
// 初始化 Client
opts := []core.ClientOption{
option.WithWechatPayPublicKeyAuthCipher(
mchID,
mchCertificateSerialNumber, mchPrivateKey,
wechatpayPublicKeyID, wechatpayPublicKey),
}
client, err := core.NewClient(ctx, opts...)
// 初始化 notify.Handler
handler := notify.NewNotifyHandler(
mchAPIv3Key,
verifiers.NewSHA256WithRSAPubkeyVerifier(wechatpayPublicKeyID, *wechatPayPublicKey))
1.3 不使用SDK的情况
可以参考以下链接内的示例:点击查看
1.4 开发对接完成后
在商户后台更换验签方式。此操作需要超管进行操作并进行安全验证,更换以后回调灰度进度由平台控制在7天内完成,应答进度由商户请求参数控制。更换完成后才可以进行平台证书作废操作。
热门推荐
是什么吸引20万人走进“东方起点”开启跨时空对话?
如何挑选支持多用户访问的私人NAS
三元催化的清洗方法有哪些?这些方法各有什么优缺点?
农村自建房户型图:经济实用与美观大方相结合
蹴鞠场边万人看,秋千旗下一春忙。
一本书带你全景式了解二战时期的德国陆军
Win11减少C盘占用及清爽系统配置教程
先天性膝盖骨外翻能矫正吗
湿度100%!深圳还要“潮”多久?冷空气和东北风来救场了
警惕!这个隐秘的“放贷帝国”,利率竟高达126%
下班路上、差旅间隙也要甩两杆?——极简钓鱼装备
跟着电影看疾病!探秘精神分裂症那些你不知道的真相与误解
戴耳机是在听噪音?娱乐性噪音了解下,还会引发失眠等健康问题
如何选择垃圾袋?一文详解不同类型与选购要点
南开大学2024年录取分走势预测:大环境影响下的理性分析
被家里猫抓伤出血?十日观察法的科学解读与应用指南
行政法与民法之间的区分与联系
普洱茶树全年剪枝周期与时间指南:从幼苗到成树的科学修剪方案
可持续发展新方案:智慧厕所的环保与节能设计
肚子冰凉怎么调理最有效
蛋壳变果蔬净、蛋膜变保健品,院士团队接力——20年“打开”一枚蛋
一边跳绳,一边放屁是怎么回事?
振动传感器:电机振动监测预警和故障分析
危化品经营单位安全管理人员的职责及注意事项
英国的作者有哪些
如何找团队参加比赛项目
自行车气压打多少
“AI教母”李飞飞创业团队 World Labs 发布首个空间智能 AI 模型
顺德医院沈洁团队成果展示: 甲状腺激素敏感性与代谢病系列研究
交通肇事赔偿款协商的法律策略与实务指南