专栏首页Java技术大杂烩了解微信/支付宝支付的相关概念

了解微信/支付宝支付的相关概念

微信

名词解释:

  • appid:公众号、小程序、移动应用唯一标识
  • mchid:商户申请微信支付后,由微信支付分配的商户收款账号。
  • openid,微信用户在公众号 appid 下的唯一用户标识,可用于永久标记一个用户
  • sub_appid:子 appid,服务商模式/银行服务商模式起作用
  • sub_mch_id:子商户号, 服务商模式/银行服务商模式起作用
  • sub_openid:子 appid 下的唯一标识
  • channel_id:服务商模式下,微信支付分配给收单服务商的ID

微信支付接入可以分为

  • 普通商户
  • 服务商模式
    • 普通服务商
    • 银行类服务商

银行类服务商与普通类服务商的最大区别在于,普通类服务商不能清算资金,微信将会直接把资金清算给商户账户。

而银行类服务商是可以为下属特约商户清算资金的。

现有银行类服务商实际上是通过银联/网联转接微信

银行服务商申请资质要求较高,一般只有银行、支付机构可以申请成为银行类服务商。两者申请要求如下:

官网地址: https://pay.weixin.qq.com/partner/public/home

普通商户

普通商户模式下,商户需要向微信申请 appid 以及 mchid。接入微信普通商户版本的支付接口。

文档地址:https://pay.weixin.qq.com/wiki/doc/api/index.html

JSAPI 支付模式,需要提前登陆授权,需要获取用户的 openid。三者关系如下图:

同一个 mchid 可以绑定多个 appid,两者可以是同一个公司主体,也可以不同公司主体(限定资格开放)。mchid 最多可以绑定 50 个 appid

同一个 appid 又可以被多个 mch id 绑定,不过需要注意的是,mchid 费率必须不相同。

所以 appidmchid 原则上是多对多的关系。

这里需要注意,微信清算资金实际上是基于 mchid。即同一个 mchid,使用多个 appid 做交易,第二天资金是清算到 mchid 绑定的商户的账户。

服务商模式

第三方服务商向微信申请自己的 appid,并通过 appid 申请服务商mch_id,以此获得微信支付服务商能力。再通过服务商 mch_id 为所服务的特约商户申请创建微信支付 sub_mch_id,创建好的 sub_mch_id 默认和服务商的mch_id 建立父子授权关系。银行服务商模式可以通过接入入驻特约商户,而普通服务商只能通过页面入驻。

服务商模式下,可以配置特约商户使用自己申请 appid,传入 sub_appid 字段。

官方解释: sub_appid 可为公众号,**APP **或小程序的 appid,服务商在服务商商户平台可手动为每个特约商户绑定与渠道商主体或特约商户主体一致的公众号,APP或小程序的appid;针对小程序,还支持绑定服务商主体的小程序 appid。目前最多配置5个. 手工配置路径:”服务商商户平台-服务商功能-子商户管理-开发配置-特约商户appid 配置

服务商模式下使用 JSAPI,若特约商户想基于自己 appid 做交易,可以基于特约商户 appid 登陆授权获取 openid,然后传入 sub_appidsub_openid

若没传入,只能使用服务商 appid 登陆授权,获取 openid

总结

普通商户模式,需要商户自己开发团队对接微信。而服务商模式,一般有服务商开发自己的收款功能,特约商户入驻即可使用,无需二次开发,适合个人/小微企业。另外服务商也可以提供包装之后的接口,有开发的能力也可以接入。

微信帮助文档

https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=7_10&index=1#

https://pay.weixin.qq.com/static/pay_setting/appid_protocol.shtml

支付宝

名词解释:

  • app_id:支付宝分配给开发者的应用 ID
  • 商户 uid/pid:支付宝商户号
  • buyer_id:买家的支付宝唯一用户号(2088开头的16位纯数字)
  • org_pid:银行服务商模式下,收单机构(例如银行)的标识,填写该机构在支付宝的 pid
  • merchant_id,银行服务商模式下,特约商户入驻成功之后,分配商户号

支付宝接入分为:

  • 普通商户
  • 服务商
    • ISV:独立软件开发商
    • 银行类服务商

支付宝银行类服务商与微信类似,服务商可以自己清算资金。

不过支付宝的这个模式比较简单,服务商只需要通过后台接口入驻特约商户成功,得到支付宝分配的商户编号。交易时上送商户编号与机构编码即成功。

普通商户

普通商户需要向支付宝申请入驻,将会得到商务号。接着需要创建应用得到 appid,上架成功后,需要进行签约。签约成功之后,这个 appid 与商户号建立唯一的绑定的关系。

同一个商户号可以绑定多个 appid,但是同一个 appid 只能绑定唯一个商户号。

其实从支付宝的接口也可以看出,支付宝只要求传入 appid,后台肯定是跟库 appid 查找对应的商户号。 这点虽然没有微信灵活,但是支付宝理解起来简单。微信 appidmchid 多对多的关系,有点复杂。

银行类服务商

这里服务商只接触过银行类服务商,其他类型服务商不太清楚。

有接触过支付宝 ISV ,欢迎留言讨论

银行类服务商交易接口与普通商户模式相比,仅仅多出了merchant_id org_pid,其他信息与普通商户的接口一致。

总结

同微信。

ps:虽然支付宝官网上文档倒是挺多的,但是就是没有找到说的很明白的文档。。。 这一点微信还是挺舒服的,示例图画的很清晰,赞一个 ღ( ´・ᴗ・` )比心。

帮助资料

https://docs.open.alipay.com/200/105314/

https://opendocs.alipay.com/isv/10272/ru478a

本文分享自微信公众号 - Java技术大杂烩(tsmyk0715)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-05-24

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Mybatis 解析 SQL 源码分析一

    在使用 Mybatis 的时候,我们在 Mapper.xml 配置文件中书写 SQL;文件中还配置了对应的dao,SQL 中还可以使用一些诸如for循环,if判...

    Java技术大杂烩
  • Spring 事务使用详解

    什么是事务?根据 维基百科事务 介绍,数据库事务(简称:事务)是数据库管理系统执行过程中的一个逻辑单位,由一个有限的数据库操作序列构成。简单来说,事务就是将一系...

    Java技术大杂烩
  • Mybatis Mapper.xml 配置文件中 resultMap 节点的源码解析

    在上篇文章 Mybatis 解析 SQL 源码分析一 介绍了 Maper.xml 配置文件的解析,但是没有解析 resultMap 节点,因为该解析比较复杂,也...

    Java技术大杂烩
  • 你需要了解的Salesforce Lightning Editions

    当Salesforce去年发布全新的Lightning Experience时候,这是一个大新闻,相信一定有很多人已经急于放弃原有的界面来使用Lightning...

    臭豆腐
  • 什么是移动支付服务商?为什么需要服务商?

    “新零售”的核心是“以人为本,数据驱动,重构人货场”,人的需求和数据的效能正在以前所未有的力量改变包括零售行业在内的所有商业。

    创匠科技
  • Python实现打印量统计

    统计每月每台打印机的打印量,打印量已生成CSV文件报告,可直接对该文件分析即可。

    py3study
  • 海量数据处理问题知识点复习手册

    https://blog.csdn.net/v_july_v/article/details/6279498

    后端技术漫谈
  • 厉害了!Python+matplotlib制作8个排序算法的动画

    深刻研究排序算法是入门算法较为好的一种方法,现在还记得4年前手动实现常见8种排序算法,通过随机生成一些数据,逐个校验代码实现的排序过程是否与预期的一致,越做越有...

    double
  • 系统权限服务创建桌面进程(进程也是系统权限)

    为什么要创建系统权限服务.首先.强调权限一说. 我们创建的系统服务默认是系统权限的.然后系统权限(System)创建我们的进程.那么也是系统权限.我们的进程如果...

    IBinary
  • 牛顿迭代法与二分法计算平方根

    因为不是科班出身,所以即使编程一段时间也时常感觉自身基础知识非常不扎实,于是在最近开始补习算法和计算机理论的基础知识。

    Originalee

扫码关注云+社区

领取腾讯云代金券