
一.开通商家号
https://pay.weixin.qq.com/ 接入微信支付 提交审核资料


要确定在哪里使用到:

先选择当前需要的,后续可以再添加。
查找应用APPID:

还涉及到支付页截图

在手机端完成签署后,商家入驻完成:

二.技术对接
微信提供了两种方式在Web端对接,两者方式在完全不同的环境下使用:
1)JSAPI 支付(最常用)
适用场景:用户在【微信内部】打开你的 H5 网页时使用
- 微信公众号菜单里的网页
- 微信群 / 朋友圈点开的 H5 商城
- 微信内打开的活动、报名、缴费页面
特点
直接唤起微信支付窗口,不用扫码 体验最好、最顺滑 必须获取用户 openid 必须配置支付授权目录
一句话总结:只要是在微信里打开的网页,一律用 JSAPI。
2)Web端-Native 支付
适用场景:用户在【微信外部】打开你的网页时使用
- 手机浏览器(Chrome、Safari、系统浏览器)
- PC 电脑端网页
- 钉钉、企业微信、抖音、QQ 等 App 内打开的网页
特点
后端返回一个支付二维码 用户用微信扫码完成支付 不需要 openid 不需要配置支付目录
一句话总结:只要不在微信里打开的网页,一律用 Native 扫码支付。
表格:
方式 | 运行环境 | 交互形式 | 是否需要 openid | 适用场景 |
JSAPI | 微信内置浏览器 | 直接唤起支付 | 需要 | 公众号、微信群、朋友圈打开的 H5 |
Native | 手机浏览器 / PC / 其他 App | 生成二维码扫码 | 不需要 | 浏览器、电脑端、非微信环境 |
补充:H5 支付属于 “外部浏览器跳转微信支付”,需要单独申请开通,且仅限部分行业使用,不是 Web 通用标准方式。
普通 Web 网站 默认只能用 JSAPI + Native。
三.信息准备
基本信息配置
1) WECHAT_PAY_MCH_ID - 商户号,来源:微信支付商户平台 → 账户中心 → 商户信息
2) WECHAT_PAY_SERIAL_NO - 证书序列号,来源:账户中心 → API 安全 → 商户 API 证书 → 管理证书
3) WECHAT_PAY_PRIVATE_KEY - 商户私钥
获取位置:申请商户 API 证书时下载的压缩包内
商户平台 → API 安全 → 商户 API 证书 → 申请 / 下载证书 解压后得到文件: apiclient_key.pem用文本编辑器打开,复制全部内容(含 -----BEGIN PRIVATE KEY-----与-----END PRIVATE KEY-----)
重要:私钥仅下载一次,丢失需重新申请证书
4) WECHAT_PAY_PUB - 微信支付公钥
获取位置:验证微信支付身份 -> 微信支付公钥
5) WECHAT_PAY_APP_ID
绑定:登录 微信支付商户平台 → 产品中心 → AppID 授权管理。

这里还不能使用普通企业的公众号的AppID,可以使用移动应用的AppID。
而移动应用,又需要先在“微信支付”中额外开通“APP支付”。
6) WECHAT_PAY_V3_APIKEY - 微信支付V3 API密钥(用于解密回调通知 AEAD_AES_256_GCM)
位置:解密回调中直接设置,32位密码。
后端记录一下:
MchID string `json:"mchId"` // 商户号SerialNo string `json:"serialNo"` // 商户证书序列号PrivateKey string `json:"privateKey"` // 商户私钥(PKCS#8 PEM格式)WechatpayPub string `json:"wechatpayPub"` // 微信支付公钥(PEM格式,用于验签)PayAppID string `json:"payAppId"` // 微信公众号 AppID(用于 JSAPI/Native 支付)V3APIKey string `json:"v3ApiKey"` // 微信支付V3 API密钥(用于解密回调通知 AEAD_AES_256_GCM)API安全界面颇有点复杂:

针对新商户,可以忽略APIV2,只使用V3。
四.交互架构
不同信息的用途见下图:

五.功能选择
短期为了简化,支持单月购买以及年度购买,默认不到期自动续费(接入订阅有较高的要求,比如对所属行业的要求,而行业又涉及到资质相关,后续再考虑)。
用户可以在Web端和国内的安卓端使用微信支付能力,其他场景则适配其他支付工具,比如google pay等。
六.效果
通过测试账号可见的“测试会员”采用0.01元验证通过。


夜雨聆风