Skip to content

A Laravel package for connecting to all Iraninan payment gateways, base package mozakar/gateway

License

Notifications You must be signed in to change notification settings

Mozakar/gateway

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

20 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

پکیج اتصال به تمامی IPG ها و بانک های ایرانی.

این پکیج با ورژن های ( ۴ و ۵ و ۶ و۷ و ۸ و ۹) لاراول سازگار می باشد

پشتیبانی تنها از درگاهای زیر می باشد:

  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 (جدید)

نصب:

دستورات زیر را جهت نصب دنبال کنید :

مرحله ۱)

نصب به وسیله "composer require"

composer require mozakar/gateway

یا

در فایل composer.json اضافه کنید

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

مرحله ۲)

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

توجه برای نسخه های لاراول ۶ به بعد این مرحله نیاز به انجام نمی باشد

'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
]

مرحله ۳) - انتقال فایل های مورد نیاز

برای لاراول ۵ :

php artisan vendor:publish --provider=Mozakar\Gateway\GatewayServiceProviderLaravel5
برای لاراول ۶ به بعد :
php artisan vendor:publish 

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

مرحله ۴) - ایجاد جداول

php artisan migrate

مرحله ۵)

عملیات نصب پایان یافته است حال فایل gateway.php را در مسیر app/ باز نموده و تنظیمات مربوط به درگاه بانکی مورد نظر خود را در آن وارد نمایید .

حال میتوایند برای اتصال به 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();

مثال :‌اتصال به بانک ملت (درخواست توکن و انتقال کاربر به درگاه بانک) توجه :‌ مقدار متد 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();
}

و سپس روت با مسیر /bank/response و از نوع post ایجاد نمایید و کد های زیر را در آن قرار دهید :

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 مشتق شده است اما برخی از عملیات آن متناسب با فریموورک لارول تغییر کرده است

About

A Laravel package for connecting to all Iraninan payment gateways, base package mozakar/gateway

Resources

License

Stars

Watchers

Forks

Packages

No packages published