官方文档:支付产品
小程序支付
前置:✅ 由小程序自动提供openid
小程序内调用 wx.requestPayment,使用 JSAPI 类型
优点
- 无需额外绑定服务号,小程序已内嵌微信支付能力
- 用户体验流畅,支付流程无缝衔接在小程序内
- 无需获取用户
openid(小程序已自动获取) - 支持多种微信客户端,包括Windows版、Mac版、鸿蒙OS版等
- 安全性高,支付数据通过微信支付后台校验和加密
- 与微信生态深度集成,支付流程无需跳转
缺点
- 需要在微信公众平台开通微信支付功能
- 需要配置商户号、密钥等支付参数
- 需要后端完成统一下单接口调用,生成预支付交易单
- 开发者需要掌握微信支付的签名算法(MD5、HMAC-SHA256等)
- 需要确保
signType与统一下单接口的签名类型保持一致
APP支付
在原生 App(iOS/Android)中集成调用微信SDK 的 sendReq() 方法(iOS/Android 原生)
优点
- 适用于原生APP内集成微信支付
- 用户体验良好,支付流程顺畅
- 无需用户额外操作,直接在APP内完成支付
- 安全性高,支付数据通过微信支付后台校验和加密
- 支持多种平台(iOS、Android),支付流程统一
缺点
- 需要注册微信开放平台,绑定APP
- 需要开发者熟悉微信开放平台的API和支付流程
- 需要审核APP的支付功能
- 需要处理不同平台(iOS、Android)的差异
- 需要处理APP内支付的回调和支付结果验证
JSAPI支付 (公众号支付)
前置:✅ 通过 OAuth2 获取获取openid 用户在微信内打开 H5 页面,通过公众号发起支付
优点
- 注册微信支付商户平台后默认可用
- 配合公众号能力更强,可结合公众号营销活动
- 可以获取用户openid,便于用户行为分析和后续营销
缺点
- 必须绑定一个认证的服务号
- 需要用户授权openid
- 需要公众号与支付商户号关联
- 仅适用于微信内访问的网页
H5支付
用户在手机浏览器(非微信内置)中打开网页,唤起微信支付。跳转到微信返回的 mweb_url(由后端统一下单获得
跳转流程:商户 H5 页面 → 统一下单 → 获取 mweb_url → 跳转至微信支付中间页 → 用户支付 → 跳回 redirect_url
备注:若域名未备案或未加入白名单,可能被拦截
优点
- 不需要服务号,也不需要获取openid
- 可以直接在移动端浏览器中唤起微信支付
- 适用于所有支持H5的浏览器环境
- 无需用户下载APP,支付流程简单
缺点
- 需要平台审核,流程较复杂
- 接入产品需要通过官方审核
- 支付体验可能不如小程序流畅
- 需要处理H5页面的兼容性问题
Native支付(扫码支付)
商户生成二维码(内容为 code_url),用户用微信“扫一扫”完成支付
优点
- 适用于PC端或线下场景,用户扫描二维码完成支付
- 不需要用户安装APP,只需微信APP即可
- 适用于电商网站、线下门店等场景
- 支付流程简单,用户操作便捷
- 无需服务号或小程序,接入相对简单
缺点
- 需要商户生成二维码,用户需要手动扫描
- 无法直接在浏览器中完成支付,需要跳转到微信APP
- 对于PC端用户来说,需要微信APP支持
- 无法获取用户openid,不利于后续营销
- 用户操作步骤较多(打开微信->扫描->支付)
适用场景
| 支付方式 | 适用场景 | 认证要求 | 费用 | trade_type |
|---|---|---|---|---|
| 小程序支付 | 小程序内支付 | 小程序认证 | 300 | JSAPI |
| JSAPI支付 | 公众号内支付 | 公众号认证 | 300 | JSAPI |
| H5支付 | 手机浏览器内支付 | 开放平台开发者认证 | 300 | MWEB |
| Native支付 | PC网页支付、线下扫码支付 | 公众号认证 | 300 | NATIVE |
| APP支付 | APP内支付 | 开放平台开发者认证 | 300 | APP |
PC和线下扫码基本上一致,均是使用微信扫码支付。