个人网站即时到账收款解决方案

[更新 2018-10-22]

支付成功的状态码变更了,PAID变为了TRADE_PAID,建议兼容处理,详情看兼容代码

[更新 2018-09-05]

收到有赞云邮件(如下),交易相关的消息和接口已更新且旧版本即将下线,这个Demo代码长久没有更新,也借此机会更新一把。

有赞开放平台已正式推出V3版推送服务,原有的商品V1和交易V1/V2版推送 ,包含的内容较单一,无法满足不同业务场景下的开发需求,如您正在使用,请在9月底之前完成V3版本切换,切换期后,我们将停止老版本的维护和开放。
同时,推送的数据采用最新的订单详情4.0接口,开放平台推出了交易4.0接口,后续也会停止对老接口(3.0版本)的维护,请开发者在9月底之前完成交易接口的对接切换。

新增的消息版本和相关接口列表:
1. 交易消息V3
2. 订单详情4.0

升级

  1. 后台消息推送配置 ,勾选交易消息V3的你需要的消息事件。对于创建二维码收款的,至少要勾选交易支付(支付完成会收到该消息, 原PAID事件)。如果需要等待支付的状态, 需要勾选交易创建(用户点击支付但未付款状态, 原WAIT_BUYER_PAY事件)。其他消息可自行根据实际需求进行勾选。
  2. 同样是在消息推送配置页面,去掉交易消息的所有勾选,因为已经勾选了V3的且V1和V2即将废弃,没有接收的必要了。
  3. 对于之前收到订单支付回调消息再取订单详情拿到qr_id的逻辑,可以直接移除掉。qr_id可以从回调消息中直接获得(测试发现,并不是所有消息中都有该字段,但测试中也同样注意到PAID事件一定会有该字段),该字段位于回调消息中的msg.qr_info.qr_id
  4. 其实这次升级很简单的,但是一定要测试过再在生产环境跑哟~

有什么问题可以留言交流…


个人开发者要想给自己的产品(网站、APP等)接入支付宝、微信的即时到账接口,是有一定的门槛的,一般是需要公司资质,这也就阻碍了不少个人开发者的兴趣。市面上也有一些第三方聚合支付,但往往费率较高或是信赖度低。本文要介绍的就是一种个人可以接入的基于有赞云的解决方案。

前置条件

注册开发者

只需在 有赞云 进行个人开发者身份注册就可以了。

店铺授权

  1. 创建可授权店铺: 微商城店铺 或者 有赞微小店 都可以。前者面向商家提供功能完善的线上商城,后者面向个人提供分销商品和自营工具可免费使用;
  2. 应用授权: 创建完店铺后,再登录到有赞云控制台创建自用型应用并授权刚创建的店铺;
  3. 设置推送网址: 在有赞云控制台-推送服务 进行推送网址的设置,有赞云会将支付信息推送到这里设定的网址; 至此,完成前置条件,下面是开发相关的。

开发

依赖接口

依赖有赞云的两个接口和消息推送. 1. 创建收款二维码 2. 获取单笔交易信息 3. 交易信息推送

简要流程

简单介绍下开发流程/思路。
1. 开发者在需要向用户展示收款链接或二维码的时候,调用创建收款二维码接口(可创建可多次使用和仅能使用一次等多类型二维码),接口返回二维码信息(唯一id、链接和二维码),开发者需要自行创建用户身份和该二维码之间的关联关系; 2. 当用户扫码后点击微信支付/支付宝支付,会收到WAIT_BUYER_PAY等待支付事件消息,待用户完成支付会收到TRADE_SUCCESS支付成功事件消息(更多事件消息可点击交易信息推送进行了解); 3. 开发者收到的交易信息中的id可理解为订单号,接着用此id调用获取单笔交易信息接口,该接口返回的信息TradeDetail 比较多,我们需要关心的是qr_id字段,对应到第一步创建的收款二维码的唯一id,开发者即可关联到用户的支付状态并进行后续处理; 至此,了解了开发的流程,下面是一个简单的Demo。

Demo

基于上述分析,开发了一个简单的收款Demo。
前端:HTML5 WebSocket + Vue
后端:PHP + WorkerMan
源码整理后会尽快开源: GitHub

点此来体验一把~

欢迎留言交流~

Other

我的博客即将搬运同步至腾讯云+社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?invite_code=3fenbtxppeck4