🏠 صفحه اصلی 👈 مقالات 👈 آموزش استفاده از درگاه پرداخت زرین‌پال در لاراول

آموزش استفاده از درگاه پرداخت زرین‌پال در لاراول

آموزش استفاده از درگاه پرداخت زرین‌پال در لاراول

در این مقاله قصد دارم نحوه استفاده از درگاه پرداخت زرین‌پال رو در یک پروژه لاراول توضیح و آموزش بدم.

یکی از موارد رایج در وبسایت‌ها و اپلیکیشن‌های تحت وب، استفاده از درگاه پرداخت آنلاین جهت دریافت وجه از کاربره. دریافت وجه می‌تونه دلایل مختلفی از جمله پرداخت حق اشتراک، دانلود فایل و خرید یک محصول فیزیکی یا مجازی داشته باشه.

زرین‌پال یکی از ارائه دهنده‌های خدمات درگاه پرداخت اینترنتی هست که به دلیل سابقه زیاد و اعتبار مناسب، گزینه خوبی برای استفاده هست. در این مقاله قصد دارم نحوه استفاده از این درگاه پرداخت رو در یک پروژه لاراول توضیح و آموزش بدم.

در صورت تمایل می‌تونین با استفاده از لینک معرف من نسبت به ثبت نام در زرین‌پال اقدام کنین:

ثبت نام در زرین‌پال

ساده‌ترین و سریع‌ترین راه برای استفاده در درگاه پرداخت زرین‌پال در لاراول استفاده از پکیجی هست که توسط من و برای این منظور توسعه داده شده. برای اضافه کردن این پکیج به پروژه لاراول کافیه دستور Composer زیر رو اجرا کنین:

composer require pishran/zarinpal

بعد از اضافه کردن پکیج به پروژه، وارد فایل env بشید و خط زیر رو وارد کنید:

ZARINPAL_MERCHANT_ID=<YOUR-MERCHANT-ID-GOES-HERE>

لطفا توجه کنین که باید کد پذیرنده یا همون Merchant ID که از زرین‌پال دریافت کردین رو در این متغیر قرار بدین. حالا همه‌چیز آماده‌ست و می‌تونین به راحتی از این درگاه پرداخت اینترنتی تو پروژه‌تون استفاده کنید.

بطور کلی استفاده از درگاه‌های پرداخت اینترنتی از 2 مرحله تشکیل می‌شه. مرحله اول ایجاد تراکنش و ارجاع کاربر به درگاه پرداخت بانکی هست و مرحله دوم هم بررسی وضعیت پرداخت به لحاظ موفقیت آمیز بودن.

برای فرستادن کاربر به درگاه پرداخت می‌تونین مشابه کد زیر عمل کنین:

// مبلغ تراکنش به تومان
$amount = 1000;

$response = zarinpal()
    ->amount($amount)
    ->request()
    ->description('توضیحات تراکنش')
    ->callbackUrl('https://www.faridaghili.ir/payment-callback')
    ->mobile('09120199514') // شماره موبایل مشتری - اختیاری
    ->email('info@faridaghili.ir') // آدرس ایمیل مشتری - اختیاری
    ->send();

if (! $response->success()) {
    // مشکلی پیش اومده که می‌تونین علتش رو به مشتری نمایش بدین
    return $response->error()->message();
}

// ذخیره اطلاعات در دیتابیس
Payment::create([
    'authority' => $response->authority(),
    'amount' => $amount,
]);

// هدایت مشتری به درگاه پرداخت
return $response->redirect();

بعد از اجرای کدهای بالا، کاربر شما به درگاه پرداخت بانکی منتقل می‌شه و می‌تونه پرداخت رو با استفاده از کارت بانکی و رمز دوم انجام بده (یا انجام نده!). در هر صورت، چه با تکمیل پرداخت و چه با انصراف از پرداخت، به آدرسی که در متد callbackUrl مشخص کردید برمی‌گرده.

در این مرحله لازمه که وضعیت تراکنش رو بررسی کنیم تا موفقیت یا عدم موفقیت پرداخت برامون احراز بشه و کالا یا خدمات رو به کاربر ارائه کنیم. جهت استعلام وضعیت تراکنش از کد زیر استفاده می‌کنیم:

// دریافت کوئری استرینگ‌های ارسال شده توسط زرین پال
$authority = request()->query('Authority'); 
$status = request()->query('Status');

if ($status != 'OK') {
    return 'پرداخت موفق نبود';
}

// دریافت تراکنش از دیتابیس
$payment = Payment::where('authority', $authority)->first();

if (! $payment) {
    return 'اطلاعات پرداخت پیدا نشد';
}

// استعلام وضعیت تراکنش از زرین‌پال براساس شناسه و مبلغ
$response = zarinpal()
    ->amount($payment->amount)
    ->verification()
    ->authority($authority)
    ->send();

if (! $response->success()) {
    // تراکنش موفق نبود که می‌تونین علتش رو به مشتری نمایش بدین
    return $response->error()->message();
}

// پرداخت موفقیت آمیز بود و می‌تونین کد رهگیری رو در دیتابیس ذخیره کنین
$payment->update([
    'reference_id' => $response->referenceId(),
    'paid_at' => now(),
]);

// اینجا همه‌چیز درست شده و وقتشه که کالا یا خدمات رو به مشتری تحویل بدین

امیدوارم این مقاله مورد استفاده‌تون قرار بگیره و دفعه بعدی که خواستین تو پروژه‌تون درگاه پرداخت داشته باشین، این کار رو بدون نگرانی و دردسر انجام بدین.

همچنین پیشنهاد می‌کنم سری به مخزن پکیج pishran/Zarinpal بزنین تا با سایر قابلیت‌ها و امکاناتی که داره آشنا بشین.

اشتراک گذاری:

❓ نظر خود را بنویسید

📒 نظرات

👤 اشکان مهرابی

4 ماه پیش


اگه می‌خواید با یکبار پیاده‌سازی از تمامی درگاه‌ها استفاده کنید پیشنهاد می‌کنم از پکیج زیر استفاده کنید.
https://github.com/shetabit/payment
اگه آموزش هم براش بذارید عالی میشه =) پکیج خیلی مشتی و خوبی هست و من چک کردم تقریبا تمامی درگاه‌های ایران رو داشت.

پاسخ: ممنون از شما، حتما بررسی می‌کنم.

👤 بازم کار می کنه

7 ماه پیش


توی گیت هاب آخرین آپدیت مربوط به یکسال قبله. در حالیه که تو یک سال قبل لاراول دو تا نسخه رفته بالا
آیا باز هم این پکیج کار می کنه؟

پاسخ: بله، کاملا بدون مشکل کار می‌کنه. می‌تونین با خیال راحت استفاده کنین.

کلیه حقوق این سایت متعلق به طراحی سایت فرید عقیلی می‌باشد.

طراحی سایت 🌐 فرید عقیلی