Day 24 - WooCommerce: 建立信用卡付款订单 (下)

昨天晚上完成了建立信用卡付款订单的主要逻辑,在操作购物车,进到结帐页面後,填写完收件人资料,按下结帐按纽後,即会转页到永丰金流收款平台的信用卡刷卡页面。

但刷完卡後,收款平台会 POST 两个值回到我们的商店网站,ShopNoPayToken。这两个值我们要使用 PHP 的全域变数 $_POST 去接。因此需要定义一个入口点收这两个值。

定义资料入口

图 24-1
图 24-1: SinoPac_Payment controller

回到一开始载入付款闸道类别的 controller,SinoPac_Payment,我们定义了两个入口来收资料。

第 8 行 是这次刷卡使用的 return_url。完成付款即会转到这个页面。
第 15 行 先定义好接下来要接收虚拟付款方式的结果的页面网址。在过几天分享虚拟帐号付款时会再提到详细的作法。
第 26 行 实作接收讯息的逻辑,在这个阶段,会接收 PayToken,并使用它来查询付款结果。 如果付款成功,就把 WooCommerce 订单的状态从等待付款中,变成为处理中。

刷卡後处理

我们使用 template_redirect 这个 Hook 来载入刷卡後接收资料的函式。为什麽使用 template_redirect 呢?因为 WordPress Hook 的生命周期中,这个 Hook 开始可以使用 $wp 全域变数,而 $wp->request 等於 PHP 的全域变数值 $_SERVER['REQUEST_URI'] 可以让我们抓到目前的网址路径。

图 24-2
图 24-2: SinoPac_Payment controller

第 7 行 引入全域变数 $wp
第 9 行 比对网址路径,符合规则继续处理。
第 13 行 取得 ShopNo,接下来会比对和我们的资料是否符合。
第 14 行 取得 PayToken,准备用它来查询信用卡订单状态。
第 30 行 查询到状态为成功,这个付款就完美地完成了。
第 31-36 行 查询到的交易资讯详细资料。
第 58 行 把付款成功的交易讯息加注到订单备注,让负责处理订单的人员知道此订单已收款,可以即刻安排出货。
第 59 行 订单状态变更为「处理中」,让顾客知道其订单正在被处理,以即负则处理订单的同事可以在後台筛选此状态取得出货清单进行出货。
第 51-55 行 制定订单备注的内容。
第 60 行 交易的资料记录到 meta 中,以便以後可以查询。
第 66 行 失败的话,记录本次回传的资料以供查看问题。
第 72 行 成功的话,转址到感谢页面。

启用付款方法

图 24-3
图 24-3: 启用信用卡付款

接下来启用信用卡付款,这整个步骤就正式启用让顾客进行信用卡消费。

图 24-4
图 24-4: 使用信用卡付款

进到结帐页面已可以看到有这个选项罗。

流程总结

今天完成了程序码逻辑,接下来要来验收整个信用卡付款的流程是否符合预期喔。

相关范例程序码可以在这里 参考。


<<:  Day 23 - Either Monad

>>:  [ Day 23 ] - 阵列资料处理 - map

Day 20 - SwiftUI开发学习4(切换分页)

今天我们运用NavigationView去做切换视窗。 正文 建立新的页面 因为我们之前都是在主页去...

Day7-aws或gcp 我选择本机建立k8s

是否该用云端平台 在正式使用k8s的时候,部署k8s最好的情况是使用云端平台。 一来机器规格可以依照...

Day24 - 【概念篇】Keycloak使用基本概念 - 第一部分: Client

本系列文之後也会置於个人网站 Client与一些安全相关的设定 在OAuth架构下的Client(...

Watch

今天要介绍的是watch属性 Watch他跟computed最大的不同是他没有cache的机制,那w...

css 阴影

今天要来说说如何为一个div加上阴影,我们先来看看效果如何,我创造出一个橘色的方块,并且在他的css...