leochien/laravel-spgateway is a Laravel package for spgateway library for laravel.
It currently has 34 GitHub stars and 11.626 downloads on Packagist (latest version 2.0.0).
Install it with composer require leochien/laravel-spgateway.
Discover more Laravel packages by leochien
or browse all Laravel packages to compare alternatives.
Last updated
Laravel Spgateway是一個開源的 智付通 非官方套件
$ composer require leochien/laravel-spgateway
config/app.php 註冊 ServiceProvider 和 Facade (Laravel 5.5 無須手動註冊)'providers' => [
// ...
LeoChien\Spgateway\SpgatewayServiceProvider::class,
],
'aliases' => [
// ...
'MPG' => LeoChien\Spgateway\Facades\MPG::class,
'Receipt' => LeoChien\Spgateway\Facades\Receipt::class,
'Refund' => LeoChien\Spgateway\Facades\Refund::class,
'Transfer' => LeoChien\Spgateway\Facades\Transfer::class,
],
php artisan vendor:publish --provider="LeoChien\Spgateway\SpgatewayServiceProvider"
修改 config/spgateway.php 中對應的參數。
在 .env 中加入下列設定
# 金流系統設定
SPGATEWAY_HASH_KEY=
SPGATEWAY_HASH_IV=
# 金流合作推廣商系統設定
SPGATEWAY_COMPANY_KEY=
SPGATEWAY_COMPANY_IV=
SPGATEWAY_PARTNER_ID=
SPGATEWAY_MERCHANT_ID_PREFIX=
SPGATEWAY_MERCHANT_ID=
# 發票系統設定
SPGATEWAY_RECEIPT_KEY=
SPGATEWAY_RECEIPT_IV=
SPGATEWAY_RECEIPT_MERCHANT_ID=
建立訂單
// 產生智付通訂單資料
$order = MPG::generate(
100,
'[email protected]',
'測試商品'
);
// $order的 getPostData() 及 getPostDataEncrypted() 會回傳包含即將傳送到智付通的表單資料,可在此時紀錄log
// 前台送出表單到智付通
return $order->send();
解析智付通回傳訂單資料
$tradeInfo = MPG::parse(request()->TradeInfo);
查詢訂單
$order = MPG::search(
'20180110151950mTHuUY'
100
);
generate ($amount, $email, $itemDesc [, $params ])
產生智付通建立訂單必要欄位
amount (Integer): 訂單金額email (String): 訂購人EmailitemDesc (String): 商品描述[ params (Array) ]: 其他可選參數,詳見下方參數表(Class): MPG Class實體,其中getPostData() 及 getPostDataEncrypted()會回傳即將送到智付通的表單資料$order = MPG::generate(
100,
'[email protected]',
'測試商品'
);
| 欄位 | 型態 | 可選值 | 預設 | 備註 |
|-----------------|:------------:|:-----------------:|:-------:|----------------------------------------------|
| MerchantOrderNo | Varchar(20) | | | 商店自訂編號,若無填寫則由套件產生 |
| LangType | String | zh-tw / en | zh-tw | |
| TradeLimit | Number | 60 ~ 900 | 180 | |
| ExpireDate | String (Ymd) | | | 範例:20171231 |
| ReturnURL | Url | | | |
| NotifyURL | Url | | | |
| CustomerURL | Url | | | |
| ClientBackURL | Url | | | |
| EmailModify | Number | 0 / 1 | 1 | |
| LoginType | Number | 0 / 1 | 0 | |
| OrderComment | String | | | |
| TokenTerm | String | | | 信用卡快速結帳 |
| CREDIT | Number | 0 / 1 | | 信用卡一次付清 |
| CreditRed | Number | 0 / 1 | | 信用卡紅利 |
| InstFlag | Number | 0 / 1 | | 信用卡分期付款 |
| UNIONPAY | Number | 0 / 1 | | 銀聯卡 |
| WEBATM | Number | 0 / 1 | | WebATM |
| VACC | Number | 0 / 1 | | ATM轉帳 |
| CVS | Number | 0 / 1 | | 超商代碼繳費 |
| BARCODE | Number | 0 / 1 | | 條碼繳費,訂單金額需介於20~20000 |
| CREDITAGREEMENT | Number | 0 / 1 | | 約定信用卡授權 |
| TokenLife | String | | | 約定信用卡付款之有效日期,範例:1912(2019-12) |
send ()
前台送出智付通訂單建立表單
$order->send();
parse ($tradeInfo)
解析智付通交易結果回傳參數,也適用於取號完成
tradeInfo (String): 智付通回傳,經AES加密之交易資料詳見智付通文件第六節:交易支付系統回傳參數說明 / 第七節:取號完成系統回傳參數說明
{
"Status": "..."
"Message": "..."
"Result": {...}
}
$tradeInfo = MPG::parse(request()->TradeInfo);
search ($orderNo, $amount)
產生智付通查詢訂單必要欄位
orderNo (String): 訂單編號amount (Integer): 訂單金額詳見智付通文件第四章:交易查詢系統回應訊息
{
"Status": "..."
"Message": "..."
"Result": {...}
}
// 查詢智付通訂單
$order = MPG::search(
'20180110151950mTHuUY'
100
);
開立發票
// 產生智付通開立發票資料
$receipt = Receipt::generate([
'BuyerName' => 'Leo',
'TotalAmt' => 10,
'ItemName' => [1],
'ItemCount' => [1],
'ItemUnit' => ['式'],
'ItemPrice' => [10],
]);
// $receipt的 getPostData() 及 getPostDataEncrypted 會回傳即將傳送到智付通的表單資料,可在此時紀錄log
// 送出開立發票申請,取得發票開立回傳結果
$res = $receipt->send();
觸發開立發票
// 產生智付通出發開立發票資料
$receipt = Receipt::generateTrigger('17122817285242624', '20171121WJNBX5NNBP', 100);
// $receipt的 getTriggerPostData() 及 getTriggerPostDataEncrypted() 會回傳即將傳送到智付通的表單資料,可在此時紀錄log
// 送出觸發開立發票申請,取得發票觸發開立回傳結果
$res = $receipt->send();
作廢發票
// 產生智付通作廢發票資料
$receipt = Receipt::generateInvalid('YF83646422', '作廢原因');
// $receipt的 getInvalidPostData() 及 getInvalidPostDataEncrypted() 會回傳即將傳送到智付通的表單資料,可在此時紀錄log
// 送出作廢發票申請,取得作廢發票回傳結果
$res = $receipt->sendInvalid();
查詢發票
// 查詢發票資料
$receipt = Receipt::search('20171121WJNBX5NNBP', 100);
generate ($params)
產生智付通開立電子發票必要欄位
params (Array): 詳見下方可選參數(Class): Class實體,其中getPostData() 及 getPostDataEncrypted()包含即將送到智付通的表單資料$receipt = Receipt::generate([
'BuyerName' => 'Leo',
'TotalAmt' => 10,
'ItemName' => [1],
'ItemCount' => [1],
'ItemUnit' => ['式'],
'ItemPrice' => [10],
]);
| 欄位 | 必填 | 型態 | 可選值 | 預設 | 備註 |
|------------------|:----:|:--------------:|:---------------------:|:-----:|------------------------------------|
| TransNum | | String | | | 智付寶平台交易序號 |
| MerchantOrderNo | | String | | | 商店自訂編號,若無填寫則由套件產生 |
| Status | | Number | 0 / 1 / 3 | 1 | 開立發票方式 |
| CreateStatusTime | | String (Y-m-d) | | | 範例:2017-12-31 |
| Category | | String | B2B / B2C | B2C | |
| BuyerName | ✔ | String | | | |
| BuyerUBN | | String | | | |
| BuyerAddress | | String | | | |
| BuyerEmail | | Email | | | |
| CarrierType | | String | 0 / 1 | 1 | |
| CarrierNum | | String | 0 / 1 | 0 | |
| LoveCode | | Number | | | |
| PrintFlag | | String | Y / N | Y | |
| TaxType | | String | 1 / 2 / 3 / 9 | 1 | |
| TaxRate | | Number | | 5 | |
| CustomsClearance | | Number | 1 / 2 | | |
| Amt | | Number | | | 若無填寫則由套件計算 |
| AmtSales | | Number | | | |
| AmtZero | | Number | | | |
| AmtFree | | Number | | | |
| TaxAmt | | Number | | | 若無填寫則由套件計算 |
| TotalAmt | ✔ | Number | | | |
| ItemName | ✔ | Array | | | |
| ItemCount | ✔ | Array | | | |
| ItemUnit | ✔ | Array | | | |
| ItemPrice | ✔ | Array | | | |
| ItemTaxType | | Array | | | |
| ItemAmt | | Array | | | 若無填寫則由套件計算 |
| Comment | | String | | | |
send()
傳送開立發票請求到智付通
詳見智付通文件第四節之二:開立發票系統回應訊息
{
"Status": "..."
"Message": "..."
"Result": {...}
}
$res = $receipt->send();
generateTrigger ($invoiceTransNo, $orderNo, $amount)
產生智付通觸發開立電子發票必要資訊
invoiceTransNo (String): 智付寶開立序號orderNo (String): 商店自訂編號amount (Integer): 發票金額(Class): Class實體,其中getTriggerPostData() 及 getTriggerPostDataEncrypted()會回傳即將送到智付通的表單資料$receipt = Receipt::generateTrigger('17122817285242624', '20171121WJNBX5NNBP', 100);
sendTrigger()
送出觸發開立電子發票請求到智付通
詳見智付通文件第四節之四:觸發開立發票系統回應訊息
{
"Status": "..."
"Message": "..."
"Result": {...}
}
$res = $receipt->sendTrigger();
generateInvalid ($receiptNumber, $invalidReason)
產生智付通觸發開立電子發票必要資訊
receiptNumber (String): 發票號碼receiptNumber (String): 作廢原因(Class): Class實體,其中getInvalidPostData() 及 getInvalidPostDataEncrypted()會回傳即將送到智付通的表單資料$receipt = Receipt::generateInvalid('17122817285242624', '作廢原因');
sendInvalid()
送出觸發開立電子發票請求到智付通
詳見智付通文件第五節之二:作廢發票系統回應訊息
{
"Status": "..."
"Message": "..."
"Result": {...}
}
$res = $receipt->sendInvalid();
search($orderNo, $amount)
查詢發票
orderNo (String): 商店自訂編號amount (Integer): 發票金額詳見智付通文件第七節之二:查詢發票系統回應訊息
{
"Status": "..."
"Message": "..."
"Result": {...}
}
$res = $receipt->search('20171121WJNBX5NNBP', 100);
因智付通信用卡退費有尚未請款需串接取消授權API,已請款需串接退款API之規則,本功能旨在整合此一過程,降低開發人員負擔 另外也提供非即時交易退款功能
// 產生智付通退費 / 取消授權必要資訊
$refund = Refund::generate('20171121WJNBX5NNBP', 100);
// $refund的 postType為cacnel時,訂單準備取消授權;為refund時,訂單準備退款
// $refund的 getPostData() 及 getPostDataEncrypted() 會回傳即將傳送到智付通的表單資料,可在此時紀錄log
// 送出退款/取消授權申請,取得回傳結果
$res = $refund->send();
generate ($orderNo, $amount[, $notifyUrl = null, $delayed = false, $params = []])
產生智付通退費 / 取消授權必要欄位
orderNo (String): 商店自訂編號amount (String): 訂單金額,若不想全額退款請於可選參數中傳送Amt欄位[ notifyUrl (String) ]: 接受取消授權結果位址,於取消授權或非即時交易時才需填寫[ delayed (Boolean) ]: 是否為非即時交易[ params (Array) ]: 詳見下方參數表(Class): Class實體,其中getPostData() 及 getPostDataEncrypted()包含即將送到智付通的表單資料;getPostType()為cacnel時,訂單準備取消授權,為refund時,訂單準備退款$refund = Refund::generate('20171121WJNBX5NNBP', 100);
| 欄位 | 必填 | 型態 | 備註 | |-----------|:----:|:------:|------------------------------------------------| | RefundAmt | | Number | 請退款金額,若發動退費後不退全額則需傳送此參數 |
| 欄位 | 必填 | 型態 | 備註 | |-------------|:----:|:------:|-----------------------------------| | AccNo | ✔ | String | 退款金額轉入之帳號 | | BankNo | ✔ | String | 金融機構總行代號 | | SubBankCode | ✔ | String | 金融機構分行代號 | | AccName | ✔ | String | 帳戶使用名稱 | | RefundAmt | ✔ | Number | 退款金額,必須小於等於訂單金額 | | Id | + | String | 買方身分證字號,Id及UBN需擇一填寫 | | UBN | + | String | 買方統一編號,Id及UBN需擇一填寫 |
send()
傳送退費 / 取消授權請求到智付通
取消授權:詳見智付通文件第五節:取消授權完成後系統回應訊息
退款:詳見智付通文件第五節:系統回應訊息
{
"Status": "..."
"Message": "..."
"Result": {...}
}
$res = $refund->send();
// 產生付款必要資訊
$charge = Charge::generate(
100,
'[email protected]',
'itemDesc',
'xxxxxxxxxxxxxxxxxx',
'xxx',
[
'MerchantOrderNo' => '20171121WJNBX5NNBP'
]
);
// $transfer的 getPostData() 及 getPostDataEncrypted() 會回傳即將傳送到智付通的表單資料,可在此時紀錄log
// 送出扣款
$res = $charge->send();
generate ($amount, $email, $itemDesc, $tokenValue, $tokenTerm, $params)
產生已約定信用卡付款必要欄位
$amount (String): 金額$email (String): 購買人 Email$itemDesc (Integer): 商品描述$tokenValue (Integer): 約定信用卡授權碼$tokenTerm (): 約定信用卡付款之付款人綁定資料$params (): 可選選項| 欄位 | 必填 | 型態 | 備註 | |-------------------|:----:|:------:|-------------------------------------------| | MerchantOrderNo | | String | 訂單編號 | | TokenSwitch | | String | 當此參數為”on”時,才會啟用約定信用卡付款授權功能 |
(Class): Class實體,其中 getPostData() 及 getPostDataEncrypted() 包含即將送到智付通的表單資料$charge = Charge::generate(
100,
'[email protected]',
'itemDesc',
'xxxxxxxxxxxxxxxxxx',
'xxx',
[
'MerchantOrderNo' => '20171121WJNBX5NNBP'
]
);
send()
傳送已約定信用卡付款請求到智付通
本文件未公開,請向合作之智付通業務人員索取
{
"Status": "..."
"Message": "..."
"Result": {...}
}
$res = $transfer->send();
// 產生平台費用扣款指示必要資訊
$transfer = Transfer::generate('20171121WJNBX5NNBP', 100, 0, 0);
// $transfer的 getPostData() 及 getPostDataEncrypted() 會回傳即將傳送到智付通的表單資料,可在此時紀錄log
// 送出扣款指示申請,取得扣款指示回傳結果
$res = $transfer->send();
generate ($merchantID, $amount, $feeType, $balanceType)
產生智付通扣款指示必要欄位
orderNo (String): 商店自訂編號amount (String): 金額feeType (Integer): 費用類別balanceType (Integer): 交易正負值(Class): Class實體,其中getPostData() 及 getPostDataEncrypted()包含即將送到智付通的表單資料$transfer = Transfer::generate('20171121WJNBX5NNBP', 100);
send()
傳送扣款指示請求到智付通
本文件未公開,請向合作之智付通業務人員索取
{
"Status": "..."
"Message": "..."
"Result": {...}
}
$res = $transfer->send();
Laravel Spgateway is open-sourced software licensed under the MIT license