muzik/esafe-php-sdk

由 muzik-online 制作的 esafe.com.tw 不官方 PHP SDK

1.0.0 2019-12-18 09:22 UTC

This package is auto-updated.

Last update: 2024-09-18 19:33:48 UTC


README

由 Muzik Air 制作的紅陽支付不官方 PHP SDK,紅陽支付

注意事项

  1. 由于设计缺陷,紅陽支付无法从 PHP 端发送交易
    • 需要前端另外实现发送交易的功能
      • 前端在计算 ChkValue 时,请务必交由后端程序计算,否则将暴露交易密钥
    • 本 SDK 主要关注接受紅陽的 WebHook 功能(后台显示为“交易成功接收网址”、“交易失败接收网址”和“交易回传确认网址”)
  2. 部分功能需要另外申请紅陽支付
    • 台湾支付方式
    • 电子发票(捐赠码与统一编号功能)

安装

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);

可用的处理器

  1. 所有支付方式都有“交易结果”
  2. 对于非同步付款(见下注)的支付方式,会增加一个“付款结果”
    • 超商条码
    • 超商代码
    • 虚拟银行账户
    • 货到付款

非同步付款:消费者在交易结果生成后才进行付款。

消费者购买商品 => 商店生成交易结果(包含超商条码) => 消费者凭借交易结果的超商条码缴费 => 商店取得付款结果

  • 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: 网络ATM
  • Esafe::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, TdRefundMemo 为必填,且不可为空字符串
  • 发出退款的主机 IP 需经红阳认证,请另行申请
  • 退款仅限于信用卡及银联卡的付款
  • 仅能退款 2 个月内的交易
    • 2 个月前的交易只能通过后台进行退款操作

检查注意事项

  • web 为必填
  • MN, buysafeno, Td, note1note2 可选填,可多填但至少需要填写一个
  • 如果没有加入 buysafeno,只能查询近七天内的交易

错误处理

本 SDK 只会抛出三种异常

  • HandlerException, CheckExceptionRefundException
    • 如果不属于这两种异常,表示底层出现致命错误
    • 这三种异常都继承自 \RuntimeException
  • 请妥善处理这两种异常
  • 使用 check 功能时,如果没有交易记录仍然会抛出 CheckException,其 Message 为“无交易,请联系您的商家”

许可证

此库采用 MIT 许可证。