最近由于业务需求,需要开发支付代码功能。这个界面的底层会聚合市场上主流钱包应用的支付码功能,比如微信支付、支付宝支付等。
ps:支付码有很多昵称,比如微信上的支付产品是「付款码支付(之前的文档叫做刷卡支付)」,支付宝上的支付产品是「当面付-条支付」,还有一些文档是「二维码被扫支付」。
以下统一使用微信的定义,统称支付码支付。
有些同学可能对支付代码不熟悉,但其实这个功能可能每天都在用。
比如我们在便利店买早餐,最后结账的时候,用支付宝/微信支付。收银员会给我们看支付宝/微信支付码,然后用扫描枪获取这个码,最后发给微信/支付宝服务器完成一次扣款。
以支付宝为例,具体的客户端支付流程如下:
来自支付宝官网
支付代码支付后台调用流程如下:
付款代码付款详细版本流程
微信/支付宝支付码的支付调用流程类似,都是官网写的清清楚楚。这里直接使用支付宝官网的流程。
从上面的流程可以看出,支付码支付可以说是「同步」,的一个接口,即接口同步返回扣款结果,不需要通过另一个异步通知获得结果。
但是,这里需要注意。由于「安全风控」,等问题,用户可能需要在支付代码支付期间输入密码来确认支付。这时支付码界面会返回等待用户支付。
在访问时,需要正确判断返回的信息。如果返回以下结果,则表示用户此时正在输入密码。
微信支付:「err_code=userpaying 或 err_code=systemerror」
支付宝:「code=10003 或 code=20000」
微信支付码支付在以下情况下需要第二次输入密码确认。
支付宝官方文件中没有相关规定。经过测试,当支付金额大于「2000」,时,您需要输入密码。如果有熟悉其他保密规则的同学,可以在评论区留言。
还有一点需要注意的是,微信/支付宝服务器会在支付成功后发送消息告知支付结果。但是支付代码不同,所以这个界面上不会有消息通知。
因此,如果支付码返回等待用户输入密码,商家后台服务必须定期调用微信支付/支付宝查询界面才能获得支付结果。
提款
如果在一定时间内,如「30s」,查询支付的轮询结果都在等待用户支付,或支付交易过程返回失败或支付系统超时,在这两种情况下,官方文件建议调用取消界面立即取消交易。
如果用户未能支付该订单,取消界面将关闭订单;如果用户支付成功,取消界面会将订单资金退还给用户。
也就是说,撤销支付界面在功能上等同于「关闭订单」加「退款」.虽然撤销也有退款功能,但两者有很大区别:
「支付类型限制」
微信/支付宝取消支付「仅能撤销付款码支付类型的订单」,和退款可以支持各种支付类型的订单。
「退款金额」
取消接口只能是「全额退款」,而退款接口支持进项金额,可以全部或部分退款。
「时间限制」
取消界面的时限比较短。比如微信支付注销支持「7 天」,订单,支付宝注销界面只支持当天订单。
但是退款界面可以支持长期订单退款。比如微信支付退款,支持「一年内」,订单,支付宝只支持「3 个月」.订单
「基于以上区别,其他正常支付的单如需实现相同功能请调用退款接口,官方文档建议仅在异常的情况下才建议调用撤销支付接口。」
另外,在某些地方,这个功能界面被称为「冲正接口」,如下面的工商二维码支付。
其实提供的功能和微信/支付宝注销类似,需要各支付公司提供具体的调研文件。
与取消付款有关的问题
由于取消付款,可能导致退款或关闭订单。在访问之前,有些问题已经不清楚,官方文件中也没有发现任何信息,因此无法通过实际测量来验证相关问题。
由于规定支付机构不能直接连接微信/支付宝,所以以下测试基于银联微信/支付宝渠道。
银联提供的界面和直接微信/支付宝有一些区别,但主要功能是一样的。
重复撤销
通过实际测量,微信/支付宝撤销界面幂等,重复撤销返回一致结果。
但要注意正确判断撤销的返回结果。
比如我们需要结合召回字段来判断微信撤销界面是否成功,支付宝也有类似的字段。
订单状态
微信/支付宝订单状态处理不一致,微信订单状态比较复杂:
微信支付订单状态机
也就是说,一旦支付代码订单被成功取消,再次查询订单,状态将返回到「已撤销(revoked)」.
另外微信对支付订单有支付码限制,无法调用平仓订单界面平仓订单。因此,在付款代码的情况下,没有「closed—已关闭」状态的订单。
强壮.
接下来说说支付宝的现状。支付宝文档没有给出类似的订单状态机。我根据一些官方文件和一些测试结果总结了下面的订单状态图。
因此,一旦支付宝的支付代码订单取消成功,一旦再次查询原始订单状态,将返回「trade_closed」.
对账文件数据
当天交易发生后,我们需要在第二天拉微信/支付宝对账文件,逐一核对数据,防止账少账多的问题。
对账设计流程可以参考之前写的文章:
浅谈对账系统的设计方案
微信/支付宝对账文件只记录成功的订单,因此未支付的订单如果被取消,不会出现在对账文件中。但是,如果付款成功,然后又成功取消,则在对账文件中将生成「两笔记录」,正交易和反向退款记录。
正交易和普通退款的记录很容易识别,所以我们一般可以使用我们发给微信的支付宝订单号。但是由于注销导致退款记录,我们不能只用一个单个号码来识别,需要结合其他字段来区分判断。
微信对账单取消生成退款,交易状态为「revoked」,因此我们可以使用商户订单号加上交易状态来识别记录是否生成取消退款记录。
以上银联订单号可以视为微信支付宝内部生成的订单号
支付宝对帐单据比较麻烦,取消生成的退款记录无法根据交易状态与微信区分。从对帐单来看,支付宝取消生成的退款和普通退款界面生成的退款记录是一样的。
仔细研究对账文件可以发现一些差异。取消会导致退款记录。退款批次与正在交易的支付宝内部订单号一致。对于正常的退款记录,退款批号是商家自己发的。因此,我们可以过滤掉取消产生的退款记录。
撤销失败
极端情况下可能会出现很多撤销失败的奇怪情况,怎么办?
在这种情况下,我们不必考虑系统的自动处理方向,而是应该离线手动干预。毕竟这个概率太低了。引用知乎@天顺文章中的一句话:
在许多情况下,人工支持比考虑如何自动处理异常更高效、成本更低。
这句话大家细细品味,越品味越有道理!
最后说一句话(求赞)
事实上,访问支付代码相对简单。主要难点在于引入撤销接口后对现有系统的修改。比如成功订单撤销后,是直接将原订单的成功状态修改为撤销状态,还是创建另一条撤销记录?有对账系统的时候,对面端的记录可能比这边多。怎么查?在访问这些问题后,我们必须结合现有系统仔细考虑它们。
最后,文章中有一些遗漏。如果找到了,可以在评论区留言。谢谢大家的支持。
扫了二维码忘了加好友怎么查?微信扫一扫历史记录
相信大家都知道我们微信有很多非常有用的功能,但是你知道下面更新的这些变化吗?接下来我带你去了解一下,希望能帮到你!
一、常规操作
1、扫一扫
首先我们打开微信的扫功能,然后就可以看到除了之前的支付功能,还有封面、街景和翻译功能,.那么这些功能有什么用呢?
封面功能:只需要你瞄准任何一本书的封面,你就可以在各种购物平台上快速识别这本书的价格;
此外,街景功能:街景可以通过拍摄任何街道来帮助您快速定位。这个功能简直对路痴太友好了!
最后,翻译功能:是一个翻译功能。如果要出国,难免会有看不懂的标志或者菜单甚至酒店说明,可以利用这个功能快速翻译多种语言。再厉害不过了!
2、 二维码
二维码的功能也有了很大的更新。只要你打开相关图片,你就可以快速识别来源,包括价格、地址和相关企业,等。再厉害不过了!
3、 条形码
平时去商场看到一个商品,但不知道价格是否合理,也可以直接扫描条码,快速与网上商品价格对比,帮你选择最合适的价格!每年肯定能省不少钱!
第二,第三方方法
1、扫描超人
如上所述,微信的扫描功能可以帮助我们快速翻译,但是如果是图片和网页上的文字呢?很多人甚至想让我们去充值积分和会员.太糟糕了!因此,我们也可以使用一些免费的软件来帮助我们复制网页内容和识别图片和字符!
2、主要功能
比如扫描超人就是我最近发现的一个免费软件,可以通过拍照和导入图片来快速批量识别图片。再厉害不过了!
甚至可以识别形态,瞄准形态可以通过自动或者手动调整识别范围!
识别后可以预览,甚至可以直接连到电脑上打印,不用传到电脑上。太可惜了!
ok,以上就是我用过的一些非常好用的扫描方法的介绍啦,这些方法你都用过吗?还没用过的小伙伴赶紧试试看吧!希望可以帮到你哦!
微信群二维码永久有效(微信群二维码打印永久有效)
微信群往往受限于7天有效期和引流时200人入群,因为这类二维码通常是静态二维码。如果想让微信群的二维码长期有效,就需要制作一个相反的二维码,我们称之为“动态二维码”,也就是“活码”。
活码可以自动更新过期的群二维码,不受扫码入群时间和人数的限制,可以对扫描的用户数据进行统计,更加方便快捷,在微信群营销引流过程中得到广泛应用。
除了微信群可以用活码引流,微信号也可以用活码引流。多个客服号在引流推广时,可以用活码分流,避免短期内某个客服号频繁加好友,相对更安全。
比如当我们需要在微信官方账号末尾或者在海报中插入客服二维码时,可以使用直播码进行分流。
怎么用二维码生成器制作活码?
知意活码支持群二维码和个人号二维码的动态生成,在知意活码的背景下创建活码。
1.设置群活码的基本信息,添加真实的群二维码,生成群活码;
2.设置客服直播码基本信息,添加真实客服二维码生成客服直播码;
活码生成后,二维码各种信息可以随时修改,二维码可以自动更新,无需重新生成活码,只需保存即可。
每一个生成的活码都可以在后台看到用户的实时扫码数据,包括扫码次数和扫码人数。
同时,群活码和个人号活码均采用防重复机制,用户扫码一次后会自动被系统绑定,避免同一个人进入同一群或重复添加客服。
微信群永久二维码设置(微信群二维码打印永久有效)
微信群往往受限于7天有效期和引流时200人入群,因为这类二维码通常是静态二维码。如果想让微信群的二维码长期有效,就需要制作一个相反的二维码,我们称之为“动态二维码”,也就是“活码”。
活码可以自动更新过期的群二维码,不受扫码入群时间和人数的限制,可以对扫描的用户数据进行统计,更加方便快捷,在微信群营销引流过程中得到广泛应用。
除了微信群可以用活码引流,微信号也可以用活码引流。多个客服号在引流推广时,可以用活码分流,避免短期内某个客服号频繁加好友,相对更安全。
比如当我们需要在微信官方账号末尾或者在海报中插入客服二维码时,可以使用直播码进行分流。
怎么用二维码生成器制作活码?
知意活码支持群二维码和个人号二维码的动态生成,在知意活码的背景下创建活码。
1.设置群活码的基本信息,添加真实的群二维码,生成群活码;
2.设置客服直播码基本信息,添加真实客服二维码生成客服直播码;
活码生成后,二维码各种信息可以随时修改,二维码可以自动更新,无需重新生成活码,只需保存即可。
每一个生成的活码都可以在后台看到用户的实时扫码数据,包括扫码次数和扫码人数。
同时,群活码和个人号活码均采用防重复机制,用户扫码一次后会自动被系统绑定,避免同一个人进入同一群或重复添加客服。