Laravel 串接綠界(ECPay)的非官方套件 - GitHub
文章推薦指數: 80 %
use TsaiYiHua\ECPay\Checkout; class CheckoutController extends Controller { protected $checkout; public function __construct(Checkout $checkout) ...
Skiptocontent
{{message}}
tsaiyihua
/
laravel-ecpay
Public
Notifications
Fork
19
Star
46
Laravel串接綠界(ECPay)的非官方套件
46
stars
19
forks
Star
Notifications
Code
Issues
0
Pullrequests
0
Actions
Projects
0
Wiki
Security
Insights
More
Code
Issues
Pullrequests
Actions
Projects
Wiki
Security
Insights
Thiscommitdoesnotbelongtoanybranchonthisrepository,andmaybelongtoaforkoutsideoftherepository.
master
Branches
Tags
Couldnotloadbranches
Nothingtoshow
{{refName}}
default
Couldnotloadtags
Nothingtoshow
{{refName}}
default
3
branches
21
tags
Code
Latestcommit
YihuaTsai
Mergebranch'master'ofgithub.com:tsaiyihua/laravel-ecpay
…
4800826
Feb11,2022
Mergebranch'master'ofgithub.com:tsaiyihua/laravel-ecpay
4800826
Gitstats
50
commits
Files
Permalink
Failedtoloadlatestcommitinformation.
Type
Name
Latestcommitmessage
Committime
config
documents
resources/views
src
.gitignore
composer.json
composer.lock
readme.md
Viewcode
LaravelECPay
系統需求
安裝
環境設定
.env裡加入
用法
基本用法
需要分期付款時
定期定額扣款
範例
需要開立發票時
範例
查詢訂單
查詢發票
開立發票
套件中有設定和綠界溝通用的route及基本處理方法,如果要有自己的處理邏輯要用自己寫好的route,擔心和套件原設定的route衝突時
如果要用自己傳送資料的頁面
所有文件列的參數基本上都可用,參數用法請參考綠界串接文件
參考文件
readme.md
LaravelECPay
LaravelECPay為串接綠界的非官方套件
系統需求
v3.x
PHP>=8.0
Laravel>=9.0
v2.x
PHP>=7.2且<8.0
Laravel<9且>=6.0
v1.x(不維護更新)
PHP>=7且<8.0
Laravel<6.0且>=5.7
安裝
composerrequiretsaiyihua/laravel-ecpay
環境設定
phpartisanvendor:publish--tag=ecpay
這裡會將設定檔ecpay.php複製一份到config的目錄下。
.env裡加入
ECPAY_MERCHANT_ID=
ECPAY_HASH_KEY=
ECPAY_HASH_IV=
ECPAY_INVOICE_HASH_KEY=
ECPAY_INVOICE_HASH_IV=
金流測試用的參數值請參考介接文件ecpay_gw_p110.pdf第11頁。
查詢發票用的參數請請參考介接文件ecpay_004.pdf第6頁。
用法
基本用法
產品資料單筆時可簡單只傳送ItemName及TotalAmount
useTsaiYiHua\ECPay\Checkout;
classCheckoutControllerextendsController
{
protected$checkout;
publicfunction__construct(Checkout$checkout)
{
$this->checkout=$checkout;
}
publicfunctionsendOrder()
{
$formData=[
'UserId'=>1,//用戶ID,Optional
'ItemDescription'=>'產品簡介',
'ItemName'=>'ProductName',
'TotalAmount'=>'2000',
'PaymentMethod'=>'Credit',//ALL,Credit,ATM,WebATM
];
return$this->checkout->setPostData($formData)->send();
}
需要分期付款時
加上withInstallment(分期期數)
信用卡分期可用參數為:3,6,12,18,24
ex:3,6
範例
承上,在return時,加上withInstallment即可
return$this->checkout->setPostData($formData)->withInstallment('3,6')->send();
定期定額扣款
加上withPeriodAmount($periodAmt)
範例
承上,加上參數,帶入withPeriodAmount即可
...
$periodAmt=[
'PeriodAmount'=>2550,
'PeriodType'=>'M',
'Frequency'=>'1',
'ExecTimes'=>10,
'PeriodReturnURL'
];
return$this->checkout->setPostData($formData)->withPeriodAmount($periodAmt)->send();
需要開立發票時
加上withInvoice($invData)即可。
開立發票時,產品內容必須要符合即定格式傳送,不能只帶ItemName及TotalAmount
開立發票時,特店必須要有會員系統並傳送會員相關資料
測試開立發票時,MerchantID請設2000132
範例
useTsaiYiHua\ECPay\Checkout;
classCheckoutControllerextendsController
{
protected$checkout;
publicfunction__construct(Checkout$checkout)
{
$this->checkout=$checkout;
}
publicfunctionsendOrder()
{
$items[0]=[
'name'=>'產品333',
'qty'=>'3',
'unit'=>'個',
'price'=>'150'
];
$formData=[
'itemDescription'=>'產品簡介',
'items'=>$items,
'paymentMethod'=>'Credit',
'userId'=>1
];
$invData=[
'Items'=>$items,
'UserId'=>1,
'CustomerName'=>'UserName',
'CustomerAddr'=>'ABC123',
'CustomerEmail'=>'email@address'
];
return$this->checkout->setPostData($formData)->withInvoice($invData)->send();
}
查詢訂單
useTsaiYiHua\ECPay\QueryTradeInfo;
classQueryTradeControllerextendsController
{
protected$queryTradeInfo;
publicfunction__construct(QueryTradeInfo$queryTradeInfo)
{
$this->queryTradeInfo=$queryTradeInfo;
}
publicfunctionqueryInfo($orderId)
{
return$this->queryTradeInfo->getData($orderId)->query();
}
}
查詢發票
useTsaiYiHua\ECPay\QueryInvoice;
classQueryInvoiceControllerextendsController
{
protected$queryInvoice;
publicfunction__construct(QueryInvoice$queryInvoice)
{
$this->queryInvoice=$queryInvoice;
}
publicfunctionqueryInvInfo($orderId)
{
return$this->queryInvoice->getData($orderId)->query();
}
}
開立發票
useTsaiYiHua\ECPay\Invoice;
useTsaiYiHua\ECPay\Constants\ECPayDonation;
useTsaiYiHua\ECPay\Services\StringService;
classInvoiceControllerextendsController
{
publicfunction__construct(Invoice$invoice)
{
$this->invoice=$invoice;
}
publicfunctionissueInvoice()
{
$itemData[]=[
'name'=>'productname',
'qty'=>1,
'unit'=>'piece',
'price'=>5000
];
$invData=[
'UserId'=>1,
'Items'=>$itemData,
'CustomerName'=>'UserName',
'CustomerEmail'=>'[email protected]',
'CustomerPhone'=>'0912345678',
'OrderId'=>StringService::identifyNumberGenerator('O'),
'Donation'=>ECPayDonation::Yes,
'LoveCode'=>168001,
'Print'=>0,
'CarruerType'=>1
];
return$this->invoice->setPostData($invData)->send();
}
}
套件中有設定和綠界溝通用的route及基本處理方法,如果要有自己的處理邏輯要用自己寫好的route,擔心和套件原設定的route衝突時
在app/Http/Providers/AppServiceProvider的register加入
ECPay::ignoreRoutes();
如果要用自己傳送資料的頁面
方法一:在.env裡使用ECPAY_SEND_FORM的環境變數來指定。
方法二:直接指定ECPay::$sendForm的值來指定。
所有文件列的參數基本上都可用,參數用法請參考綠界串接文件
回傳參數的背景通知(ReturnURL),套件裡有預設的網址,但只止於通知,如果要有寫入資料庫的設計,要再設計自己的回傳通知網址。
OrderResultURL為結帳完返回自已站台的網址,不能與ReturnURL相同。
參考文件
綠界科技全方位金流信用卡介接技術文件(2021-08-19)
V5.2.8
文件編號gw_p110
文件位置documents/ecpay_gw_p110.pdf
綠界科技B2C電子發票介接技術文件(2022-01-03)
V3.6.4
文件編號gw_i100
文件位置documents/ecpay_004.pdf
綠界科技全方位金流介接技術文件(2021-11-30)
V5.3.11
文件編號gw_p100
文件位置documents/ecpay_011.pdf
About
Laravel串接綠界(ECPay)的非官方套件
Resources
Readme
Stars
46
stars
Watchers
2
watching
Forks
19
forks
Releases
21
3.0.0
Latest
Feb11,2022
+20releases
Packages0
Nopackagespublished
Languages
PHP
99.7%
Blade
0.3%
Youcan’tperformthatactionatthistime.
Yousignedinwithanothertaborwindow.Reloadtorefreshyoursession.
Yousignedoutinanothertaborwindow.Reloadtorefreshyoursession.
延伸文章資訊
- 1綠界科技ECPay - Home | Facebook
綠界科技ECPay. 2210 likes · 2 talking about this. 綠界科技Ecpay是第三方支付領導品牌,提供金流、物流、電子發票、 跨境電商、資安聯防一站購足服務,支...
- 2國內金流支付:綠界科技ECPay 使用說明(適用於台灣)
國內金流支付:綠界科技ECPay 使用說明(適用於台灣). 綠界科技提供台灣四大超商代收付服務,並與超過10間台灣主要銀行合作,更整合物流,讓您與顧客交易更方便。
- 3登入 - 玉山銀行
- 4綠界科技ECPay
綠界科技ECPay. 2.196 Me gusta · 10 personas están hablando de esto. 綠界科技Ecpay是第三方支付領導品牌,提供金流、物流、電子發票、...
- 5Laravel 串接綠界(ECPay)的非官方套件 - GitHub
use TsaiYiHua\ECPay\Checkout; class CheckoutController extends Controller { protected $checkout; ...