新零售SaaS收银系统支付核心起到了至关重要的作用

2024-05-26
来源:网络整理

在新零售SaaS收银系统中,支付核心起着至关重要的作用,本文,笔者对支付核心进行了解读和梳理,想要了解更多,不妨看一下。

1. 概念

支付核心是处理不同业务线支付的核心模块。

具体内容为:交易系统请求一张订单,支付系统将此张订单的支付指令传递给上游支付通道,最终完成支付并处理业务支付结果。

其中,支付核心在新零售SaaS收银系统中起着至关重要的作用。

它承载着内部业务和外部渠道支付,最终完成闭环交易。

2. API 的本质

当用户在收银台完成订单和付款时,整个结账系统不仅依赖线上/线下可视化收银台,还需要一套界面收银台。

在开始包装之前,我们先来深入了解一下收银机的本质。

在传统的收银台,收银员是为了促成买卖双方的交易,完成支付。也就是说,我们常说的用钱换取商品。钱从买家的钱包转到卖家的钱包。

现代收银中,收银员可能是线下终端收银员,也可能是线上收银员,卖方向买方提供商品或服务,款项从买方账户划转到卖方账户。

无论是在传统收银柜台还是现代收银柜台,付款都是完成交易的重要部分。

付款:买家需要把钱转到卖家,交易媒介是我们的账户。

当我们站在顶级结算银行的角度去看待这个支付流程时,它是一个账户上的借记和贷记操作。

对账户的操作包括:存款,转账,消费,退款等,银行会封装各种操作接口给下游平台使用。

针对这些操作,第三方支付渠道、银行等会结合底层应用的场景,封装出不同的支付产品,供其下游平台或商户使用。

新零售SaaS软件服务商也需要根据自身客户业务场景封装一套收银接口,同时还需要选择适合自身业务场景的渠道支付产品进行对接,最终为客户的收银场景提供支付服务。

收银API封装的本质是根据不同的支付业务场景传递不同的支付指令,对买家和卖家的账户进行借记和贷记。

只不过它经过了多个底层,根据服务业务场景,被包装成本渠道的支付产品。

那么支付核心是如何封装收银API的呢?

如何判断支付通道产品是否可以接入?

三、如何封装收银API 1、分析行业不同业务线的支付场景

有线上支付、线下支付、智能机、礼品卡等支付场景。

2. 选择正确的付款方式

根据公司不同业务线的支付场景,我们需要找到合适的支付通道产品。

新零售SaaS结合银行和第三方提供的支付通道产品,集银行业务、需要B扫C、C扫B、APP、人脸识别等支付方式于一体。

当我们确定选择的支付通道产品的时候,我们首先考虑的就是该支付通道产品的应用场景。

是否适合新零售SaaS收银系统的业务线。其次考虑渠道的安全性、稳定性、手续费率等。

这里我们主要从接口的角度来分析业务场景是否合适。

那么我们该如何评审渠道接口文档是否适合新零售SaaS收银系统业务场景呢?

4. 审阅渠道接口文档

本节主要从开发角度审查渠道支付接口是否满足业务要求。

接口文档也只以核心参数作为判断依据。

基于上面分析的新零售SaaS收银系统业务线,我们决定对接B扫C(小程序,扫码点餐)支付、C扫B接口以及人脸识别支付。

为了促进交易支付流程的完整,不仅需要支付操作接口,还需要订单查询、退款、退款查询、取消订单,以及异步回调推送订单状态。

接下来需要明确支付渠道提供的接口里需要的业务参数以及新零售SaaS收银系统是否支持对接。

同时需要传递新零售SaaS收银系统的支付参数,以检测渠道方是否支持。

1. B 扫描 C

此接口注意事项:上游平台商户号、商户订单号、支付码、支付金额、单品优惠详情、订单号。

上游平台商户号(必填):每个接口都需要此参数,是上游渠道判断指令来自哪个商户的重要依据。

商户平台唯一订单号(必填):注意订单号过长或者自定义规则的情况,不同渠道要求不同,开发需另行处理。

付款金额(必填):单位必须明确,为分或者元。实际编码过程中,开发者需要使用类型转换,注意转换方式,避免精度损失。

商品折扣详情(可选):若渠道或商家希望对商品进行折扣,开发者需要将此信息上传至上游渠道。

此字段需要特别注意商户传入的商品名是否含有特殊字符,开发需要对其进行过滤或者单独编码,防止支付验签出错。

回调推送地址(可选):建议在接口中上传此字段,以便异步接收订单状态,不要过度依赖程序定时任务查询,减少服务器压力。

响应参数中的订单号(可选):如果接口可以返回此字段,最好记录下来,这样商户在给客户退款的时候,可以直接扫描订单号发起退款,减少商户输入商户订单号的繁琐退款步骤。

2. C 扫描 B

此接口响应字段中的支付链接(必填)为预订成功后返回的支付二维码,扫描支付二维码即可进入网上收银台支付。

其余字段的解释与[B 扫描 C]相同。

3.

使用场景主要在微信小程序或者支付宝小程序。

如果是微信场景:接口中必须传入小程序和用户ID,响应结果会返回拉起微信支付控件的必要参数。

如果是支付宝场景:必须传入接口用户ID,响应结果中返回的是支付宝订单号,用于拉起支付宝控件。

其余字段的解释与[B 扫描 C]相同。

注意:微信小程序支付、支付宝小程序支付,连接此方法还需要连接回调方法。

重点:回调地址、微信、微信或支付宝用户ID。

4. 刷脸支付

人脸支付分为支付宝人脸支付和微信人脸支付。

这种场景下对前端POS或者IOT小程序的依赖比较大,更多的时候需要前端进行初始化,调用官方提供的单据接口。

对于支付宝来说,前端直接调用平台接口获取刷脸支付码,然后调用B扫C接口发起支付。

微信需要后台提供接口获取微信人脸识别调用凭证。

最后前端调用人脸识别SDK,获取人脸支付码,然后调用B扫描C进行支付。

这里是微信获取人脸识别通话凭证的接口,并展示了核心参数。

5.订单付款查询

当订单支付状态不清楚或者需要查询订单支付状态等详细信息时,需要调用此接口。

核心请求参数通常只需要传入两个参数:平台商户号、订单号(商户平台支付订单号或者上游平台支付订单号)。

很多渠道方的支付单据都会优先使用渠道方的订单号,但是从开发者的角度来看,这是一个漏洞。

例如,新零售SaaS收银系统向上游渠道方请求支付时,可能无法得到支付响应结果。

因为在支付过程中,由于网络波动导致请求超时,商户收银系统无法获取上游返回的支付订单号。

所以这时候就需要一个订单支付查询接口,接口里有一个商户平台支付订单号(以下简称订单号)的参数。

当这种情况发生时,商户的收银系统仍然可以查询支付结果,而不必单纯依靠该渠道的订单号。

我们在审核渠道接口的时候,如果只能根据渠道方的订单号来查询订单详情,那么就必须要求渠道方添加商户平台支付订单号()参数。

6.退款

核心请求参数:

退款所需关键请求参数为:(商户退款订单号,有时此参数可不填)或(商户支付订单号);

如果有多次退款,最好有(商户退款订单号),方便追踪退款记录。

其余字段的解释与[B 扫描 C]相同。

7. 退款查询

此接口优先查询商户平台订单号,理由与【订单支付查询】相同。

其余字段的解释与[B 扫描 C]相同。

8. 撤销

涉及字段的解释与[B扫描C]相同。

9.回调推送

连接上网,C扫描B,接口必须连接,退款、付款都会有回拨信息推送。

若支付或者退款回调地址是如下以订单ID拼凑的后缀,则需要关注下一个渠道的退款推送规则,规则可能会有所不同。

如:是支付推送,是退款推送地址。

渠道方一般直接根据此地址进行推送,但少数渠道也会根据支付接口中传递的回调地址进行推送。

涉及字段的解释与[B扫描C]相同。

回调接口响应所需参数:

响应内容按照接口文档的要求即可,通常返回“失败”。

5. 支付核心流程

支付请求到达支付核心要经过哪些流程?

一个支付请求从不同的应用场景发出,进入收银API检查业务参数是否符合当前支付操作的业务要求。幂等性验证组装交易数据:如新零售SaaS收银系统中商户基本信息,初始化状态获取支付账户路由。组装交易数据:支付通道配置的商户号等信息,根据交易信息创建支付订单。发送支付前,封装符合通道要求的业务参数。例如:支付基本信息、签名、加密等。支付时,使用符合通道要求的请求方式和数据格式。例如post方法请求使用json格式传递数据。支付发送后,通道返回响应结果,并对结果进行验证。例如:签名验证、解密。检查支付信息是否按预期返回。更新支付订单,同步支付状态等业务信息。例如:更新状态支付状态、支付订单号、订单号、渠道号等信息

本文原作者为@人人是产品经理。 未经作者许可,禁止转载。

题图来自,基于CC0协议。

本文观点仅代表作者本人,人人事事产品经理平台仅提供信息存储空间服务。

已收藏 已收藏 {{ . }} 已赞 已赞 {{ . }}

分享