Day 12 - PHP SDK: 建立信用卡、虚拟帐号订单

昨天发布了 Sinopac PHP SDK,接着来有几天的篇幅会介绍如何使用。今天先来谈谈建立订单的部分。

建立订单

Day 11 我们已经实例化 QPay 类别。

图 12-1
图 12-1: PHP SDK - 实例化 QPay 类别 程序码

接着可以使用以下方法来建立订单。

和 API 的栏位稍有不同,阵列的键值一律小写 Snake-case naming,是为了一致的 Coding Style 及简化输入架构,一律为一维阵列。

有的必填参数已自动带入了所以不用填写,只列出对应的部分。


QPay::createOrderByCreditCard(array $data)

建立信用卡订单,使用信用卡刷卡付款。

资料栏位 对应 API 的栏位 说明
order_no * OrderNo 订单编号
amount * Amount 订单总金额,需补上小数二位,若金额为 10 元则值请填入 1000
product_name * PrdtName 商品名称
order_note Memo 备注
param_1 Param1 自订参数一
param_2 Param2 自订参数二
param_3 Param3 自订参数三
return_url * ReturnURL 将消费者端导回您指定的付款完成页面
backend_url BackendURL 通知您主机端付款完成的 URL
cc_auto_billing * CardParam [AutoBilling] 建立信用卡时为 - Y:自动请款 N:不自动请款。若使用银联卡或定期定额时系统一律为自动请款。
cc_expired_billing_days CardParam [ExpBillingDays] 若订单为待授权未请款时,可以指定刷卡完成後多久自动请款。可设定范围为 1-7 但是 AutoBilling 设为 Y 时则该参数会忽略。
cc_expired_minutes CardParam [ExpMinutes] 信用卡付款连结有效时间(分钟) 。预设为 10 分钟可设定范围为 1-30

程序码范例:
图 12-2
图 12-2: PHP SDK - 建立信用卡订单 程序码

以上为使用 createOrderByCreditCard 方法建立订单,API 回应的结果主要资讯在 Message 已解密为阵列结构,请参考 API 文件第 35 页,有对回应的栏位有详细说明。


QPay::createOrderByATM(array $data)

建立虚拟帐号订单,使用 ATM 转帐到虚拟帐号付款。

资料栏位 对应 API 的栏位 说明
order_no * OrderNo 订单编号
amount * Amount 订单总金额,需补上小数二位,若金额为 10 元则值请填入 1000
product_name * PrdtName 商品名称
order_note Memo 备注
param_1 Param1 自订参数一
param_2 Param2 自订参数二
param_3 Param3 自订参数三
return_url * ReturnURL 将消费者端导回您指定的付款完成页面
backend_url BackendURL 通知您主机端付款完成的 URL
atm_expired_date * ATMParam [ExpireDate] 付款截止日期。例如 2017/5/3 则带 20170503,设定值最大为 30 天。

程序码范例:
图 12-3
图 12-3: PHP SDK - 建立虚拟帐号订单 程序码

以上为使用 createOrderByATM 方法建立订单,API 回应的结果主要资讯在 Message 已解密为阵列结构,请参考 API 文件第 35 页,有对回应的栏位有详细说明。


API 回应

在前一个文章段落介绍的建单过程取得永丰金收款平台的 API 回应後,资料栏位在 Message 且 SDK 已自动解密可直接取用。

<?php
if (!empty($results['Message'])) {
    print_r($results['Message']);
}

信用卡付款

图 12-4
图 12-4: 信用卡订单 Messsage 栏位 (JSON 排版)

建立信用卡订单後,API 的回应会有 CardPayURL 这个栏位,提供给商店网站进行转址到信用卡付款页面,让使用者进行付款。付款完再跳转回商店网站,如下图流程。

图 12-5
图 12-5: 文件第 7 页

在永丰金收款平台刷卡完之後,从建立订单的栏位 return_url 转回商店网站时会带上 PayToken 参数,让商店网站可以查询付款状态。

虚拟帐号付款

图 12-6
图 12-6: 虚拟帐号订单 Messsage 栏位 (JSON 排版)

建立虚拟帐号订单後,API 的回应会,API 的回应会有 AtmPayNoWebAtmURLOtpURL 这三个栏位,提供给商店网站。

图 12-7
图 12-7: 文件第 6 页

AtmPayNo 用於显示在结帐完成页面 (Thank-you page) 或订单资讯页面,让使用者能透过 ATM 转帐进行结帐。

建立虚拟帐号订单时,建议带上 backend_url,以利永丰金收款平台在收到款项时,即时通知商店网站进行商店的订单状态变更及其它商业逻辑上的後续处理(例如出货,等等。)

总结

PHP SDK 把中间复杂的 HashId 计算IV 计算Sign 计算AES 加密解密等流程,都帮忙处理了,所以只要用少少的程序码就能完成串接,能大幅增加开发人员的工作效率喔。

如果在使用上有什麽问题,欢迎到 GitHub 回报,我会尽快修复唷。^^

注:如果是在测试环境,请记得启用沙盒模式,发起 API 请求时会送往收款平台的测试网址。

$qpay->enableSandbox();

本文更新於笔者的 TerryL 部落格,Day 12 - PHP SDK: 建立信用卡、虚拟帐号订单,有兴趣可前往阅读及讨论。


<<:  Day-11 Backpropagation 介绍

>>:  网路架构检视 - 连线存取、防火墙

[DAY 28] 章节3-8: 前往农场前夕- k-means(k平均分类演算法) (2/2)

3-8 前往农场前夕 「设定的方法有很多种,如果是已经知道群数的话,就可以设定k为该群数,让k-me...

[前端暴龙机,Vue2.x 进化 Vue3 ] Day9.计算属性 computed

甚麽是计算属性? 甚麽时候用计算属性? 接下来带大家来看看,也会搭配一些例子~ 甚麽是计算属性? c...

Checkbox 与 Radio 组件-金鱼都能懂的Bootstrap5网页框架开发入门

Bootstrap已是目前全球被大量网页开发者使用的一个网页UI框架了,其特色在於使用简单,开发快速...

ZFS优化与修复

光是建立ZFS pool是不够的,如果要能使用rsync来定期备份unRaid Array,就必须对...

OpenStack Neutron 介绍 — Linux Bridge Provider Networks

本系列文章同步发布於笔者网站 上篇介绍了 Neutron 的架构,再接下来几天会介绍 Neutron...