muzik / esafe-php-sdk
由 muzik-online 制作的 esafe.com.tw 不官方 PHP SDK
1.0.0
2019-12-18 09:22 UTC
Requires
- php: ^7.4
- guzzlehttp/guzzle: ^6.4
Requires (Dev)
- phpunit/phpunit: ^8.4
This package is auto-updated.
Last update: 2024-09-18 19:33:48 UTC
README
由 Muzik Air 制作的紅陽支付不官方 PHP SDK,紅陽支付。
注意事项
- 由于设计缺陷,紅陽支付无法从 PHP 端发送交易
- 需要前端另外实现发送交易的功能
- 前端在计算
ChkValue时,请务必交由后端程序计算,否则将暴露交易密钥
- 前端在计算
- 本 SDK 主要关注接受紅陽的 WebHook 功能(后台显示为“交易成功接收网址”、“交易失败接收网址”和“交易回传确认网址”)
- 需要前端另外实现发送交易的功能
- 部分功能需要另外申请紅陽支付
- 台湾支付方式
- 电子发票(捐赠码与统一编号功能)
安装
composer require muzik/esafe-php-sdk
用法
处理交易时 WebHook
<?php use Muzik\EsafeSdk\Esafe; $sdk = new Esafe([ // string of password when transaction, it should be set in esafe.com.tw // IMPORTANT: The value is **NOT** login password for esafe.com.tw! 'transaction_password' => 'abcd5888', ]); $sdk->handle(Esafe::HANDLER_CREDIT_CARD, \GuzzleHttp\Psr7\ServerRequest::fromGlobals()); // The following method is also allowed: // $sdk->handle(Esafe::HANDLER_CREDIT_CARD, $_POST);
确认交易状态
<?php use Muzik\EsafeSdk\Esafe; $sdk = new Esafe([ // string of password when transaction, it should be set in esafe.com.tw // IMPORTANT: The value is **NOT** login password for esafe.com.tw! 'transaction_password' => 'abcd5888', ]); $sdk->check([ // 商家代號 'web' => 'S1103020010', // 交易金額 'MN' => '110', // 紅陽交易編號 'buysafeno' => '2400009912300000019', // 商家訂單編號 'Td' => 'AC9087201', // 備註 'note1' => '', 'note2' => '', ], $isTesting = false);
进行退款处理
<?php use Muzik\EsafeSdk\Esafe; $sdk = new Esafe([ // string of password when transaction, it should be set in esafe.com.tw // IMPORTANT: The value is **NOT** login password for esafe.com.tw! 'transaction_password' => 'abcd5888', ]); $sdk->refund([ // 商家代號 'web' => 'S1103020010', // 交易金額 'MN' => '1000', // 紅陽交易編號 'buysafeno' => '2400009912300000019', // 訂單編號(通常由商家自行生成) 'Td' => 'AC9087201', // 退款原因 'RefundMemo' => 'Hello World', ], $isTesting = false);
可用的处理器
- 所有支付方式都有“交易结果”
- 对于非同步付款(见下注)的支付方式,会增加一个“付款结果”
- 超商条码
- 超商代码
- 虚拟银行账户
- 货到付款
非同步付款:消费者在交易结果生成后才进行付款。
消费者购买商品 => 商店生成交易结果(包含超商条码) => 消费者凭借交易结果的超商条码缴费 => 商店取得付款结果
Esafe::HANDLER_CREDIT_CARD: 信用卡Esafe::HANDLER_UNIONPAY_CARD: 银联卡Esafe::HANDLER_BARCODE: 超商条码Esafe::HANDLER_BARCODE_RESULT: 超商条码付款结果Esafe::HANDLER_PAYCODE: 超商代码Esafe::HANDLER_PAYCODE_RESULT: 超商代码付款结果Esafe::HANDLER_WEB_ATM: 网络ATMEsafe::HANDLER_BANK_TRANSFER: 虚拟银行账户Esafe::HANDLER_BANK_TRNASFER_RESULT: 虚拟银行账户付款结果Esafe::HANDLER_CASH_ON_DELIVERY: 货到付款Esafe::HANDLER_CASH_ON_DELIVERY_RESULT: 货到付款Esafe::HANDLER_TAIWAN_PAY: 台湾Pay
退款注意事项
web,MN,buysafeno,Td及RefundMemo为必填,且不可为空字符串- 发出退款的主机 IP 需经红阳认证,请另行申请
- 退款仅限于信用卡及银联卡的付款
- 仅能退款 2 个月内的交易
- 2 个月前的交易只能通过后台进行退款操作
检查注意事项
web为必填MN,buysafeno,Td,note1及note2可选填,可多填但至少需要填写一个- 如果没有加入
buysafeno,只能查询近七天内的交易
错误处理
本 SDK 只会抛出三种异常
HandlerException,CheckException及RefundException- 如果不属于这两种异常,表示底层出现致命错误
- 这三种异常都继承自
\RuntimeException
- 请妥善处理这两种异常
- 使用
check功能时,如果没有交易记录仍然会抛出CheckException,其 Message 为“无交易,请联系您的商家”
许可证
此库采用 MIT 许可证。