写支付网关是WooCommerce开发中的脏活累活,所以只要有选择一定不写,但难免有别无选择的时候。

比如注册在国外的公司想接收大陆客户的微信付款,金流与会计要走当地国渠道,只能选当地国微信网关代理公司,代理公司不提供WooCommerce集成,只提供API,只好自己写对接,这个情况不算少见。

这篇文章不是支付网关Tutorial,我只想记下一点想法,如果你想自己写支付网关,搜一下,不难搜到

代码一层高质量的支付网关对接有不少细节,一般Tutorial里会讲到的options配置能力、框架性流程,但都会比较粗线条。实际对接具体的第三方支付API时,除了要逐字逐句地去读文档,Code Request时逐个确认请求与返回参数,坏一点的情况你会碰到过期的文档、歧义的表达、或者自己对某些特定支付渠道业务无知,这个过程特别颠簸,光是最基本的做对就能吃掉项目大半成本。

但这还不是全部,没人会提醒你:每一个transaction要在本地留存电子票据且与订单绑定,要做refund对接,如果不做自动的,至少也要支持手动refund,这需要在WooCommerce的某个表里记录(Log)整个支付回环,有时候你也不知道客户说的“审计”到底是哪门子。对了,有的站点有Wallet系统,你的网关是不是也对接一下dollar转points?总之只要涉及操作钱的代码,你面对的就是最最“业务”的业务流程。

三方API公司提供的也可能是千疮百孔的服务,没有签下Subscription代理权限、半吊子的手机支付,这些常常是因为这些公司不受大厂重视,但会让下游客户尴尬难受,花了老钱接上了,结果发现API只支持到想要的一半能力都不到,但收款大陆又别无他选,气死。有的客户会很羡慕PayPal与信用卡缔造的西方统一在线市场,中文圈的类似统一市场形成得太慢,我不知道支付宝微信替代了VISA/MASTER,是让这个过程变快了还是变慢了。

现在不到万不得已我不用支付网关定制金流,存着几个几乎不需要改动的Wechat/Alipay壳子网关,具体的API对接到thankyou page去做,非WooCommerce流程的金流(如Pay to Post)也能wc_create_order转入WC流程,不必要或不能转入WC流程时,不做网关也比做网关更易灵活复用。没有写进网关插件的逻辑,确实能稳定下来的,以后再移入网关Class不迟,但往往那时候移代码的必要性也没那么强烈,所幸就不移。这么几次下来,我感觉舒服多了。

类似文章

订阅评论
提醒

0 Comments
内联反馈
查看所有评论