Day15 - WooCommerce 金流串接实战

WordPress 的接案者主要区分为两种类型:懂得运用各种外挂、布景主题来满足客户需求的接案者,另一种为专门客制化的程序开发者。许多像我一样没有程序基础的朋友,刚接触到 WordPress 时都会被它生态圈的深度与广度惊艳到,只要是能想得到的功能几乎都有人开发出来,更不用说丰富的布景主题容易让人有选择障碍,再加上成熟的付费外挂市集更是买也买不完。

早期许多接案者结合了这些工具进行接案获得了丰硕的果实,他们热心的把这些接案用的布景主题、外挂整理成文章、拍教学影片分享出来,或是做成一系列的线上课程,内容的完整度可以让学员上完後就能真的做出一个满足客户基本需求的官网或是包含金物流串接的购物网站。

所以架站的门槛越来越低了,市场上的竞争者也越来越多,这时候这种类型的接案者势必要开始把自己的核心价值放在除了架站以外的项目,像是数位行销、广告投放、社群经营或是搜寻引擎最佳化的服务,不然就很容易被市场淘汰,像我这部分就很弱,所以开始学习写程序改做开发就变成我後来的选择路线。

但该做的外挂都已经被开发出来了,走程序开发路线还有什麽机会呢?有的,而且超级多,因为 WordPress 的便利性让市场上用它架站的客户数量庞大,首先这就让潜在需求变多,其次,客户的网站不是做完就没事了,随着业务的发展,每天都会有许多变化,如果线上业务没有跟着实体业务的情境来做调整,这会让客户失去很多业绩,所以针对客户内部需求的客制化就是很大的一块市场,而且只要公司没倒,永远都会有做不完的需求。

最後,也是我觉得最关键的一点,不管 WordPress 生态圈再丰富、功能再强大,有一块客户需求是无法被满足的,那就是与本地化的服务整合,不会有国外的开发者想整合台湾的 CRM 厂商,或是住在欧洲的开发者不可能来串接台湾的金流服务,因为在他们的市场根本没人用,这时候就是我们在地开发者的切入机会,因此这几年有越来越多台湾的资讯公司投入 WordPress 生态系。

WordPress 工程师 vs. PHP 工程师

WordPress 是一个既有的框架,就跟其他的程序框架一样,有自己的规则与设计哲学在里面,它是在 2003 年诞生的,十几年的历史虽然有不少包袱,但早已是一套非常成熟的框架,有数以千计的工程师贡献过核心程序码,这些都让 WordPress 不断的进化与成长 ( 也常常进化到爆炸就是了 ? ),那麽已经熟悉 PHP 的工程师朋友,该如何切入 WordPress 开发呢?我从以下三点来说明:

一、对於勾点( Hook )机制的理解

勾点机制是 WordPress 可以拥有成千上万各式各样外挂的主要原因,透过「挂」载的动作就能在不需修改核心程序码的情况下,加入新的功能,这样当核心程序码在更新的时候,新功能一样可以被保留下来。看过太多被硬改 WordPress 核心程序码的状况,然後客户被厂商要求 WordPress 不得更新,这会导致其他後果。

WordPress 的更新除了会加入新功能以外,还会修补许多安全性漏洞,毕竟它是全世界市占率最高的架站工具,也会引来想要大展身手的攻击者,所以如果不能更新 WordPress,那可能只能把主机的网路线拔掉才会 100% 安全。

为了要能更新 WordPress 程序,勾点机制是绝对必要的,而且透过它,还能提供开放介面让其他工程师来修改自己写好的外挂,像是购物车 WooCommerce 就有超多针对它开发的外挂,而我们即将要介绍的金流外挂也是属於这一类。

二、对於 Loop 与操作资料库方式的理解

WordPress 第二个核心是 Loop,它是显示所有文章内容的机制,传统 PHP 的作法是先建立资料库连线,然後写资料库语法,把需要的资料取得後,再用回圈的方式呼叫出来,而 WordPress 使用 Loop 简化了这样的流程,还提供许多丰富的 API 来自订取得的资料内容。

虽然 PHP 工程师还是可以使用传统的方法来做资料库的操作,但前面提到,WordPress 已经有全世界的工程师帮你开发出各种 API,无论是针对安全性、效能,都是经过持续的优化再优化,没有道理不用它,透过这些 API 除了简化开发流程、增加安全性与效能外,更能学习到世界上其他工程师是如何处理相同问题的逻辑与思维,这对於开发者本身会有很大的帮助。

三、对於 WordPress 安全性的理解

上文提到,因为 WordPress 的成功引来了一大群攻击者,要如何维护 WordPress 的安全性,都已经是许多国外企业的核心服务项目,最有名的就是 Wordfence 他们是一间专门开发 WordPress 防火墙外挂的公司,通时也常发表关於 WordPress 核心程序、布景主题与外挂的漏洞研究报告。

常看他们的报告会发现,很多外挂的漏洞常发生在缺少验证程序执行者的身份、执行者的请求来源以及对於恶意程序码的过滤,这些议题在其他框架也都会遇到,只是因为 WordPress 很大,还有专门的机构来研究漏洞,所以当看到 WordPress 安全性相关的新闻报导时别惊慌,去客观理解漏洞产生的原因後,就能知道该如何防范。

因此为了提升安全性,使用 WordPress 内建的 API 会是比较好的选择,另外在执行写入动作前,先用 curent_user_can() 检查使用者权限、wp_nonce_url() 确认传送资料的来源是否为同一个网站、sanitize_*() 过滤使用者输入的内容、esc_*() 过滤从资料库取得的内容,再搭配资料的验证,像是是否为空值、手机号码是否为 10 码等等,这些基本功做到就能防止一般常见的攻击手法。

以上这些开发 WordPress 的核心概念我会透过一个铁人付金流外挂来逐一介绍,现在只要记得这三个大方向就好,Hook、Loop、Security。

WooCommerce 金流串接

WooCommerce 是 WordPress 母公司 Automattic 在 2015 年并购下来的一款专门做购物车的外挂,因为其丰富的功能以及能解决使用者在网路上卖东西的需求,让原本只是拿来写部落格用的 WordPress 逐渐成为建置购物网站的选择。

至於为何选择介绍 WooCommerce 金流串接来做为程序开发者的切入点?上文提到,不管全世界开发者设计了多少工具,本地的需求还是只能由本地的开发者来实现,再加上因为这类需求是直接关系到客户的业绩,能够很具体的展现开发者的价值,所以对接案者来说,报价会比较有空间跟弹性。

最重要的一点,只要是使用 WooCommerce 建置的购物车、并且开发时都遵循 WooCommerce 的规则,都可以通用这支外挂,因此可以直接贩售给其他有相同需求的客户,一次工重复卖,这绝对对是开发者的梦想。

因此接下来的文章我会以四个单元来介绍如何开发 WooCommerce 金流外挂,并且带到开发 WordPress 需要知道的核心知识,并且附上延伸资源来做补充,未来遇到问题就能靠自己的力量找到答案。

(一) 前置作业:说明如何拆解金流开发需求、串接文件需要注意的重点,以及本机开发环境与外挂结构介绍。

(二) 设定介面 说明如何建立设定选项以及增加自订栏位来记住金流商回传的资讯,同时介绍 WordPress 的资料库,以及如何 CRUD。

(三) 实作付款类别:WooCommerce 的金流类别介绍,解析内含的属性与方法,并且说明如何传递与接收参数,以及该如何写单元测试来进行验证。

(四) 部署与发行:介绍如何自动化部署到远端主机,以及当想要贩售该外挂给其他客户时该如何做到外挂更新以及序号控管的机制。

下一篇我们就先从前置作业说明如何拆解 WooCommerce 金流串接需求开始。

本文同步发表於:https://oberonlai.blog/tw/woocommerce-payment/


<<:  Day 1 - [绪论] 长照小帮手的背景与动机

>>:  30天轻松学会unity自制游戏-往前移动

想知道目标客群喜欢什麽?何不从搜寻意图下手!

面对面实体销售,我们能从聊天问答、肢体行为初步了解客户需求,但──在网路世界,如果你想知道客户喜欢什...

从零开始的8-bit迷宫探险【Level 4】Swift 基础语法 (二)

今日目标 认识完变数、常数、型态之後,接着来认识将资料做集合处理的型别: 阵列 (Array) 字典...

[Day 13] Leetcode 49. Group Anagrams (C++)

前言 中秋连假第一天,来开启一系列的题目练习~ 今天挑战的是top 100 liked中hash t...

Feedly 和 Inoreader,用RSS阅读器蒐集实用数位行销blog推荐资讯

这个实用网路行销工具系列文,将会整理我平常研究的各项网路行销工具,帮助工程师如果有现成的服务可以快速...

Day 21 : 笔记篇 08 — 数位笔记太多很凌乱怎麽办?使用 MOC 架构有系统地管理数百则的数位笔记

一、当笔记愈来愈多时,会发生什麽问题? 多数人使用笔记软件或是文件愈来愈多时一定都会遭遇相同问题:想...