阅读此文的前提: 我认为你有过或正在开发微信支付的经验

基本框架

日常开发能用到的微信支付分为: 普通商户模式&服务商模式

普通商户模式适用具备独立开发能力的商户, 可以根据需求, 定制各种支付场景,普通商户进行支付后, 资金不会冻结, 钱款会直接进入到商户账上

服务商模式适用于本身为三方平台身份的服务商, 商户在三方平台上架产品, 此时结算需要使用服务商能力, 根据产品绑定的不同 特约商户ID(商户自己的 ID), 钱款会流向不同的商户账户, 另外, 资金进账后会冻结, 需要服务商调用分账&完结接口, 解冻商户入账的资金

微信支付(JSAPI)和微信公众号有强耦合性, 如果想用微信支付, 必须开通微信公众号, 因为 APPID 是必传参数, 另外, 不同的支付账户可以授权给同一个公众号 进行支付权限(比如, N 个普通商户需要在一个公众号下收款[非服务商模式])

在我看来, 微信支付是一种树形架构, 最顶层为公众号(支付号绑定的公众号, 支付号授权的公众号), 服务商号(mch_id), 特约商户号(sub_mch_id)

常见的误区

  1. 普通商户和服务商模式 传递的 APPID 是有区别的, 普通商户模式 APPID 传递的是普通商户授权公众号的 APPID
    而服务商模式 APPID 传递的是服务商支付号的 APPID (因为子商户已经授权了服务商代理支付, 所以不再需要传公众号 APPID 了, 而且服务商是在自己授权的公众号下支付, 整体是拓扑结果的架构)

  2. 分账比例不能等于子商户配置的最高比例, 我在实际操作过程中, 遇到过分账比例使用最大(20%)时, 虽然计算的值没错, 但是微信侧会返回超出最大分账比例的错误提示

  3. 点金计划需要自己实现支付成功页面, 如果商户(普通商户 特约子商户)开通了点金计划, 那么需要自定义返回页面, 否则按返回键, 会闪退, 很恶心, 原来的 JSAPI 的 callback 前端回调接口不好用了(如果开启点金计划)
  4. 商品名称的长度限制, 看好文档提示, 不要无限制的长

  5. 分账时需要处理的一些异常 退款, 支付中等

  6. 分账时遇到的无分账权限的原因 未使用添加分账人的接口, 分账需要先调用添加分账人接口, 然后才可以调用分账接口, 否则会提示无权限

  7. 创建预支付订单的时候, 如果几个元素不变(金额 appId 订单号), 是可以一直调起的, 不必担心订单号重复的问题

  8. 微信支付的开发配置功能只有超管才可以操作, 另外, 更换超管比较费事费力, 尽量把最高权限集中在一个稳定人员身上

  9. 一个支付号配置包括: 安全域名绑定, APPID 的授权, 证书的申请以及 secret 的设置

持续更新中….


相关文章:
⤧  上一篇 罗织经译卷 ⤧  下一篇 华为鸿蒙 2 发布会观后感