navid045 / mellatbank
适用于PHP项目的伊朗Mellat银行网关
Requires
- php: >=5.4.0
- ext-soap: *
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许可证 发布。