Day 20 - WooCommerce: 定义信用卡付款闸道

永丰金流收款 API 在目前我们从文件看到的,支援信用卡付款及虚拟帐号 ATM 付款。本次铁人赛在也会实作这两种付款方式,而今天,笔者要介绍的即是信用卡付款方式。

Payment Gateway API

WooCommerce 有定义好它自己的付款闸道,称为 Payment Gateway API,任何付款方式都是透过此 API 进行功能实作。

以下连结是开发前可以先服用的良方,请先服用帮助消化喔 ^^"

WooCommerce 外挂本身带上了几个内建的付款方式,也是很不错的参考范例,位置在这个目录:

plugins\woocommerce\includes\gateways

像是银行转帐 (direct bank transfer)、货到付款 (COD, cash on delivery)、支票 (cheque)、PayPal 等等。

图 20-1
图 20-1: WooCommerce 外挂的目录 - geteways

读者们可以直接复制其中一个付款方式进行修改,或者打开档案参考写法,会比较快上手喔!

信用卡付款闸道

基於官方的范例,建立了一个 Class 名为 WC_SinoPac_Credit_Card_Payment 的类别,继承 Payment Gateway API 的 WC_Payment_Gateway。

图 20-2
图 20-2: 信用卡付款闸道

这个档案放在 includes 目录中,稍候载入。

从程序码的编排风格来看,和编写 Sinopac PHP SDK 时差别非常多。既然进入 WordPress 的世界,就入境随俗采用 WordPress 的程序码风格标准。如果转换上有困难,可以参考笔这在去年铁人赛写的文章使用 PHP CodeSniffer 帮助熟悉 WordPress 程序码风格

第 8 行 这个 id 值非常重要,它会是以後我们读取订单,判断订单付款方式的依据。
第 11 行 在设定付款的页面时显示的标题。
第 12 行 在设定付款的页面时显示的介绍文字。
第 24 行 设定选项设定。在 Day 21 有详细介绍。
第 25 行 初始化设定。
第 68 行 Payment Gateway 用来处理付款时的逻辑。

信用卡付款闸道的 PHP 档案建立好了,需要有地方载入它。

图 20-3
图 20-3: 初始化档案内容

在昨天的初始化档案的 Todo 字串下,载入了 controller,并实例化它,执行 init 方法。

载入类别

图 20-4
图 20-4: SinoPac_Payment controller

这个地方有两个重点,在第 9-10 行两个 Hook。

第 9 行 要载入定义信用卡付款闸道的 PHP 档案,由於该档案是继承 WC_Payment_Gateway,是在 WooCommerce 载入後才有,因此必须挂在 plugins_loaded 这个 Hook 下。

注:plugins_loaded 是在 WordPress 生命周期中,在所有外挂载入後触发的第一个 Hook。

第 10 行 要注册我们的付款方式到列表中。

图 20-5
图 20-5: 付款方式列表

这样在 WooCommerce 的付款方式设定中,就可以看到我们刚刚定义的信用卡付款闸道罗。

流程总结

接下来还有选项设定的部分要做,像是让使用者可以自定付款方式标题及介绍、设定该付款方式是在正式环境或是沙盒测试、填入永丰金流 API 需要的相关栏位等等。

这些选项就在 Day 21 进行规划,我们明天见罗!


<<:  EP22 - 持续部署使用 Octopus Deploy 二部曲,安装 Octopus Deploy

>>:  第13章:分析、储存与存取系统日志介绍(二)

OpenStack 介绍 2

本系列文章同步发布於笔者网站 前一篇文章以比较非技术角度介绍了 OpenStack 这个专案。今天开...

Jupyter Notebook 输入栏位设计(2)

前言 上一篇介绍 interact 基本的用法,可以设计使用者介面(UI),但无法取得输入值,本篇介...

Vue3 ( 制作前台 ) -7

1. 产品列表 (1)制作页面(元件) src/views/Userboard.vue 产品navb...

见习村28 - Find the missing letter

28 - Find the missing letter Don't say so much, ju...

[Day 6] Button

Day 5 进到了网站中最常见需要做功能性的环节 Button <Button variant...