miladrahimi/php-mellat-bank

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

v1.1.4 2017-08-13 19:30 UTC

This package is auto-updated.

Last update: 2024-09-15 19:26:31 UTC


README

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

安装

composer require miladrahimi/php-mellat-bank

生命周期

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

  • 请求新的支付

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

  • 在回调页面上验证支付

入门指南

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

use MiladRahimi\PhpMellatBank\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 MiladRahimi\PhpMellatBank\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时。

许可证

PhpMellatBank由Milad Rahimi创建并发布,许可协议为MIT许可证