samyoosephi/gateway

Laravel 包,用于连接所有伊朗支付网关

v3.5.0 2021-02-22 21:12 UTC

README

连接所有 IPG 和伊朗银行的包。

此包与最新版 Laravel 兼容。

仅支持以下网关

  1. MELLAT
  2. SADAD (MELLI)
  3. SAMAN
  4. PARSIAN
  5. PASARGAD
  6. ZARINPAL
  7. PAYPAL
  8. ASAN PARDAKHT
  9. PAY.IR (请使用 'payir' 进行调用)
  10. Irankish ( - 请使用 'irankish' 进行调用)

安装:

按照以下步骤进行安装

步骤 1)

composer require samyoosephi/gateway

步骤 2)

تغییرات زیر را در فایل  config/app.php اعمال نمایید:

注意:对于 Laravel 6 及以后的版本,此步骤不需要执行

'providers' => [
  ...
  Samyoosephi\Gateway\GatewayServiceProvider::class, // <-- add this line at the end of provider array
],


'aliases' => [
  ...
  'Gateway' => Samyoosephi\Gateway\Gateway::class, // <-- add this line at the end of aliases array
]

步骤 3) - 转移所需文件

Laravel 5 的操作

php artisan vendor:publish --provider=Samyoosephi\Gateway\GatewayServiceProviderLaravel5
Laravel 6 及以后的版本
php artisan vendor:publish 

// then choose : GatewayServiceProviderLaravel6

步骤 4) - 创建表格

php artisan migrate

步骤 5)

安装操作已完成。现在请打开 app/ 目录下的 gateway.php 文件,并在其中输入您所需银行网关的设置。

现在您可以从以下方法中选择一种来连接到 API (Facade,Service container)。

  1. Gateway::make(new Mellat())
  2. Gateway::make('mellat')
  3. Gateway::mellat()
  4. app('gateway')->make(new Mellat());
  5. app('gateway')->mellat();

例如:连接到银行 MELLAT(请求令牌并将用户转发到银行网关)。注意:price 方法中的值以里尔为单位,相当于一百托曼。

创建一个 GET 类型的路由,地址为 /bank/request,并在其中放置以下代码。

try {

   $gateway = \Gateway::make('mellat');

   $gateway->setCallback(url('/bank/response')); // You can also change the callback
   $gateway->price(1000)
           // setShipmentPrice(10) // optional - just for paypal
           // setProductName("My Product") // optional - just for paypal
           ->ready();

   $refId =  $gateway->refId(); // شماره ارجاع بانک
   $transID = $gateway->transactionId(); // شماره تراکنش

   // در اینجا
   //  شماره تراکنش  بانک را با توجه به نوع ساختار دیتابیس تان 
   //  در جداول مورد نیاز و بسته به نیاز سیستم تان
   // ذخیره کنید .

   return $gateway->redirect();

} catch (\Exception $e) {

   echo $e->getMessage();
}

然后创建一个 POST 类型的路由,地址为 /bank/response,并在其中放置以下代码。

try { 

   $gateway = \Gateway::verify();
   $trackingCode = $gateway->trackingCode();
   $refId = $gateway->refId();
   $cardNumber = $gateway->cardNumber();

   // تراکنش با موفقیت سمت بانک تایید گردید
   // در این مرحله عملیات خرید کاربر را تکمیل میکنیم

} catch (\Samyoosephi\Gateway\Exceptions\RetryException $e) {

    // تراکنش قبلا سمت بانک تاییده شده است و
    // کاربر احتمالا صفحه را مجددا رفرش کرده است
    // لذا تنها فاکتور خرید قبل را مجدد به کاربر نمایش میدهیم

    echo $e->getMessage() . "<br>";

} catch (\Exception $e) {

    // نمایش خطای بانک
    echo $e->getMessage();
}

如果您愿意参与开发

  1. 开发包的文档。
  2. 报告错误。
  3. 为此包开发其他银行模块。

如果出现任何 错误错误,请通知我们。

此包从名为 poolport 的包派生而来,但其中一些操作已根据 Laravel 框架进行了更改。