knckff-roychang/laravel-newebpay

台湾蓝新金流(智付通)企业会员金流对接

1.1.8 2020-10-22 08:12 UTC

This package is auto-updated.

Last update: 2024-09-22 16:56:11 UTC


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