微信支付的密钥与证书分别是什么
自带微信支付商户号的品牌,需要准备 API 密钥和商户 API 证书两样材料。本页讲清各自的用途、一笔付款背后它们如何配合、以及商户平台上另外两样为什么不用管。
这篇指南面向使用自己微信支付商户号的品牌管理员。
在微信支付商户平台的「账户中心 → API安全」里,你会看到好几样名字很像的东西。其中 Darkroom 实际需要的只有两样,本页把这两样讲清楚,并说明其余的为什么不用管。
这两样在商户平台上长这样——本页说的就是下图这一组:
两样东西,各管一件事
| 名称 | 长什么样 | 用途 |
|---|---|---|
| API 密钥 | 32 位字符串,你自己设定 | 给每一笔收款请求算出一个校验码,向微信证明“这笔请求确实来自本商户”;微信回传付款结果时,也用它核对结果的真伪 |
商户 API 证书(apiclient_cert.pem + apiclient_key.pem) |
两个文件,申请时打包下载 | 退款专用。发起退款是高风险操作,微信要求额外出示这套证书才受理 |
一句话概括:密钥管日常收款,证书管退款。
举个例子:一笔付款背后发生了什么
顾客在你的预约页上付了 500 元订金。
第 1 步 · 发起收款
Darkroom 替你向微信发出“请为这笔订单收 500 元”的请求。发出前,系统把请求里的每一项(订单号、金额、商户号……)连同你的 API 密钥一起,算出一串校验码附在请求上。
微信收到后,用它那边存的同一把密钥重算一遍:算出来一致,就确认这笔请求确实来自你的商户号;不一致就整笔拒绝。这是“证明是我”的环节——密钥本身从不在网络上传输,传的只是算出来的校验码。
第 2 步 · 顾客付款
微信里弹出付款框,顾客确认支付。这个付款框能弹出来,同样依赖第 1 步算出的凭据。
第 3 步 · 微信回传付款结果
微信主动向 Darkroom 发一条“这笔订单已付款成功”的通知。收到后系统做的第一件事,是用同一把 API 密钥把通知里的内容重算一遍校验码,和通知自带的那个对比。
这一步很关键:如果不核对,任何人都可以伪造一条“付款成功”发过来,订单就会在你没收到钱的情况下被标成已付。 对不上的通知会被直接丢弃。
第 4 步 · 入账
订金记入订单,顾客收到确认通知。
第 5 步 · 如果之后要退款
退款走的是另一个入口,微信对它的要求更严:除了照样要算校验码,还要求同时出示你的商户 API 证书——相当于在门口除了报暗号,还要出示证件。这就是那两个 .pem 文件唯一的用武之地。
安全保管
把这两样东西都当作账户密码看待:
- API 密钥设完立刻存进密码管理器。它是收款链路的核心,泄露等同于别人能冒用你的商户号发起请求。
apiclient_key.pem是私钥,申请证书时通常只能下载一次,请立刻在安全的地方备份一份。- 不要发到群聊、工单截图或普通文档里。
- 不要放进公开网页、浏览器端脚本或公开代码仓库。
- 交接给 Darkroom 一律通过新版后台的「微信与数据接口 → 微信支付」页提交(提交后系统会在线验证有效性),不要用聊天工具直接发送文件。
- 商户 API 证书有有效期(通常五年),到期前微信会在商户平台提醒,届时需要重新申请并把新文件交给我们。
常见问题
这些东西一定要交给 Darkroom 吗? 在“品牌自带微信支付商户号”这种接入方式里,Darkroom 需要用它们代你发起收款与退款,因此需要保管。这也是这种方式的固有代价——好处是你的收款账户完全由你自己掌握,与 Darkroom 之间只有接口调用关系:你随时可以在商户平台重置密钥与证书来终止这层授权。
公众号那边也要交密钥吗? 公众号是另一回事。微信公众号托管(公测中)下,公众号改为扫码授权、不再交付 AppSecret。但那只覆盖公众号,本页说的微信支付材料不在其中。
我可以自己改这些密钥吗? 可以,但改完请第一时间在新版后台的「微信与数据接口 → 微信支付」页重新提交并通过在线验证。改了不同步会导致收款和退款中断,且报错信息通常只显示“签名错误”,不容易一眼看出原因。
证书文件我找不到了怎么办? 在微信支付商户平台重新申请一次即可。重新申请后旧证书失效,请把新文件整套交给我们。在这之前收款不受影响,但退款会失败。
API 密钥忘了当初设的是什么,能查回来吗? 不能。微信不提供查看,只能重新设置一把新的——重新设置的瞬间旧密钥即失效,所以请紧接着在新版后台更新,中间这段时间收款会中断。建议选在没有顾客付款的时段操作。
相关内容
- 微信支付的 v2 和 v3 接口有什么区别(商户平台上另外两样材料为什么用不到)
- 从零接入自己的微信支付(本页两样材料在整个接入流程中的位置与操作顺序)
- 微信公众号托管(公测中,推荐)(公众号侧改为扫码授权,不涉及本页的支付材料)
- 支付与收款方式概览
- 自托管微信 Access Token(高级集成)
- 查看和保护 API 凭据
