antiquete / eazypay-integration
ICICI Eazypay API 的 PHP 7 集成
v1.1.0
2023-04-14 23:50 UTC
Requires
- php: ^7.2
- phpseclib/mcrypt_compat: ^1.0
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' 生成。
遵循的工作流程
- 创建一个交易。
- 将带有 'transaction_id' 的交易存储在数据库中。
- 使用该交易生成付款链接。
- (可选)在 Return URL 页面上 'handleResponse'。
- (可选)在付款 '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。