Appearance
微信支付接入路线
本文介绍接入微信支付前需要完成的准备工作,以及 Native Pay、JSAPI Pay、Code Pay 等支付方式的区别和推荐接入顺序。
1. 整体流程
plaintext
注册微信公众号(必须是服务号)
│
▼
申请微信支付商户号
│
▼
绑定公众号与商户号
│
▼
下载商户 API 证书
│
▼
配置 API v3 Key
│
▼
Spring Boot 集成 wx-java-pay
│
▼
根据业务场景选择支付方式
│
├── Native Pay
├── JSAPI Pay
├── Code Pay
└── Refund完成以上步骤后,就可以开始开发具体的支付功能。
2. 第一步:注册微信公众号
推荐注册 微信公众号服务号。
原因:
- 支持 JSAPI 支付
- 支持网页授权(OAuth)
- 可以作为后续 H5 功能入口
- 可与微信支付商户号绑定
如果仅做 Native Pay 或 Code Pay 的技术验证,公众号参与较少;但从长期来看,仍建议直接使用服务号。
3. 第二步:申请微信支付商户号
微信公众号本身不能收款。
真正负责资金结算的是 微信支付商户号(MCH)。
申请完成后,会得到:
- 商户号(mchid)
- 商户平台后台
- API 管理能力
- 支付产品开通入口
微信支付商户号通常要求微信公众号主体已完成微信认证(需要提供营业执照),认证费用目前为每年 300 元。
4. 第三步:绑定公众号与商户号
进入微信支付商户平台,将公众号绑定到商户号。
绑定完成后:
- JSAPI 可以获取对应公众号用户的 openid
- Native Pay、Code Pay 也可以统一使用同一个商户号
一般一个公众号对应一个商户号即可。
5. 第四步:下载商户 API 证书
在商户平台创建 API 证书后,会下载一个压缩包,例如:
plaintext
xxxx_cert.zip解压后通常包含:
plaintext
apiclient_key.pem
apiclient_cert.pem后续 Spring Boot 配置需要使用这些文件。
6. 第五步:配置 API v3
微信支付 V3 接口需要配置:
yaml
wx:
pay:
app-id:
mch-id:
api-v3-key:
private-key-path:
private-cert-path:
cert-serial-no:
public-key-path:
public-key-id:配置完成后,基本具备调用微信支付 API 的能力。
7. 第六步:选择支付方式
不同支付方式适用于不同业务场景。
| 支付方式 | 推荐场景 | 用户如何付款 | 最小技术验证是否需要公网域名 | 是否需要公众号 OAuth | 推荐程度 |
|---|---|---|---|---|---|
| Native Pay | PC 网站扫码支付 | 用户扫码商户二维码 | ❌ | ❌ | ⭐⭐⭐⭐⭐ |
| Code Pay | 收银、扫码枪、POS | 商户扫码用户付款码 | ❌ | ❌ | ⭐⭐⭐⭐⭐ |
| JSAPI Pay | 公众号/H5 | 微信内拉起支付 | ✅ | ✅ | ⭐⭐⭐⭐ |
| H5 Pay | 微信外浏览器 | 浏览器跳转支付 | ✅ | ❌ | ⭐⭐⭐ |
| APP Pay | Android/iOS App | App 内支付 | ? | ? | ⭐⭐⭐ |
为什么推荐先学习 Native Pay?
Native Pay 的优点:
- ✔ 不依赖 OAuth
- ✔ 不依赖 openid
- ✔ 前端最简单
- ✔ 最容易调试
- ✔ 最容易理解微信支付流程
- ✔ 开通门槛低,可在微信支付商户平台「产品中心」中直接申请开通(符合商户主体和产品要求时)
踩坑记录
我一开始一直以为 Native Pay 的开通流程会比较复杂,因此迟迟没有尝试。
真正操作时才发现,在我的商户号下,只需要进入微信支付商户平台 「产品中心」,申请开通 Native Pay,并完成密码和手机号验证,很快就完成了。
如果你的商户主体符合微信支付的开通条件,建议尽早尝试,不要因为主观认为"开通很麻烦"而耽误验证进度。
实验结论
不要先猜流程复杂与否,先到商户平台实际操作一遍。很多时候,完成一次真实验证,比阅读大量资料更有效。
因此建议作为整个微信支付学习的第一站。
为什么第二个学习 Code Pay?
因为它已经不需要二维码,但开始涉及支付结果处理、USERPAYING、查单等企业收银场景。
8. 推荐学习顺序
推荐按照下面的顺序学习。
第一阶段:Native Pay
最容易验证支付链路。
只需要:
- 微信支付商户号
- Spring Boot
- wx-java-pay
即可生成二维码进行支付测试。
推荐先完成:
- 创建订单
- 查询订单
- 支付回调
第二阶段:Code Pay
完成付款码支付。
特点:
- 商户主动扫码
- 不需要域名
- 不需要 OAuth
- 可以直接使用 JUnit 调试
推荐完成:
- auth_code 扣款
- USERPAYING 处理
- 查询订单
- 支付回调
第三阶段:JSAPI Pay
JSAPI 是公众号内最常见的支付方式。
相比前两种,需要额外配置:
- 网页授权
- OAuth 获取 openid
- 支付授权目录
- HTTPS 域名
整体流程明显更加复杂。
建议已经熟悉微信支付接口后,再开始接入 JSAPI。
第四阶段:退款
退款通常包括:
- 申请退款
- 查询退款
- 退款回调
退款建议最后开发。
因为退款依赖已经存在的支付订单。
9. 推荐阅读顺序
plaintext
准备工作(本文)
│
▼
Native Pay 最小接入指南
│
▼
Code Pay 最小接入指南
│
▼
JSAPI Pay 最小接入指南
│
▼
退款最小接入指南
│
▼
退款回调
│
▼
常见问题汇总按照以上顺序学习,可以逐步完成整个微信支付体系的接入。
10. 常见问题
没有公众号,没有域名,可以测试吗?
通常不可以。想要调用微信支付的接口,必须要有微信支付商户号。而开通商户号功能时要示一个已通过认证的服务号。
一定要先做 JSAPI 吗?
不用。
建议先完成 Native Pay 或 Code Pay。
这两种方式更容易理解微信支付的整体流程。
推荐先开发哪一种?
如果第一次接触微信支付,推荐顺序:
plaintext
Native Pay
↓
Code Pay
↓
JSAPI Pay
↓
Refund这样可以以最低的学习成本,逐步掌握微信支付各类接口的使用方式。
在线体验
如果你只是想快速体验微信支付,而暂时不想申请公众号、商户号或搭建开发环境,可以直接体验小刘实验室提供的在线示例。
目前已开放体验:
- ✅ Native Pay(PC 显示付款二维码,手机微信扫码支付)
- ✅ Code Pay(手机微信付款码支付)
- ✅ JSAPI Pay(公众号网页内支付)
欢迎关注公众号,在菜单中进入 「实验室」,即可在线体验各类支付方式,并查看对应的开发文档与示例代码。

在线体验环境仅用于学习和验证微信支付接入流程,请勿用于生产业务。