云端模式集成
介绍
在商家商店中,如果POS application是基于网络的,则需要与云服务器实时交互,因此更方便选择云API集成解决方案。具体流程如下:
- POS application向POS server发送订单信息(包括订单id、总金额…)和终端sn。
- POS server通过OpenAPI向CodePay Gateway发送推送订单请求。
- CodePay Gateway接收到订单信息并预创建交易,然后向CodePay TMS发送推送设备消息请求。
- CodePay TMS通过物联网通信协议向Payment terminal推送消息。
- Payment terminal接收到消息并唤醒CodePay Register应用程序的结账组件以处理交易信息。CodePay Register将银行卡信息/移动钱包用户支付凭证打包到交易数据中,并向CodePay Gateway发送支付请求。
- CodePay Gateway处理交易包并发送到支付网关/获取/处理器/银行。
- 支付网关/获取/处理器/银行对CodePay Gateway的响应。
- CodePay Gateway同时处理:
- 将交易结果响应到CodePay Register应用程序。
- 向POS server发送异步交易结果请求。(如果失败,CodePay Gateway将重试多次)
- POS server将交易结果通知给POS application,并在屏幕上显示支付结果。
序列图
1. 将订单推送到终端
- 商家POS application创建订单并向POS server请求付款。
- POS server请求Create Order API将订单推送到指定的支付终端。
- CodePay Gateway创建交易状态为9的预付款订单,在此状态下可以取消付款。请通过Close Order API取消。
- CodePay Gateway请求CodePay TMS将订单推送到指定的支付终端。
- CodePay TMS接受订单推送请求并返回成功响应。
- CodePay Gateway将使用交易编号、消息id和其他信息响应POS server,POS server应将此信息存储为交易凭证,以备将来对账或其他操作需要。
- POS server开始查询订单的交易状态,直到交易成功或关闭Query Order API。
- POS server响应POS application,重定向到订单等待支付结果界面。
2. 终端支付
- CodePay TMS是一个为支付终端管理物联网设备的云服务CodePay TMS通过MQTT与终端建立长连接通信。CodePay TMS从CodePay Gateway接收到支付指令后,将支付指令消息发送到指定的支付终端,并唤醒CodePay Register,启动支付处理流程和接口。
- CodePay Register接收来自持卡人或移动钱包的支付数据,并请求CodePay Gateway处理支付。
- CodePay Gateway接收付款请求,并将订单状态更改为待付款。此时,POS server无法调用订单取消API关闭订单。
- CodePay Gateway请求支付网关/获取/处理器/银行等支付处理机构处理银行卡支付或移动钱包支付。
- 对交易结果的响应。
- 将本地数据库的事务状态修改为成功或失败。
- 将订单支付结果异步通知给POS server。POS server应接收通知并验证通知数据,并修改本地订单交易状态。有关详细的处理过程,请参阅Notification of trading results。
- CodePay Gateway将支付结果返回给CodePay Register。
- CodePay Register在屏幕上显示付款结果,打印收据、发送账单等,交易过程结束。
开发指引
访问我们的API
请参阅下表中的云API,它们提供多种语言的SDK。有关更多信息,请访问SDK章节。
访问这些API需要提前获取一些参数,还需要了解更多关于API访问的规则,请参阅支付网关集成指南。
API列表 | Type | 说明 |
---|---|---|
创建订单 | API | 通过此api提交付款订单 |
关闭订单 | API | 通过此api关闭未付款订单 |
查询订单 | API | 通过此api关闭未付款订单 |
查询退款 | API | 通过此api查询负面交易订单(采购取消/预授权取消/退款/预授权完成取消/预认证完成退款)的交易结果 |
交易结果通知 | Webhook | 交易完成后,通知商家,告知商家交易结果 |
应用程序安装和设置
在此之前,请在Payment terminal上安装应用程序“CodePay Register”,启动应用程序,依次点击“Settings ->General ->ECR Hub”。将连接模式设置为“Cloud”,如下图所示:
返回主界面,成功连接和失败连接的示例图像如下: