توسعه دهنده بک اند
پکیج پرداخت آنلاین (درگاه بانکی) در لاراول (Laravel)
میخوام یه پکیج لاراول معرفی کنم برای اتصال به درگاه های پرداخت بانکی مختلف با تنظیمات متفاوت. چند وقتی میشه که کار نوشتن این پکیج رو شروع کردم و خودم روی پروژه هام دارم استفاده میکنم. این پکیج کاملا مبتنی بر درایور درست شده که مانند سایر قسمت های لاراول به راحتی میتونید تنظیمات رو توی config انجام بدین و حتی چندین درگاه (مثلا چند درگاه زرین پال با شناسه متفاوت) رو روی یک پروژه داشته باشید و با توجه به شرایطی که مدنظرتون هست به هرکدوم که خواستید ارجاع بدید.
پکیج که روی گیت هاب موجوده، مستندات کامل به هر دو زبان فارسی و انگلیسی هم نوشته شده:
https://github.com/omalizadeh/laravel-multi-payment
این پکیج از درگاه های بانک ملت، بانک پاسارگاد، بانک سامان، بانک اقتصاد نوین (اینو دیگه جایی ندیده بودم!) و زرین پال پشتیبانی میکنه.
برای نصب پکیج از دستور Composer زیر استفاده کنید:
composer require omalizadeh/laravel-multi-payment
بعد با دستور Artisan زیر فایل های تنظیمات اصلی و درگاهی که میخواید رو منتشر کنید (با استفاده از تگ ها):
php artisan vendor:publish --tag=multipayment-config
php artisan vendor:publish --tag=zarinpal-config
یا با یک دستور همه تنظیمات رو با هم منتشر کنید:
php artisan vendor:publish --provider=Omalizadeh\MultiPayment\Providers\MultiPaymentServiceProvider
توی تنظیمات اصلی میتونید درگاه پیش فرض رو انتخاب کنید و با توجه به واحد پولی توی پروژه، تبدیل خودکار به ریال رو فعال یا غیرفعال کنید.
در فایل تنظیمات درگاه مربوطه هم با توجه به درگاه، اطلاعات حسابتون رو وارد میکنید.
برای استفاده هم ما کلا توی پکیج با دو تا کلاس Invoice (صورتحساب) و PaymentGateway که به صورت Facade پیاده سازی شده کار داریم. ابتدا یه صورتحساب ایجاد میکنیم، بعد مبلغش رو تعیین میکنیم و ارجاع میدیم به درگاه (البته همین وسط توی Closure باید کد تراکنش رو به همراه اطلاعات پرداخت پیش خودمون ذخیره کنیم که بعدا بتونیم نتیجه تراکنش رو چک کنیم). میتونیم شماره موبایل مشتری هم روی صورتحساب ست کنیم که اگه رفت درگاهی که قبلا با همین شماره موبایل توش پرداخت داشته، بانک شماره کارت رو بهش پیشنهاد بده و نیاز نباشه تایپ کنه!
وقتی کار پرداخت انجام شد، کاربر برمیگرده به همون آدرسی که توی تنظیمات به عنوان آدرس Callback تنظیم کردیم. حالا باید نتیجه پرداخت رو چک کنیم. از روی اطلاعاتی که ذخیره کردیم و توی ورودی هم درگاه برامون فرستاده یه صورتحساب درست میکنیم و به PaymentGateway میگیم این صورتحساب رو برامون چک کن. اگه موفقیت آمیز باشه، پرداخت تایید میشه و یه شیء از کلاس Receipt میده که متدهای متنوعی داره. مثل دریافت شماره کارت پرداخت کننده، شماره ارجاع تراکنش و... که همرو میتونید توی گیت هاب ببینید.
حالا اگه پرداخت ناموفق باشه، چی میشه؟ یه PaymentFailedException میندازه که ما میتونیم خودمون به نحوی که میخوایم توی پروژه اونو هندل کنیم.
امیدوارم توضیحاتم مفید بوده باشه. توضیحات تکمیلی رو می تونید توی گیت هاب ببینید. اگه پکیج رو نصب کردین و خوشتون اومد، ستاره یادتون نره! روی قلب این پایین هم بزنید، دمتون گرم!
انتقادات و پیشنهادات رو توی Issue مطرح کنید، تغییرات کدی یا باگی هم اگه هست Pull Request بزنید.
آپدیت بهمن 1400: درگاه های پی، زیبال و آیدی پی به همراه حالت تستشون (sandbox) اضافه شده. سرویس های جدید زرین پال مثل لیست پرداخت های تایید نشده و بازگشت وجه هم پیاده سازی شده اند.
مطلبی دیگر از این انتشارات
نمایش پروژههای اوپن سورس لاراول با Open Laravel
مطلبی دیگر از این انتشارات
یادگیری مقدماتی لاراول - پارت دوازدهم
مطلبی دیگر از این انتشارات
اموزش وارد کردن اطلاعات فیک در لاراول