案例背景
不久以前,明道云集成中心上线了支付宝的API接口,这意味着明道云用户可以更便捷、零代码地对接支付宝收付款能力,实现面向C端用户的收费应用场景。本文里,我们将以明道云HAP认证平台面向用户收取认证报考费用为例,详细展示对接支付宝实现toC收费的配置过程和最终效果。
业务流程
交互时序图
实现效果演示
用户视角的操作效果
管理后台订单日志
配置步骤
本文重点介绍集成支付宝实现C端用户下单支付的效果,故以下从业务流程的第三步报考开始阐述做法。
1.集成中心API安装与准备
在集成中心安装支付宝API,并完善连接参数。使用说明处详细介绍了每个参数的获取方式,只需跟随步骤,在支付宝开发者平台完成操作即可。
2.前台和后台的支付表单配置
我们仿照消费者在电商平台下单购物的原理,在认证平台的前台应用里创建《缴费记录》工作表。而在后台,我们需要创建《支付订单日志》工作表来接收来自支付宝的更详尽的订单数据。
《缴费记录》里必须创建的字段有:
- 考试缴费订单号(需唯一,能够与后台支付订单日志相匹配)
- 考试项目(相当于商品名称)
- 实付金额(为明道云向支付宝发起的最终收款金额)
- 订单创建时间
- 订单创建状态
- 支付二维码链接(隐藏,无需对用户可见)
- 支付二维码(引用二维码链接来显示)
- 支付状态
- 二维码失效开始时间(用于计算二维码失效即订单超时未支付的时间)
- 付款时间
这些字段都会通过API及Webhook,和支付宝平台实现信息交互。
《支付订单日志》里的字段可以视运营者的需要来配置。一般建议配备以下字段:
- 考试缴费订单号(与《缴费记录》的对应记录保持一致)
- 考试项目(相当于商品名称)
- 实付金额(为明道云向支付宝发起的最终收款金额)
- 订单创建时间
- 订单创建状态
- 支付二维码链接(隐藏,无需对用户可见)
- 支付二维码(引用二维码链接来显示)
- 支付状态
- 二维码失效开始时间(用于计算二维码失效即订单超时未支付的时间)
- 付款时间
管理后台订单日志
3.配置工作流
提交报考信息后创建缴费记录
当新增报考记录时触发工作流,创建一条缴费记录。缴费记录上必须写入考试项目、实付金额,因为这两项将通过下一条工作流传输至支付宝平台,生成订单。考试缴费订单号由于为自动编号字段,所以无需写入,它也将一并传输至支付宝平台。
其他字段则视运营管理和用户需要,完成补充。
新增缴费记录时生成支付宝订单,获取支付二维码
当新增缴费记录时,工作流调用已经配置好的支付宝API(用户扫商家二维码),传递参数。同时支付宝平台也会返回接口响应信息。
在响应信息中,“code”代表支付宝订单创建成功或失败(即接口调用成功或失败)。code=10000时为创建成功,不等于则创建失败。我们据此创建判断分支,对缴费记录的创建状态做对应的更新。针对创建失败的记录,还需通知集成管理员排查原因。同时,报考记录也失效,通知考生重新报考。
流程关键节点
在「调用已集成API」节点里传递参数时,我们无需填写所有参数。最基本的是填写好必填参数,其次是根据实际场景需要来增加参数填写项。下面为本案例中填写的参数:
- notify_url:支付宝服务器主动通知商户服务器里指定的页面http/https路径。需要在应用里创建一个Webhook触发的工作流,来获得一个明道云工作流的请求接收链接。
- subject:订单标题,每一笔订单需要具备一个订单名称。
- qr_code_timeout_express:二维码订单的相对超时时间。支付宝平台对支付二维码的有效时长默认设置为15分钟。我们也可以根据需要,在此处自定义时长。
- out_trade_no:商户订单号,由业务系统用户自定义,保证每一条订单具有唯一性、有效性。
- total_amount:订单总金额,对应则是实付金额。
参数填写效果(省略未填写的栏目)
获取URL的示意
HAP认证前台配置Webhook接收HAP认证后台消息
HAP认证前台需要创建一个Webhook触发的工作流,用于接收HAP认证后台所推送返回的订单支付状态和参数。根据支付宝提供的文档,trade_status代表订单的交易状态,不同结果对应不同情况:
- TRADE_FINISHED或TRADE_SUCCESS:订单交易成功
- WAIT_BUYER_PAY:订单逾时未支付
- 非以上三种返回结果时,则为订单交易失败
根据这一参数的情况分类,我们构建三条判断分支,分别执行付费成功后通知考生并创建考试记录、逾期未支付时通知考生并将报考记录作废、付费失败时通知考生和管理员并将报考记录作废。
流程关键节点
当这一步完成后,前台应用的交易闭环已经完成。下一步则是补充后台应用的交易日志及订单状态回传前台。
HAP认证后台配置Webhook接收支付宝订单支付异步消息
HAP认证后台主要用于两点:1.支付日志管理解决用户支付过程中遇到的问题可快速通过支付日志查找订单支付信息。2.接收用户扫码支付时的订单数据、状态,用于推送订单支付状态至HAP认证前台。
流程关键节点
- 当用户正在扫码支付中,支付宝会推送交易状态为WAIT_BUYER_PAY的参数值到工作流,这时候即可将正在支付的订单数据进行新增订单日志。并且可以将支付宝推送过来的原始JSON数据让日志更加完整。
- 当用户扫码支付完成后,支付宝会推送交易状态为TRADE_SUCCESS或TRADE_FINISHED的参数值到工作流,这时候我们即可通过发送自定义请求将数据推送到HAP认证前台中的Webhook工作流中,使得前台能够同步更新对应支付状态,如下图所示。
流程关键节点
自定义请求节点配置