乐于分享
好东西不私藏

璞奇APP对接微信支付

璞奇APP对接微信支付
Apple的体系,支持了订阅、通知、认证、分发等等,为开发者提供的能力很完整,不得不服它的生态能力。
但是只依赖Apple显然是不明智的,但拥抱其它平台,事情就变得有点复杂起来。
本文记录安卓、Web下支付能力对接微信支付的过程,尝试一步一步将IOS版本的功能体验扩展到其它平台下。

一.开通商家号

  1. https://pay.weixin.qq.com/  接入微信支付
  2. 提交审核资料

要确定在哪里使用到:

先选择当前需要的,后续可以再添加。

查找应用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 证书时下载的压缩包内

  1. 商户平台 → API 安全 → 商户 API 证书 → 申请 / 下载证书
  2. 解压后得到文件:apiclient_key.pem
  3. 用文本编辑器打开,复制全部内容(含 -----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元验证通过。


一键关注 👇🏻 交流真实OPC/OPT实践
点击“阅读原文”下载ios版璞奇APP,体验不一样的修炼之旅

相关学习资料