fall1600 / suntech
Payment solution of SunTech(紅陽科技), implementing by pure PHP
v1.0.2
2020-09-11 03:55 UTC
Requires
- ext-curl: *
- ext-json: *
- ext-mbstring: *
- myclabs/php-enum: ^1.7
This package is auto-updated.
Last update: 2025-03-23 21:59:05 UTC
README
簡述: 在紅陽金流裡商城與付款方式綁定, 一個商城id 代表一種付款方式, 轉導至結帳頁時也只會顯示一種付款方式
支援付款方式
- 信用卡
- 銀聯卡
- 虛擬ATM
- 超商代收(條碼繳費單)
- 超商代碼
- WebATM
- 台灣pay
- 超商取貨付款
How to use
控制交易方式
- $merchantId: 你在紅陽申請的商店代號
- $order: 你的訂單物件, 務必實作package 中的OrderInterface
- $payer: 你的付款人物件, 務必實作package 中的PayerInterface
// 信用卡付款 $info = new CreditInfo($creditMerchantId, $order, $payer);
// 銀聯卡付款, 與信用卡共用merchantId, webhook url設定; 文件第7頁 $info = new UnionPayInfo($unionMerchantId, $order, $payer);
// 虛擬Atm 付款, 與超商代收(條碼繳費單) 共用merchantId, webhook url設定; 文件第8頁 $info = (new AtmInfo($atmMerchantId, $order, $payer)) ->appendProduct($product1) ->appendProduct($product2);
// 超商代收(條碼繳費單) $info = (new CvsBarcodeInfo($barcodeMerchantId, $order, $payer)) ->appendProduct($product1) ->appendProduct($product2);
// 超商代碼(ibon, FamiPort 那種) $info = new CvsPaycodeInfo($paycodeMerchantId, $order, $payer);
// 台灣pay $info = new TaiwanPayInfo($twpayMerchantId, $order, $payer);
建立Suntech 物件, 注入商店資訊, 帶著交易資訊前往紅陽付款
- $merchantId: 你在紅陽商店代號
- $tradePassword: 交易密碼
$suntech = new Suntech(); $suntech ->setIsProduction(false) // 設定環境, 預設就是走正式機 ->setMerchant(new Merchant($merchantId, $tradePassword)) ->checkout($info);
請在你的訂單物件實作 OrderInterface
<?php namespace Your\Namespace; use fall1600\Package\Suntech\Contracts\OrderInterface; class Order implements OrderInterface { // your order detail... }
請在你的付款人(假設是Member), 實作PayerInterface
<?php namespace Your\Namespace; use fall1600\Package\Suntech\Contracts\PayerInterface; class Member implements PayerInterface { // your member detail... }
解開來自紅陽的交易通知
// 信用卡的交易結果 $isValid = $merchant->setRawData($request->all(), ServiceType::CREDIT)->validateResponse(); // 超商代碼的交易結果 $isValid = $merchant->setRawData($request->all(), ServiceType::CVS_PAYCODE)->validateResponse(); // 超商代收(條碼繳費單)的交易結果 $isValid = $merchant->setRawData($request->all(), ServiceType::CVS_BARCODE)->validateResponse(); // 虛擬ATM 的交易結果 $isValid = $merchant->setRawData($request->all(), ServiceType::ATM)->validateResponse(); // WebATM 的交易結果 $isValid = $merchant->setRawData($request->all(), ServiceType::WEB_ATM)->validateResponse(); // 台灣pay 的交易結果 $isValid = $merchant->setRawData($request->all(), ServiceType::TAIWAN_PAY)->validateResponse(); // response 封裝了通知交易的結果, 以下僅列常用methods $resp = $merchant->getResponse(); // 商城id $resp->getMerchantId(); // 紅陽提供的交易代碼 $resp->getBuySafeNo(); // 交易金額 $resp->getAmount(); // 此回傳的檢核碼 $resp->getChecksum(); // 整包payload $resp->getData();
單筆交易查詢
$resp = $suntech ->setMerchant($merchant) ->query(new QueryRequest($merchantId, $order, $buySafeNo = null, $orderNumber = null, $note1 = null, $note2 = null)); $isValid = $merchant->setRawData($resp, 'query')->validResponse(); // 查詢的response, 有需要也可以validate