支付插件需要注意的坑(原创)

谢绝转载!

题外话:ThankIT 支付插件未发布前,博主曾四处调查过,就博主所知,当时还没有插件(对外出售的)自动判断设备类型,自动切换到对应的 PC 或 手机接口。不过最近,博主发现以前调查过的插件都强调自动切换了。哈哈!如果是受 ThankIT 的影响,那么博主真是太开心了。

本篇将谈一谈支付插件需要注意的坑。本篇主要谈流程坑。

在一般用户眼中,支付插件就是实现支付功能,先把用户带到支付网关完成支付,然后网站系统接受支付通知。

大体上来说,需要的流程的确如此。但是如果我们进行细节考究的话,我们就需要考虑传递哪些参数,和 Magento 系统现有的功能如何融合等等。

ThankIT 在设计插件的时候,非常重视的是新增加的功能如何才能和 Magneto 系统完美融合。因为 Magento 的自定义非常多,非常强,所以我们需要尽可能多地考虑一些设置带来的影响。

拿支付插件来讲。到目前为止,99% 的支付插件(博主所接触到的 99% 的开发插件),在把用户带到支付网关前,就进行了下单。这个流程在一般的情形下,是没有问题的。

一般情形指的是:用户登陆 Magento 系统,下单,被转到支付网关,成功支付。

这里有两个影响因素:一是,Magento 系统可以设置为允许 Guest 用户结账。就是在不登陆的情况下结账。二是,支付可能失败。

那么在到达支付网关前下单,这个流程需要考虑支付支付失败后如何处理。很大一部分插件并未考虑支付失败后的处理。就让用户重新下一次单,重新支付呗!这样也是可以的,只是从用户体验角度来讲,博主认为是不够好的。所以有一小部分插件在用户的后台增加了重新支付的功能。这个很好,但是问题来了,重新支付是否包括可以切换支付方式呢?还有如果我是 Guest 用户结账,我不能登陆后台呢?

在写本篇文章的时候,博主想到这样的流程,也许下面这样处理支付失败比较好:在支付失败 return 回的页面上,提示用户重新支付,最好是允许切换支付方式的。

有一些定制的系统(并不对外出售插件),采用这种流程也可以取得比较好的体验,因为事先就将 Guest 结账关闭,而且有重新支付功能,就算无法切换支付方式,体验也比较好。

然后我们来讲讲 ThankIT 的解决方案。

ThankIT 的支付插件采用了延迟下单流程,支付不成功是不会下单的。这样用户不成功支付,购物车中的物品还在,可以重新选择支付方式,重新支付。而且是否允许 Guest 结账也完全不影响。带来的问题是,可能会发生重复支付。不过一是概率很小,二是 ThankIT 会判断是否发生重复支付,是否欺诈。所以目前看起来,博主自认为还是很完美的。

不过并非所有系统都可以用这个流程,有些 API 并不支持,或者出于其他方面的考虑。

在我们研究地不够深入的时候,我们是不会发现一种解决方案带来的好处和可能存在的问题的。所以这些坑在我们眼中是不存在的。如果我们知道了一种解决方案带来的好处和存在的问题,倒能很好地利用其好处,避开其问题,或者找到更好的解决方案了。

感慨一下,实现并不是最难的,难的是发现问题,设计解决方案。

发表评论

电子邮件地址不会被公开。 必填项已用*标注