Day 27 - WooCommerce: 建立虚拟帐号付款订单

铁人赛进入尾声了,和大家分享个好消息,这支 WordPress 付款外挂已经写好送审到 WordPress 外挂目录并已经官方审核通过罗,因此在铁人赛的最後一天会公布下载点,请拭目以待唷^^ 回归正题,今天的要进行的是使用虚拟帐号付款方式,在永丰银行收款平台建立虚拟帐号付款订单。

处理付款

虚拟帐号付款的商业逻辑和信用卡付款有明显的差别。当顾客进行信用卡付款的流程时,刷卡这一关能不能成功刷过,我们当下就可以取得 PayToken 来查询订单状态得知结果了。

而虚拟帐号付款是属於被动的等待通知,顾客有进行银行转帐消费的金额到虚拟帐号时,永丰银行会即时通知我们的网站。

图 21-1
图 21-1: 文件第 6 页

回顾一下永丰 API 文件中的第 6 页流程示意图中的第 3 步骤「回传付款虚拟帐号」。我们今天的流程就是要在永丰银行收款平台建立一笔虚拟帐号付款订单,然後等待顾客实际付款。

改写 process_payment

图 27-2
图 27-2: class-wc-gateway-sinopac-va.php

第 9 行 取得 QPay 实例。
第 13-14 行 取得商品名称。订单中可能有多笔,取第一笔当代表就好。
第 17-23 行 组成要给永丰金流收款 API 的讯息内文结构,atm_expired_date 是虚拟付款必填参数,设定此虚拟帐号的时效为 7 天。
第 27 行 送出建立信用卡订单的请求到给永丰 API。
第 28 行 分析永丰 API 的回覆,见图 27-3 说明。
第 30-32 行 有错误直接丢出 Exception 没关系,WooCommerce 会补捉它并在 AJAX 跑完後显示红色错误讯息在页面上。
第 34-42 行 永丰 API 给我们成功的回覆,清空购物车。
第 46 行 把交易资料存到 meta。
第 54 行 会走到这一行代表 API 回覆错误讯息,存 log,准备侦错。

图 27-3
图 27-3: class-wc-gateway-sinopac-va.php

第 17 行 付款的是虚拟付款。
第 18-21 行 主要是要取得 AtmPayNo,让它可以显示给顾客,让顾客知道要付款到该帐号完成消费。

第 31 行 回传 ATM 资料。

流程总结

今天的流程更动的程序码已经可以让我们建立虚拟帐号订单并取得永丰银行的虚拟帐号了,接下来要把此组号码显示在网页上给顾客,这样顾客才知道要转帐到那个银行帐号。

接下来的实作细节,在明天和大家分享喔,我们明天见。

注:本日的范例程序码可在这里浏览


<<:  [NestJS 带你飞!] DAY26 - Swagger (上)

>>:  [DAY27]将Line讯息存入资料库(01)

Day27 Vue CLI 介绍

前面讲了一对现在怎又多了CLI? CLI有事要干嘛的? 在之前我们写Vue时都是用vue.js和&l...

Day25【Web】TCP 连线与断线:三次握手、四次挥手

TCP 是一种要求资料正确性的传输方式, 这表示它需要一些特殊机制, 来确保传输的数据不会出错。 其...

Day2React安装方式简介

安装方式 根据官网介绍,本次铁人赛会着重介绍下列三种安装方式: CDN连结 快速建立react环境的...

虹语岚访仲夏夜-0(悲伤的blue)

台北,又变了呢,记得很久前,才在盖的101到现在,烟火都不知道放了几遍,他一定没有在看那些,如果有机...

Day10 Collectionview小实作4

紧接着昨天~ 我们写了一个func 并且利用结构加入阵列的方式写入每个变数的字串以及图片。 而後在生...