miladrahimi / php-mellat-bank
适用于PHP项目的伊朗Mellat银行网关
v1.1.4
2017-08-13 19:30 UTC
Requires
- php: >=5.4.0
- ext-soap: *
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许可证。