antiquete/eazypay-integration

ICICI Eazypay API 的 PHP 7 集成

v1.1.0 2023-04-14 23:50 UTC

This package is auto-updated.

Last update: 2024-09-15 03:08:43 UTC


README

Eazypay 集成

ICICI Eazypay API 的 PHP 7 集成。

安装

composer require antiquete/eazypay-integration

要求

数据库

一个用于存储交易的表。应有一个 10 个字符长的唯一字段用于 transaction_id。以下匹配项应该是足够的。

CREATE TABLE `transactions` (
 `transaction_id` varchar(10) NOT NULL COMMENT 'Unique 10 Chars long transaction id. Neccessary!',
 `amount` decimal(19,4) NOT NULL COMMENT 'Amount of transaction.',
 `start_time` datetime NOT NULL COMMENT 'DATETIME of when transaction got created.',
 `end_time` datetime DEFAULT NULL COMMENT 'DATETIME of whne transaction ended (Completed/Failed).',
 `response_code` varchar(6) DEFAULT NULL COMMENT 'Response Code as received from Eazypay server. This should be used to verify whether payment succeded',
 PRIMARY KEY (`transaction_id`)
)

回调(可选)

这些回调仅在通过库处理响应时需要。

  • matchTransactionId - 这应该与数据库中存储的 'transaction_id' 和 '\$refTransactionId' 匹配,并根据结果返回 true 或 false。
function matchTransactionId($refTransactionId) { /* ... */ }
  • matchTransactionAmount - 这应该与 '\$refAmount' 和存储在数据库中具有 '\$refTransactionId' 的交易的金额匹配,并根据结果返回 'true' 或 'false'。
function matchTransactionAmount($refTransactionId, $refAmount) { /* ... */ }
  • onSuccess - 付款成功时做什么?
function onSuccess($refTransactionId) { /* ... */ }
  • onFail - 付款失败时做什么?'\$refResponseCode' 将是收到的付款响应代码,将其与交易一起存储。
function onFail($refTransactionId, $refResponseCode) { /* ... */ }
  • onDeny - 付款数据不匹配时做什么?'\$reason' 将显示付款被拒绝的原因。
function onDeny($refTransactionId, $reason) { /* ... */ }

用法

存在两个类

  • Eazypay - 用于处理链接生成和响应处理。
  • Transaction - 用于处理 'transaction_id' 生成。

遵循的工作流程

    1. 创建一个交易。
    1. 将带有 'transaction_id' 的交易存储在数据库中。
    1. 使用该交易生成付款链接。
    1. (可选)在 Return URL 页面上 'handleResponse'。
    1. (可选)在付款 'onSuccess' 或 'onFail' 时更新数据库中的交易。

示例

创建并存储具有唯一检查的交易(步骤 1 和 2),

use Antiquete\Eazypay\Transaction;
$transaction = new Transaction($amount);
while($database->existsTransaction($transaction->id())) // Check is a entry with transaction_id exists in database
{
    $transaction->refreshId();  // Keep refreshing ids until a unique id is found.
}
// Insert transaction with $transaction->id() in database here.

生成付款链接(步骤 3),

use Antiquete\Eazypay\Eazypay;
$eazypay = new Eazypay(EAZYPAY_MERCHANT_ID,
                       EAZYPAY_MERCHANT_REFERENCE,
                       EAZYPAY_SUBMERCHANT_ID,
                       EAZYPAY_RETURN_URL,
                       EAZYPAY_KEY);
$link = $eazypay->getLink($transaction);

处理响应(步骤 4 和 5),

use Antiquete\Eazypay\Eazypay;

function matchTransactionId($refTransactionId) { /* ... */ }
function matchTransactionAmount($refTransactionId, $refAmount) { /* ... */ }
function onSuccess($refTransactionId) { /* ... */ }
function onFail($refTransactionId, $refResponseCode) { /* ... */ }
function onDeny($refTransactionId, $reason) { /* ... */ }

$eazypay->handlePayment('matchTransactionId', 'matchTransactionAmount', 'onSuccess', 'onFail', 'onDeny');   // Return value is a bool representing if payment response was received.

许可证

这是一个开源库,许可协议为 LGPLv3。