开发者社区> 扬朋> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

当面付接入必读

简介: 场景  商户通过接入支付宝当面付,提供一种新的线下收银方式,从而达到快速收银,免资金找零,假残币风险,核对方便,提升资金利用率,但是这接入的过程中注意事项有哪些呢?这不,小编马上为我们带来了福利:接入的必读攻略。
+关注继续查看

场景 

商户通过接入支付宝当面付,提供一种新的线下收银方式,从而达到快速收银,免资金找零,假残币风险,核对方便,提升资金利用率,但是这接入的过程中注意事项有哪些呢?这不,小编马上为我们带来了福利:接入的必读攻略。 

1. 接口调用规范 

1.1 针对唤起收银台的交易,必须确保能够及时获得用户支付结果。原因:对于等待支付的交易,商户如果无法及时确认顾客付款是否成功,容易引起资损和纠纷。 建议方案:对所有唤起收银台的交易(支付宝返回状态10003)发起轮询,并且建议轮询总时间设为30秒,轮询平均间隔设为3秒。在让用户再次支付前,必须通过查询确认当前订单的状态,例如:

  1. 发起轮询获得支付结果:等待5秒后调用交易查询接口alipay.trade.query通过支付时传入的商户订单号(out_trade_no)查询支付结果(返回参数TRADE_STATUS),如果仍然返回等待用户付款(WAIT_BUYER_PAY),则再次等待5秒后继续查询,直到返回确切的支付结果(成功TRADE_SUCCESS 或 已撤销关闭TRADE_CLOSED),或是超出轮询时间。在最后一次查询仍然返回等待用户付款的情况下,必须立即调用交易撤销接口alipay.trade.cancel将这笔交易撤销,避免用户继续支付。
  2. 除了主动轮询,也可以通过接受异步通知获得支付结果,详见扫码异步通知,注意一定要对异步通知做验签,确保通知是支付宝发出的。调用sdk验签辅助示例如下:

1.2 同一订单的部分退款确保退款请求号不重复。

原因:同一笔交易如果不改变退款请求号out_request_no,会因为请求号冲突,导致部分退款失败。 

建议方案:同一笔交易若发起多次退款,每一次都需要改变out_request_no。 

2. 异常处理 

2.1 避免不合法的传参。原因:传参错误会导致支付异常。 

建议方案:对所有返回INVALID_PARAMETER的响应进行监控,一旦发现请停止调用并检查请求参数,修改后重新发起请求。 

2.2 接口调用发生异常时能够正确处理。

原因:接口的大量调用错误,商户带宽被无效调用占用,容易导致访问支付宝速度变慢,并且容易引发商户端处理错误,造成系统无法正常使用,严重影响系统稳定性及用户体验。 

建议方案:在调用支付宝接口时,可能会遇到网络超时或支付宝未知异常(接口返回code=20000,sub_code=isp.unknow-error或ACQ.SYSTEM_ERROR),此时业务处理结果是未知的,需要根据具体API采取一下措施。

具体措施如下: 

A. 查询接口:alipay.trade.query和撤销接口alipay.trade.cancel调用异常 立即重试一分钟,如果仍然返回超时或未知异常,需要记录该异常交易并走人工处理流程。 

B. 预下单接口:alipay.trade.precreate调用异常 使用新的商户订单号out_trade_no重新调用预下单接口。 

C. 退款接口:alipay.trade.refund调用异常 使用相同的参数重试一分钟,如果仍然返回超时或未知异常,需要记录该异常交易并走人工处理流程,不能简单的推断为退款成功或失败。 

D. 支付接口:alipay.trade.pay调用异常 立即调用查询接口,如果查询的交易不存在(错误码ACQ.TRADE_NOT_EXIST),使用相同的参数重新调用支付接口。 网络超时或未知异常,继续查询一分钟,如仍然超时或未知异常,需要记录该异常交易并走人工处理流程,不能简单的推断为付款失败。 

3. 支付体验 

3.1 合理的轮询间隔以及轮询总时间。

原因:如果轮询总时间太短,而用户输入密码时间较长,商户可能无法获得支付结果,导致资损和纠纷。如果轮询时间太长,会产生不必要的资源消耗,降低服务器性能。同样,轮询间隔如果过短,会给服务器带来压力,降低性能,反之,会无法及时得到支付结果,增加不必要的排队等待时间。

 建议方案:建议轮询总时间设置在30秒,轮询间隔设为3秒。

 3.2 提高订单支付成功率。

原因:支付失败现象增多会引起商户收银问题,增加顾客等待时间,引起单边账,降低顾客满意度。

 建议方案:对支付接口的返回进行监控,如果有较高比例的支付失败,需要及时排查原因。条码支付成功率建议保持在95%以上。 

3.3 新建的订单都需要改变订单号。

原因:外部订单号重复会导致交易失败,不予以控制将增大服务器开销,增加顾客等待时间。

建议方案:对新建的订单进行跳号处理。

 4. 资金安全 

4.1 未支付订单请及时撤销。

原因:未支付订单如果不及时关闭,顾客可能会误支付,从而导致顾客资损,引起单边账 

建议方案:对于未支付的订单,请及时通过调用撤销接口关闭订单(注意:超过24H的订单无法撤销);另外一种方法是为每笔订单设置超时时间,超过时间未支付的订单会自动关闭。 

4.2 不要将撤销接口用于退款业务。

原因:退款接口用于正常退款业务,撤销接口用于在订单出现问题时候将其撤销并关闭。两者的业务场景完全不同,错用会导致订单状态与业务状态不匹配,在监控下无法准确地发现系统异常。

建议方案:所有退款业务都必须调用退款接口。

 4.3 单品总金额与订单总金额要一致。原因:单品总金额与订单金额不一致会导致实收金额与应收金额不匹配,从而引起资损。 

建议方案:在传入单品的情况下,订单总金额需要基于单品的单价和数量计算出来。 

4.4 不要在没有获得交易结果的时候要求用户再次付款。

原因:商户端没有获得交易结果,很有可能是用户已经付款成功只是商户端单方面原因(网络问题)导致没有获得支付结果,再次支付会导致用户资损。 

建议方案:对于商户端没有获得交易结果的订单,请和用户确认支付结果,如果用户已经支付成功,请先退款然后让用户再次支付。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
有奖反馈 | 支付宝使用demo在线调试,小白也能轻松接入当面付
刚到公司一段时间就赶上双十一,大促在即,当面付的功能开发不知道怎么搞,奈何功能包接口太多,组合效果啥样子不清楚!能不能满足老板的“想象”还不知道!商家资质也没申请下来,环境搭建又很繁琐,文档写的还和教科书一样复杂,啊啊啊~有个demo可以让我先试试,学习一把就好了。开箱即用的当面付在线调试Demo玩起来,效果一目了然,这次我们还提供了大礼相送,学+实践+好礼,能力这趴不再是问题!
0 0
视频直播开发直播软件开发需要多少钱
在现在生活中,直播可以说是我们都每天都接触的社交娱乐项目。我们对于直播开发背后的知识可能了解的不多,对于“直播+短视频”和“短视频+直播”,从字面意思来看可能没什么区别,都是两者的相结合,但是却有着内在本质的区别。
828 0
在家也能学,支付宝里600门课免费上
不少学校因为疫情推迟了开学日期,为了让孩子们过个充实的假期,不耽误学习,支付宝与阿里云教育联合多家知名培训机构,推出超过600门免费课程,从幼儿园到高三都有。上支付宝搜“小宝教育”,在家也能上课了。
0 0
微信吸粉技巧之:微社区
做自媒体,最为失败的是没有死忠的粉丝, 我发现我是失败者中的一员,   好不容易有机会去韩国,看看外面的世界,让自己“涨点姿势”,可一回来,发现空间日志,浏览量低的吓人。
800 0
前端程序媛教你美颜年终账单
从技术人员的角度来说: 年终账单= 页面滑动 + dom动画 + 数据 对前端工作人员来说: 页面滑动和dom动画是最重要。 页面滑动和dom动画分开做,都不难,都很容易实现。 但如何让页面滑动和dom动画配合的天一无缝呢??
0 0
当面付花呗分期示例代码
如何集成花呗分期支付注意事项:[url]https://openclub.alipay.com/read.php?tid=13779&fid=56[/url] 一、注意事项 1、调用接口代码前必须了解自己需要实现的场景功能; 2、通过集成代码实现的是花呗分期支付的花呗分期单渠道模式; 二、参数说明 (1)hb_fq_num代表花呗分期数,仅支持传入3、6、12,其他期数暂不支持,传入会报错; (2)hb_fq_seller_percent代表卖家承担收费比例,商家承担手续费传入100,用户承担手续费传入0,仅支持传入100、0两种,其他比例暂不支持,传入会报错。
178 0
+关注
扬朋
支付宝小程序开发者运营专家
文章
问答
来源圈子
更多
文章排行榜
最热
最新
相关电子书
更多
58到家支付系统架构与实践
立即下载
微博:随时随地迎战大流量
立即下载
直达客户 贴身服务——通信在快递场景中的应用
立即下载