mozakar/gateway

一个用于连接所有伊朗支付网关的 Laravel 包,基础包为 mozakar/gateway

2.0.0 2022-09-09 14:27 UTC

This package is auto-updated.

Last update: 2024-09-09 18:57:12 UTC


README

بدلیل عدم پشتیبانی تیم Larabook این پکیج بصورت شخصی توسعه میابد

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

本包与Laravel版本(4、5、6、7、8、9)兼容

仅支持以下网关

  1. MELLAT
  2. SADAD (MELLI)
  3. SAMAN Token Base (新)
  4. SAMAN
  5. PARSIAN
  6. PASARGAD(新)
  7. ZARINPAL
  8. ASAN PARDAKHT
  9. PAY.IR (使用 'payir' 调用)
  10. Irankish ( - 使用 'irankish' 调用)
  11. Nikan (PASARGAD) (新)
  12. PayPing (新)
  13. Vandar (新)

安装:

请遵循以下命令进行安装

步骤 1)

使用 "composer require" 安装

composer require mozakar/gateway

在 composer.json 文件中添加

"require": {
  ...
  "mozakar/gateway" : "dev-master"
},
"repositories": [
    {
        "type": "git",
        "url": "https://github.com/mozakar/gateway.git"
    }
],

步骤 2)

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

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

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


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

步骤 3) - 转移所需文件

对于Laravel 5

php artisan vendor:publish --provider=Mozakar\Gateway\GatewayServiceProviderLaravel5
对于Laravel 6以后的版本
php artisan vendor:publish 

// then choose : GatewayServiceProviderLaravel6
// then choose : GatewayServiceProviderLaravel7
// then choose : GatewayServiceProviderLaravel8
// then choose : GatewayServiceProviderLaravel9

步骤 4) - 创建表格

php artisan migrate

步骤 5)

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

现在您可以使用以下任一方法连接到银行API(根据您的选择)。

  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)
           // setFactorNumber("13131313") // optional - just for vandar
           ->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 (\Mozakar\Gateway\Exceptions\RetryException $e) {

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

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

} catch (\Exception $e) {

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

从Vandar进行账单结算

try { 

  $track_id   = Str::random(32);
  $payment_number = rand(1000000000, 9999999999);
  $gateway = \Gateway::vandar();
  //ibanRequest($amount, $iban, $track_id, $payment_number, $is_instant = true)
  $response = $gateway->ibanRequest($amount, $sheba_number, $track_id, $payment_number, true);
  if($response){
      $response = ['success' => true, 'tx' => $track_id, 'data' => $response];
      return $response;
  }

}catch (\Exception $e) {

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

在Vandar中显示余额和交易列表

try { 

  $gateway = \Gateway::vandar();

  //نمایش موجودی
  $balance = $gateway->balance();

  //نمایش تراکنش ها
  $transactions = $gateway->transactions();

}catch (\Exception $e) {

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

如果您愿意参与开发

  1. 开发包的文档。
  2. 报告错误和问题。
  3. 为该包编写其他银行的模块。

如果您发现任何错误问题,请告知我们。

本包源自名为 poolport 的其他包,但其中一些操作已根据Laravel框架进行了修改。