Skip to content

ebrasha/abdal-zarinpal-pg

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

21 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Abdal Zarinpal PG For Laravel

💎 هدف اصلی

این پکیج برای یکپارچه‌سازی درگاه پرداخت زرین پال با لاراول طراحی شده است.

⚓ پیش نیاز

PHP 7.2 یا بالاتر
Laravel 7.0 یا بالاتر

✨ قابلیت‌ها

  • درخواست پرداخت
  • تایید پرداخت
  • مدیریت خطاها
  • استفاده آسان با متدهای زنجیره‌ای
  • انتخاب واحد پول در زمان درخواست هر تراکنش
  • پشتیبانی از آخرین نسخه و جدیدترین نسخه های لاراول

📝 چگونه کار می‌کند؟

نصب

برای نصب پکیج از کامپوزر استفاده کنید:

composer require abdal/abdal-zarinpal-pg

بروزرسانی

برای بروزرسانی پکیج از کامپوزر استفاده کنید:

 composer update  abdal/abdal-zarinpal-pg

تنظیمات

سپس سرویس‌پراوایدر را در فایل config/app.php اضافه کنید: (برای لاراول 11 نیاز به انجام این مورد ندارید)

'providers' => [
// ...
Abdal\AbdalZarinpalPg\ZarinpalServiceProvider::class,
];

و فاساد را ثبت کنید: (برای لاراول 11 نیاز به انجام این مورد ندارید)

'aliases' => [
// ...
'Zarinpal' => Abdal\AbdalZarinpalPg\Facades\Zarinpal::class,
];

استفاده

فرض کنید Route ها را به صورت زیر تعریف کرده اید

Route::get('/payment/request', [ZarinpalController::class, 'requestPayment'])->name('payment.request');
Route::get('/payment/verify', [ZarinpalController::class, 'verifyPayment'])->name('payment.verify');

پس از تعریف Route ها می توانید کاربر را به آن پاس دهید و در تابعی که به route شما متصل شده است برای درخواست پرداخت یا همان ارسال مشتری به درگاه کد زیر را وارد کنید

 use Abdal\AbdalZarinpalPg\Zarinpal;

    public function requestPayment(Request $request)
    {
        $response = Zarinpal::merchantId('00000000-0000-0000-0000-000000000000')
            ->amount(13660000)
            ->currency('IRT')
            ->callbackUrl(route('payment.verify'))
            ->description('خرید تست')
            ->email('info@ebrasha.com')
            ->mobile('09022223301')
            ->request();

        if (!$response->success()) {
            return response()->json(['error' => $response->message()], 400);

        }

        $authority = $response->getAuthority(); // Save Authority in Database
        return $response->redirect();

    }

برای تایید پرداخت مشتری:

use Abdal\AbdalZarinpalPg\Zarinpal;


 public function verifyPayment(Request $request)
    {

        $response = Zarinpal::merchantId('00000000-0000-0000-0000-000000000000')
            ->amount(13660000)
            ->currency('IRT')
            ->authority($request->query('Authority'))
            ->verify();

        if (!$response->success()) {
            return response()->json(['error' => $response->message()], 400);
        }

        return $response->referenceId();
    }

اگر نمی خواهید در هر بار استفاده از پکیج کد درگاه و واحد پول را وارد کنید می توانید از فایل .env نیز استفاده کنید. در فایل .env پروژه خود، مقادیر مربوط به ZARINPAL_MERCHANT_ID و ZARINPAL_CURRENCY را اضافه کنید:

مرچنت کد یا کد درگاه را اضافه کنید

ZARINPAL_MERCHANT_ID=00000000-0000-0000-0000-000000000000

برای تغییر واحد پول به تومان (پکیج پیشفرض از واحد تومان استفاده می کند)

ZARINPAL_CURRENCY=IRT

برای تغییر واحد پول به ریال

ZARINPAL_CURRENCY=IRR

اگر تنظیمات را در فایل .env وارد کردید کدها را به صورت زیر استفاده کنید مثال استفاده با مقادیر پیش‌فرض از فایل تنظیمات ارسال مشترین به درگاه بانک

 use Abdal\AbdalZarinpalPg\Zarinpal;

   public function requestPayment(Request $request)
{
    $response = (new Zarinpal())
        ->amount(13660000)
        ->callbackUrl(route('payment.verify'))
        ->description('خرید تست')
        ->email('info@ebrasha.com')
        ->mobile('09022223301')
        ->request();

    if (!$response->success()) {
        return response()->json(['error' => $response->message()], 400);
    }

    $authority = $response->getAuthority(); // Save Authority in Database
    return $response->redirect();
}

برای تایید پرداخت مشتری:

use Abdal\AbdalZarinpalPg\Zarinpal;


public function verifyPayment(Request $request)
{
    $response = (new Zarinpal())
        ->amount(13660000)
        ->authority($request->query('Authority'))
        ->verify();

    if (!$response->success()) {
        return response()->json(['error' => $response->message()], 400);
    }

    return $response->referenceId();
}

❤️ کمک به پروژه

https://alphajet.ir/abdal-donation

🤵 برنامه نویس

دست ساز با عشق توسط ابراهیم شفیعی (ابراشا)

E-Mail = Prof.Shafiei@Gmail.com

Telegram: https://t.me/ProfShafiei

☠️ گزارش خطا

اگر با مشکلی در پیکربندی مواجه هستید یا چیزی آنطور که انتظار دارید کار نمی‌کند، لطفا از Prof.Shafiei@Gmail.com استفاده کنید.طرح مشکلات بر روی GitLab یا Github نیز پذیرفته می‌شوند.