knckff-roychang / laravel-newebpay
台湾蓝新金流(智付通)企业会员金流对接
1.1.8
2020-10-22 08:12 UTC
Requires
- php: ^7.0.0
README
Laravel 套件,台湾蓝新金流(智付通)企业会员金流对接
- Laravel 版本需求:5.5 以上
- 蓝新金流程式版本:1.5
- 官方API文件下载:https://www.newebpay.com/website/Page/content/download_api
- 对接蓝新金流,必须登录蓝新后台,创建商店,并获取该商店的 HashKey、HashIV
- 对接时建议先至蓝新的测试站申请企业会员账号、创建测试商店,做对接测试
正式站:https://www.newebpay.com
测试站:https://cwww.newebpay.com - 本套件适用的支付:信用卡、Google Pay、Samsung Pay、WebATM、ATM转账、超商代码缴费、条码缴费
- 信用卡、Google Pay、Samsung Pay 需先至蓝新后台的商店设置内申请启用
- 蓝新测试站所提供的测试信用卡号,可用于刷你产生的测试订单:
4000-2211-1111-1111 (一次性付款与分期付款)
4003-5511-1111-1111 (红利折抵)
注:有效月年及卡片背面末三码,任意填写即可。另外,测试站不接受其他卡号。 - 其他本套件未说明的事项(例如:交易流程、错误代码的含义),请参考官方API文件。
安装
(1)使用 composer 安装套件
composer require KNCKFF/laravel-newebpay
(2)建立数据表
php artisan migrate
(3)将蓝新金流的商店信息参数设置到 .env 文件
php artisan newebpay:init
用法
在你要展示订单页面的控制器中,使用 create 方法生成结账按钮所需的数据,并分配给前端的 blade 模板即可,示例如下:
(1)控制器
use KNCKFF\LaravelNewebpay\Library\NewebPay;
$newebpay = NewebPay::create([
// 必填參數
'MerchantOrderNo' => 訂單編號(不可重覆), // 例:a00001
'Amt' => 訂單總金額, // 例:150
'ItemDesc' => 商品資訊, // 例:測試商品
'Email' => 付款人電子信箱, // 例:abc@example.com
// 支付完成後,藍新傳送支付記錄的網址,此套件已寫好不必再指定。
// 但如果你還是想自訂,就如下行去指定。但路由、控制器內容及存入資料表須行自編寫
'NotifyURL' => 支付完成的網址, // 例:http://www.example.com/notifyRes
// 取號完成轉址的網址,此套件已寫好不必再指定。
// 但如果你還是想自訂,就如下行去指定。但路由、控制器內容及存入資料表須行自編寫
'CustomerURL' => 取號完成的網址, // 例:http://www.example.com/customerRes
// 可選參數
'ClientBackURL' => 返回商店按鈕的連結網址, // 例:http://www.example.com/shop/123
]);
return view(你訂單頁面的 blade 模版, [
'newebpay' => $newebpay, // newebpay 這個 key 名不要改掉
... 頁面其他資料的變數,以下省略 ...
]);
註1:交易資料參數必填的欄位,只剩範例中 MerchantOrderNo、Amt、ItemDesc、Email 這四項需要指定
註2:可選參數,像是返回商店按鈕的連結網址、限制信用卡分期的期數等等,依你專案需要額外去指定
註3:各項交易資料的參數名稱,皆與官方文件相同
(2)前端展示订单数据的页面中,把按钮元素放在你想要的位置即可
@component('newebpay::tradeButton', [
'newebpay' => $newebpay,
'button' => '<button type="submit" class="button is-success">前往結帳</button>',
])
@endcomponent
註:按鈕的 HTML Tag,可以依你的喜好去更改,直接修改 button 的值即可
(3)取号完成转址的 blade 模版名称(不需要副文件名 .blade.php),请直接设置在 .env 文件的「NEWEBPAY_CUSTOMER_BLADE」参数。从蓝新传来的数据都会在 $log 这个 Eloquent 实例中(它查询了 newebpay_customers 数据表),你可以在自己的 blade 使用此对象。例如:
<li>取號狀態及錯誤代碼:{{ $log->Status }}</li>
<li>訂單編號:{{ $log->MerchantOrderNo }}</li>
<li>交易金額:{{ $log->Amt }}</li>
<li>藍新交易序號:{{ $log->TradeNo }}</li>
<li>商店代號:{{ $log->MerchantID }}</li>
<li>繳費截止日期:{{ $log->ExpireDate }}</li>
<li>支付方式:{{ $log->PaymentType }}</li>
(4)支付完成的记录在 newebpay_notifies 数据表中,控制器中可以使用 Eloquent 的方式读取数据,例如:
use KNCKFF\LaravelNewebpay\Models\NewebpayNotify;
$notify = NewebpayNotify::all();
(5)取号完成的记录在 newebpay_customers 数据表中,你控制器可以使用 Eloquent 的方式读取数据,例如:
use KNCKFF\LaravelNewebpay\Models\NewebpayCustomer;
$customer = NewebpayCustomer::all();
测试
(1)此套件提供测试交易数据的表单,供你填写部分字段来模拟交易流程,配合官方文件了解一些交易数据参数的用途
请修改 .env 文件中的以下参数:
(1)NEWEBPAY_ENV 的值設為 dev (要關閉此測試表單,把此值設為 prod 即可)
(2)NEWEBPAY_MERCHANT_ID、NEWEBPAY_HASH_KEY、NEWEBPAY_HASH_IV 要設為藍新測試站商店的資料
(3)APP_URL 的值要設定專案的域名
(4)NEWEBPAY_CUSTOMER_BLADE 的值要用測試的模版名 newebpay::testCustomerRes
然后浏览器连接:
你的網域/newebpay/test/tradeForm