请求/响应交互模式

请求/响应模式是最常见的一种交互模式。在这种交互模式下,外部平台向翼码平台提供的HTTPS URL,发送请求数据,并同步等待翼码平台处理完毕之后,返回的响应数据。

处理流程

交互模式 - 图1

流程描述

交互模式 - 图2
翼码提供给商户的4个接口:绑定、支付、查询、退款/撤销。每个接口都有其特定的使用场景。绑定是后续交易的前提;支付是核心业务;而合理利用好查询和退款/撤销接口,可以有效的避免繁琐的对账工作。
按照支付宝和微信支付的建议,遇到订单状态为未支付(9998)、网络异常等情况,需要通过查询接口来确定订单的最新状态。
目前支付宝和微信支付提供了查询接口,翼码封装了这些查询接口,形成了统一的查询接口。商户只需要调用翼码的查询接口即可获得对应支付交易的最新状态。
支付交易返回成功或者失败的时候,一般可以认为支付交易的结果是明确的,返回0000为成功,9990为失败,这种情况下一般无需调用查询接口。
支付交易返回超时(接口返回码9998,需密支付等待付款的情况也为9998)或其他异常情况,查询接口调用间隔为5秒,调用的总次数建议为12次。
查询交易调用超过12次后依然返回9998,请务必立即调用退款/撤销接口进行支付交易订单的关闭,这点很重要,因为如果没有调用退款/撤销接口,那么消费者有可能在超过1分钟后去支付该订单,而商户在此之后没有进行查询的话,
就会导致商户的订单为“未支付”,而客户实际上已支付,给商户的对账造成很大的麻烦以及加大了客服的解释工作。
对支付宝和微信异常导致了客户实际上支付成功但是返回给翼码/商户的为支付失败、以及退款成功但是返回给翼码/商户的为退款失败,
上述情况非常罕见,但是也不排查可能性,这时依旧需要调用查询接口来确定最新的状态。
交互模式 - 图3

终端绑定交易流程描述

1.收银系统向翼码平台发起终端绑定交易,绑定报文中一些重要参数:

商户号——由翼码平台提供。

系统号——由翼码平台提供(同一服务商下属多商户可共用一套系统号与密钥)。

终端号——收银系统上收银机或终端的编号。

门店号——收银系统上收银机或终端所在门店编号(若收银系统没有门店概念,即一个门店仅有一个终端不存在多终端的情况,门店号可与终端号相同)。

注:商户号、终端号、门店号会在翼码平台确定一台唯一终端,绑定成功后,在支付、查询、撤销、日结等交易报文中填入相应参数即表示此终端做出的交易请求。
2.翼码平台在接收到收银系统绑定终端请求后会进行报文参数校验、商户权限校验,校验通过后根据商户号、终端号和门店号的组合查询是否绑定过终端(即参数所对应的翼码终端是否存在),若绑定过终端则返回交易成功给收银系统。若尚未绑定过终端则进行绑定终端处理,在翼码平台上开设所传入参数对应的终端,并返回信息给收银系统。
3.收银系统根据响应码判断终端是否绑定成功:
(1)当接收到的响应码为“0000”时表示交易成功,即商户号、终端号、门店号对应的翼码终端开设成功。
(2)当接收到的响应码为“9990”时表示交易失败,可根据响应码解释进行相应处理,本次绑定交易失败需重新发起绑定。

支付交易流程描述

1.收银机结算后生成订单,向用户展示订单信息。
2.用户确认订单后,打开支付宝、微信等支付工具的条码支付功能在手机屏幕上显示出相应支付条码。
3.营业员使用扫码枪等工具扫描用户手机上的付款码,向收银系统发起支付请求。
4.收银系统收到收银机请求后,组装对应报文向翼码平台发起支付请求,等待返回报文。
5.翼码平台在接收到收银系统的请求后会进行报文参数校验、商户权限校验、IP安全校验等,校验通过后向支付宝、微信等支付平台发起支付请求,并在平台上记录相应流水信息。
6.支付宝、微信等支付平台进行支付订单的处理,将结果返回翼码平台。
7.翼码平台接收支付平台返回的支付结果进行解析后,将处理过的支付结果信息返回给收银系统。
8.收银系统接收到翼码平台的返回报文,将信息返回给收银机。
9.收银机接收到支付结果信息后,对信息中的响应码进行判断并做出相应处理:
(1)当接收到的响应码为“0000”时表示交易成功,即可将商品给用户,完成本次交易。
(2)当接收到的响应码为“9990”时表示交易失败,可根据响应码解释进行相应处理,本次交易付款失败不能把商品给用户。
(3)当接收到的响应码为“9998”时表示等待用户付款(当用户支付工具设置为非免密支付或处理时间超长会出现此种情况),收银机需循环调用支付查询交易来查询此订单是否交易成功(建议循环间隔等待时间大于等于5秒)。直到接收到的查询接口返回信息中的响应码为准确结果(“0000”-交易成功或“9990”-交易失败)后终止查询进行相应的处理,否则继续循环查询该订单。循环查询订单60秒后判断为该订单支付超时,支付超时有两种处理方式可供参考,如下:
A-结束当前支付流程,由收银人员询问顾客支付结果后,通过手工触发再次调用查询接口查询支付结果;
B-调用支付撤销接口,撤销该支付交易;撤销接口返回成功时,若此时客户未支付则无法继续支付,若此时客户已支付则会进行退款。(调用撤销接口可能出现客户支付成功又退款的情况,需要收银人员注意甄别支付结果或严格按照接口的返回为结果依据,以免造成不必要的损失)。

查询交易流程描述

1.收银机发起支付查询交易,将查询信息(原交易流水等)传给收银系统。
2.收银系统向翼码平台请求查询交易。
3.翼码平台在接收到收银系统的请求后会进行报文参数校验、商户权限校验、IP安全校验等,校验通过后向支付宝、微信等支付平台发起查询请求。
4.支付宝、微信等支付宝平台将订单信息返回给翼码平台。
5.翼码平台接收支付平台返回的查询结果进行解析后,将处理过的查询结果信息返回给收银系统。
6.收银系统将查询结果信息返回给收银机。
7.收银机在接收到查询结果后,对信息中的响应码进行判断并做出相应处理:
(1)当接收到的响应码为“0000”时表示该笔订单已支付成功,即可将商品给用户,完成本次交易。
(2)当接收到的响应码为“9990”时表示该笔订单支付失败或已撤销,可根据响应码解释进行相应处理,本次交易付款失败不能把商品给用户。
(3)当接收到的响应码为“9998”时表示该笔订单状态为等待用户付款,用户尚未付款,进行下一次循环查询或其他操作。

撤销交易流程描述

1.收银机发起支付撤销交易,将订单信息(原交易流水等)传给收银系统。
2.收银系统向翼码平台请求撤销交易。
3.翼码平台在接收到收银系统的请求后会进行报文参数校验、商户权限校验、IP安全校验等,校验通过后向支付宝、微信等支付平台发起撤销请求,并在平台上记录相应流水信息。
4.支付宝、微信等支付宝平台对原订单进行撤销处理,并将处理结果返回给翼码平台。
5.翼码平台接收支付平台返回的撤销结果进行解析后,将处理过的撤销结果信息返回给收银系统。
6.收银系统将撤销结果信息返回给收银机。
7.收银机在接收到撤销结果后,对信息中的响应码进行判断并做出相应处理:
(1)当接收到的响应码为“0000”时表示该笔订单撤销成功,完成本次撤销交易。
(2)当接收到的响应码为“9990”时表示该笔订单撤销失败,可再次发起请求进行撤销。
(3)当接收到的响应码为“9998”时表示该笔订单撤销交易超时,可再次发起请求进行撤销。
(4)当接收到的响应码为“4073”时表示该笔订单已经撤销成功(可能由于超时等原因第一次撤销结果未成功,但实际已经撤销了),完成本次撤销交易。

安全机制

通过固定IP绑定和https来保障报文传输的安全性。

接入URL

测试环境接口地址:https://ipos-sa.imageco.cn/