专栏名称: 凤凰牌老熊
互联网金融,软件架构,资深Java工程师
目录
相关文章推荐
芋道源码  ·  Redission 分布式锁原理分析 ·  2 天前  
芋道源码  ·  微服务架构:10个实用设计模式 ·  3 天前  
芋道源码  ·  为什么微信QQ故障会被定为一级事故? ·  3 天前  
芋道源码  ·  细数一些 JDK8 踩过的坑,说多了都是泪 ·  6 天前  
51好读  ›  专栏  ›  凤凰牌老熊

20170817-微信支付流程介绍

凤凰牌老熊  · 公众号  · Java  · 2017-08-19 17:52

正文

一、分享背景

大家好,今天分享的是微信支付基础版,因为微信支付内容比较庞大。会分几期给大家,由浅入深的讲解。今天,先分享一些 微信支付的基础部分 。

1 微信支付的基本认识

1.1 什么是微信支付?

日常生活中,微信支付已经普及,那么微信支付到底是啥?
微信支付是集成在微信客户端的支付功能,微信支付结合微信公众账号,微信商户平台全面打通O2O生活消费领域,提供专业的支付服务。

1.2 微信支付的起源

回想一下,微信支付是什么时候在我们的生活初露头角的,应该是在2013、2014年,互联网热潮万众创业那2年出现的。

最早的微信支付是服务于公众号的。向有出售物品需求的公众号提供推广销售、支付收款、经营分析的整套解决方案。商户通过自定义菜单、关键字回复等方式向订阅用户推送商品消息,用户可在微信公众号中完成选购支付的流程。商户也可以把商品网页生成二维码,张贴在线下的场景,如车站和广告海报。用户扫描后可打开商品详情,在微信中直接购买。

一句话:最早就是为了服务公众号里卖货收钱的。

1.3 XX和微信支付的关系

最早做微信生态里的商城搭建,提供SaaS软件服务商提供强大的微商城和完整的移动零售解决方案。

所以,自然而然的要帮商家解决在微信环境里收款问题,是最早的一批微信支付内侧服务商,大部分的交易来自微信。一直致力于帮助互联网时代的生意人管店、管货、管客、管钱。
所以,没啥关系。

2 微信支付基础账户体系

微信支付基础账户体系可以简单的理解为上图,大的分为普通商户号及服务商商户号。

a. 普通商户号:10位 举例:129909120x

b. 服务商商户号/子商户号:10位 举例: 1400599992

所以,其实他们是一套账号体系内的。根据角色不同进行了区分。
基于以上,微信支付有了现在的业务模式体系。

3 微信支付业务模式体系

分为两大类:普通商户直连模式和服务商模式。

服务商模式下,又分为3种:拓客类服务商(普通服务商)、开发类服务商(普通服务商)、银行服务商(银行服务商)

最早的时候,微信也尝试过地推来引流商户使用,但效果不明显。

拓客类服务商,最早就是地推商家使用微信支付,效果不好,且初期商户要搞一些运营活动,大转盘、抽奖等都支持不了。所以,流失也会大。 
后面就提倡向有一定开发能力,可以维护商户日常运营或提供软件服务的服务商转变。

但是实质上带来微信支付快速崛起的是银行服务商。

微信支付,其实并没有强大的地推团队。微信支付可以迅速崛起就是依靠银行服务商,银行帮微信支付倒流高质量的商户,微信支付把钱结算给银行,银行再结算给商户。

4 银行如何发展商户成为微信的商户

4.1 银行服务商模式介绍


银行涉及到微信支付,就会涉及到信息流和资金流。
现在越来越多的银行也在做聚合支付就是为了接入这些第三方支付。通过把原先银行自己的商户转化成微信支付的商户,来向上游的商户业务靠近,接管更多的营业款,更多的商家经营数据,帮助商家成长的同时,也为银行带来来更多的账面资金流水。

4.2 银行发展服务商的优势

  • 清结算资质

  • 自有风控部门

  • 银行品牌认可度

  • 海量的企业及个体工商户资源

  • 其他隐形资源

在这样的银行背书下,微信支付发展的速度非常快。

4.3普通服务商和银行服务商有什么在账户体系上的区别呢?

上图介绍过,银行服务商 有清算资质。所以,微信支付把钱结算给银行之后。银行还可以再进行清分,结算给不同的商户。
因为,这块比较内容比较多。我会在下次专门有一章节讲解这块内容。

5 微信支付场景

普及一下微信支付6种基础的场景

5.1 微信公众号支付

(1)微信公众号介绍

微信公众号支付:仅在微信内,使用微信浏览器网页内调用JS_API发起微信支付。

用户在公众平台上创建一个公众号(服务号)应用,通过该应用申请对应的微信支付商户号,原先在公众平台里配置支付授权目录(8月1号之后迁移到商户平台里配置了)。

非有效注册的URL:支付授权目录没有在对应的商户号下面进行配置,无法发起。(最早也是为了规范公众号收款,一个商户号不会被用于多个不同支付域下发起的商户进行收款)

因为,最早的微信支付是很难申请的流程繁琐,但是微商在微信里要做生意。这水后就容易出现拿别人商户号收钱的问题。
所以,通过公众号申请的微信支付商户号都是绑定的。

(2)常见问题

引发的常见问题跨号支付:跨公众号支付号支付、串费率渠道(线下费率通道的商户号用于公众号支付)

跨号支付定义简单理解,用其他公众号所申请的微信支付商户号进行收款。

5.2 微信H5支付

5.2.1 微信H5支付介绍

微信H5支付:非在微信的第三方浏览器内的网页上,发起微信支付。

5.2.2 微信H5支付常见问题

引发的一些问题:被随便使用在除微信外的第三方浏览器,安全性较难校验,需要单独向微信申请
现在从官网申请到的APP支付(即通过SDK调起微信APP),如果适用在公司只有几款APP的情况,完全没问题。但是如果一家公司有几十几百款APP的话,使用APP支付就不合适了。(APP支付要求申请APPID,但每家公司主体只能申请10个APPID,如果该公司有100款APP,意味着要注册10家公司,而H5支付是不需要APPID的)。并且每次更新都需要App发版其实成本比较大。

5.2.3 微信H5支付如何申请?

微信官网现在只是放了H5支付的文档,但是并没有开放H5支付的申请,所以一般的公司目前从微信官网是无法申请H5支付的,那么从哪里可以申请到呢?

1、银行,比如中信银行、民生银行、兴业银行。

2、银行受理机构,比如这家刚刚卖了20亿的威富通。

5.2.4 微信拓展商户的发展策略
(1)为什么通过银行或者受理机构可申请,受理机构是什么?

这与微信官方发展策略有关,微信在与支付宝竞争中,采取的与支付宝截然不同的政策,即通过银行拓展商户。

微信拓展商户,除了从官网获客外,还通过以下三种方式:

普通代理,现在在官网仍可以申请到,以线下主扫和被扫居多。这类普通的拓客服务商,因为没有ISV技术研发能力,没法很好的服务商户的营销开发等需求,并没有给微信带来太多的商户。普通代理在开始的时候,发展了很多二清代理模式,现在差不多都被清掉了。

第三方支付转接结算模式,即由第三方支付为商户清算。严格来讲,违规做法,第三方支付不能接第三方支付。现在这种基本也找银行转清了
银行转接清算模式,由银行发展商户,银行负责商户的进件与审核,清算方面,财付通清算到银行后,由银行清算给商户。

(2)受理机构是什么?

银行的软件服务商,具体来说,就是银行要发展商户,需要一套系统用来处理商户的进件、交易转接、商户对账、清结算等。银行的系统早期都是服务金融机构的,所以在系统无法承担大批量的支付请求笔数。当然不会自己去开发,就和机构合作,由机构开发,二者共同发展商户,两方分润。

(3)银行和受理机构分别有哪些?

银行:

民生,最出名的厦门民生清结算中心

兴业,福州兴业和广州兴业做的非常好。

受理机构:
最大的就是威富通了,财付通背景,威富通为多家银行提供系统,20亿已卖。

5.2.5 微信H5支付补充说明

微信的H5支付分2种,封装的SDK、纯H5,封装的SDK跟APP支付类似,纯H5既能用在wap网站上(非微信浏览器),也可以用在APP上。

H5支付用于非微信浏览器,在IOS上仍体验不佳,具体来讲就是无法自动回调,支付结果需要通过轮训查询。支付完成后会停留在微信中,点击返回iOS会自动打开Safari浏览器打开回调地址。

例如:顾客A在XX精选App中选择购买商品使用微信支付,付款成功后,点击返回,自动打开了浏览器跳转到支付回跳页。消费场景从XX精选App去到了Safari浏览器中,打断了整个消费体验。

5.3 微信APP支付

单独在微信开放平台注册App获取appid后,申请开通微信App支付得到商户号可以使用。使用微信支付SDK,潜入到第三方App中,通过微信支付SDK唤起微信进行微信支付。

5.4 微信条码支付

被扫支付,收银员使用条码枪扫描顾客的二维码进行支付。

5.5 微信扫码支付

使用摄像头扫描用户的二维码进行支付。
用户在微信中长按识别二维码进行支付,这样可以应用解决前面的跨号支付问题

5.6 微信小程序支付

在小程序的标准控件库,搭建小程序。然后使用小程序发起微信支付。本质上都是JS-API调用(和公众号支付一个接口),但是没有支付授权目录的限制。

那么,微信支付最近都在做啥?下一个风口?
拓展海外市场,全面支持微信小程序支付(内部了解到会有很多种模式的支撑)

微信小程序准备放闸泄洪,进军移动电商了。了解到,微信正内测商品搜索功能,用户在“搜一搜”中输入商品关键词,搜索列表会直接呈现所有以小程序为载体的商品结果,而每一个搜索结果都可以直接调转到小程序商品详情页。

微信现在拥有9亿用户,微信小程序能够通过检索连接人与商品,其背后蕴藏的巨大想象空间和流量势能就会瞬间爆发,庞大的微商平台优势带来的巨大红利将很快催生一个全新的社交的电商模式。

小程序可以长按图片二维码识别。

最后附上几个微信支付小程序,大家可以体验一下。

微信小程序名:厦门喵

二、Q&A

Q:封装的SDK 是用原生H5封装吗

A:是的

Q:装的SDK会出现你说的原生H5在IOS上的问题么

A:待回复


Q:请教一下,银行和服务商拓展的子商户有什么区别呢?还是没太理解。

A:获得的微信支付场景权限不同。进件入网门槛也不同。


Q:请问一下,网联成立后,支付机构备付金都要放到网联吗?

A1:发文来看,是的

A2: 备付金不会放到网联,但是可能会放到人民银行,网联不碰资金

Q:备付金到网联就改变性质了,网联就是个消息存储转发

A:是的,网联是消息转发和清结算平台,本身不触及资金

三、自由话题讨论

1 信用卡账户属性

Q:请教一下各位i,信用卡账户算一类银行账户吗?

A1:信用卡不算任何账户

A2:信用卡账户理论上应该是归到I类账户中,目前三类账户具体的细则还没有具体到业务,所以这一块比较难以判定,但是从限制条件上可以推断应该归属I类账户。主要是现在I类账户在细则里并没有指定说是结算账户或者具体到某一类业务。细则说的是全功能账户,如果信用卡账户被归为II类或者III类账户,那么就等于对信用卡业务做了极其严格的限定,对于消费金融产业的影响肯定是极其严重的

A3:第十五条
个人银行结算账户是自然人因投资、消费、结算等而开立的可办理支付结算业务的存款账户。有下列情况的,可以申请开立个人银行结算账户:
(一)使用支票、信用卡等信用支付工具的。
(二)办理汇兑、定期借记、定期贷记、借记卡等结算业务的。
自然人可根据需要申请开立个人银行结算账户,也可以在已开立的储蓄账户中选择并向开户银行申请确认为个人银行结算账户。
存款人凭个人身份证件以自然人名称开立的银行结算账户为个人银行结算账户。
个人认为信用卡不算一类账户,银行结算账户都是活期存款账户。

中国人民银行上海总部,各分行、营业管理部、省会(首府)城市中心支行,深圳市中心支行;国家开发银行,各政策性银行、国有商业银行、股份制商业银行,中国邮政储蓄银行:

为改进个人人民币银行结算账户(以下简称个人银行账户)服务,便利存款人开立和使用个人银行账户,加强银行内部管理,切实落实银行账户实名制,现就有关事项通知如下:

A4:这个是分类管理的通知原文的内容

A5:嗯,他把一类户和信用卡并列,更加说明信用卡不是一类账户吧。而且央行文件里上来就说一二三类户划分前提是人民币结算账户,人民币结算账户的定义是活期存款账户。

Q:但是我觉得也不可能是II类和III类,否则逻辑上说不通,如果按照这个说法的话,信用卡账户只能算开设在银行的信用账户,但是并不算银行账户?

A1:对,信用卡不属于一二三类账户,不算银行结算账户

A2:仔细查阅了一下细则,信用卡账户应该是单独算的

2 支付路由切换问题

Q:上回说的支付路由设计,有个提问的点,如果海量请求进来,如何做到让用户无感知的切换,就是用户一个渠道支付不成功可以换另外的渠道

A1:这个要看支付渠道是代扣还是快捷,现在能做得比较好的无感切换就是在不发短信的代扣渠道之间做切换,有重复扣款和因为备注信息不一致导致的投诉

A2:这个风险还停大的,你得判断是超时,还是真实的支付失败,如果超时,后面会补单成功,会出现扣两次的情况

A3:对,支付路由本身对于返回错误信息要做区别,余额不足这种就不去做重试了

A4:代扣,我也思考了这个问题,应按照错误码来做不同的处理,来判断是否重复换通道发起代付

四、近期职位

以下职位,有兴趣的同学,可以微信联系老熊,或者在本条目下留言(不公开)。

1. 今日头条

  1. 清结算产品经理,熟悉清结算业务,负责账户系统、清结算系统、对账系统、会计系统的功能设计、优化;

2. 银杏树公司

  1. 产品经理,熟悉银行对公业务,能组织相关软件产品的需求调研和项目开发组织,有区块链技术背景更优先;

  2. 行业售前专家,对象是行业B2B平台,熟悉B2B交易场景和供应链金融,能写能讲;

  3. 软件开发高级工程师,熟悉java后台开发和数据库技术,有银行后台应用开发经验的优先


苹果用户长按二维码赞赏支持下群管理工作吧:



感谢您对本文的关注,如需要及时收到来自“支付产品技术交流群”的最新消息,请扫码关注“凤凰牌老熊”的微信公众号。本文档来自“支付产品技术交流群” 的聊天记录整理,由志愿者整理并发布到本网站。