navid045/mellatbank

适用于PHP项目的伊朗Mellat银行网关

v1.1.5 2018-06-27 12:27 UTC

This package is auto-updated.

Last update: 2024-09-26 16:51:53 UTC


README

适用于PHP项目的伊朗Mellat银行网关

安装

composer require navid045/mellatbank

生命周期

Mellat银行网关在线支付的过程包括以下步骤:

  • 请求新的支付

  • 将用户重定向到银行网关页面

  • 在回调页面验证支付

入门指南

要使用该包进行支付,您必须实例化 Gateway 类并提供其配置。

use MellatBank\Gateway;

$config = [
    'terminalId' => '...',
    'userName' => '...',
    'userPassword' => '...',
    'callBackUrl' => 'https://example.com/payment/callback',
];

$gateway = new Gateway($config);

请求支付

如上所述,第一步您必须请求新的支付。可以这样做:

$refId = $gateway->requestPayment($amountInRial, 'Some optional description...');

如果无法调用银行服务器API,此方法会抛出 GatewayException,如果银行响应不是 0(成功),则抛出 MellatException

MellatException 在其消息中包含银行响应。

如果没有错误,则返回 RefId

重定向到网关

现在您已经获得了 RefId,可以将用户引导到银行网关。

为此,您应该显示一个如下所示的HTML表单:

<form action="$bankGatewayUrl" method="post">
    <input type="hidden" name="RefId" value="$refId">
    <input type="submit" value="Pay">
</form>

$bankGatewayUrl 是银行为您提供的URL,但您可以通过以下方式从 Gateway 实例中获取它:

$gateway->url()

验证支付

用户在银行网关完成支付后,银行将其重定向到您在配置中提供的回调页面,它还通过 POST 方法向回调发送一些参数。

您的回调URL必须验证支付。

use MellatBank\Gateway;

$gateway = new Gateway($config);

$refId = $gateway->checkPayment();

if($refId != false) {
    $bankResult = $gateway->verifyPayment();
}

checkPayment() 方法会返回 $refId 或在出现任何错误时返回 false

verifyPayment() 方法会返回银行响应,作为 BankResult 类的实例,如果请求无效(可能不是来自银行),则抛出 InvalidResponseException,如果无法调用银行服务器API,则抛出 GatewayException,如果银行响应不是 0(成功),则抛出 MellatException

异常

  • GatewayException:当调用银行服务器API时出现问题时抛出。
  • MellatException:当银行 ResCode 不是 0(成功)时抛出。它在消息中包含真实响应。
  • InvalidResponseException:在验证级别(回调URL)中参数无效时抛出。这个问题通常发生在除了银行之外的其他人或事物调用您的回调URL时。

许可

MellatBank 由 Milad Rahimi 创建,由 Navid Hosseini 更改,并按照 MIT许可证 发布。