PDA

View Full Version : نمونه کد PHP اتصال آسان و هوشمند به زرین پال



MiladWorkShop
پنج شنبه 18 مرداد 1397, 11:54 صبح
https://miladworkshop.ir/uploads/posts/2018-08/1533762875_zarinpal.png


شاید برای شما هم پیش اومده باشه که خواسته باشید اسکریپت یا پلاگین خودتون رو به درگاه زرین پال متصل کنید اما با مشکلاتی مواجه شده باشید از جمله دشوار بودن کد نویسی, مشکل در انتخاب وب سرویس متناسب نظیر Soap یا Rest و ...


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


یکی از برتری های زرین پال ارائه وب سرویس های متنوع و همچنین دارا بودن وب سرویس در دو موقیت ایران و اروپا هست که البته این برتری گاهی باعث سردر گم شدن برنامه نویس در انتحاب نوع وب سرویس یا موقیت وب سرویس میشه همچنین گاهی اوقات هم به دلایل مختلف ممکنه یکی از موقیت های وب سرویس دچار اختلال بشه و در دسترس نباشه یا با تغییر هاست میزبانی به دلیل کانفیگ های انجام شده در سرور میزبانی متودی که بر پایه او اسکریپت یا پلاگینتون رو نوشتید در هاست میزبانی پشتیبانی نشه که ناچار هستید از پشتیبان هاست مربوطه بخوایید که تابع مورد نظر رو روی هاست فعال کنه یا باید اقدام به کدنویسی نسخه جدیدی از محصولتون کنید تا با شرایط جدید همگام بشه.


از اونجایی که این روزها شبکه زیرساخت کشور با اختلالات زیادی رو به رو هست و متاسفانه باعث مشکلات زیادی در خصوص پرداخت از طریق درگاه زرین پال شده, تصمیم گرفتم یک کلاس نسبتاً هوشمند در خصوص استفاده از درگاه زرین پال بنویسم که علاوه بر حال این دسته از مشکلات, کدنویسی و اتصال به درگاه زرین پال رو هم ساده تر کنه.



برتری های استفاده از این نمونه کد و روش نسبت به روش هایی که وجود داره چیه ؟


پروسه کدنویسی و اتصال به درگاه بسیار ساده تر شده

در این روش موقیت وب سرویس ایران و اروپا زرین پال قبل از اتصال توسط خود کلاس برسی میشه و عملیات از طریق لینکی انجام میشه که در دسترس باشه و پینگ کمتری داشته باشه

در این روش در صورتی که روی هاست شما Soap فعال باشه به صورت خودکار از این متد برای انجام تراکنش استفاده میشه و اگه متد روی هاست شما فعال نباشه به صورت خودکار ازوب سرویس Rest استفاده میشه که از CURL کمک میگیره, لذا به طور همزمان هر دو متد Soap و RestFul رو بدون نیاز به حتی یک خط کد نویسی خواهید داشت و در صورت فعال نبود هر یک از این متد اتصال به صورت خودکار از طریق متد جایگزین صورت می گیره.

در این روش به سادگی میتونید حالت زرین گیت ( انتقال مستقیم به صفحه پرداخت بانک ) رو فعال کنید.

در این روش به سادگی میتونید حالت SandBox یا پرداخت آزمایشی رو فعال کنید.

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

در این روش در صورتی که با خطای ناقص بودن پارامتر مواجه بشید, در پاسخ, پارامتر مورد نظر هم به شما اعلام میشه.

دسترسی به لینک نهایی پرداخت بدون نیاز به قرار دادن لینک پرداخت و Authority در کنار هم ( ایجاد خودکار لینک با توجه به حالت های مختلف SandBox, WebGate, ZarinGate و ... )

وریفای ساده تراکنش ها تنها با ارسال مرچنت کد و مبلغ

و ...





چطور با این همه برتری و تفاوت کدنویسی ساده تر هست ؟

کلیه موارد عنوان شده در قالب یک کلاس توسط بنده نوشته شده, لذا کافیه خیلی ساده فایل php مربوط به این کلاس رو در پلاگین یا اسکریپت خودتون include کنید و از اون استفاده کنید.


این کد شامل 3 فایل PHP هست که یک فایل اصلی ( zarinpal_function.php ) شامل کلاس اصلی و دو فایل ( request.php و verify.php ) که به عنوان نمونه کد جهت ایجاد و فریفای کردن تراکنش هست.


فایل zarinpal_function.php ( کلاس اصلی ) : https://miladworkshop.ir/paste/BYjU8u



فایل request.php ( نمونه کد ایجاد تراکنش از طریق این کلاس ) : https://miladworkshop.ir/paste/6EzatE



فایل verify.php ( نمونه کد ایجاد تراکنش از طریق این کلاس ) : https://miladworkshop.ir/paste/Ure4EL



با صدا زدن تابع request به منظور ایجاد تراکنش و انتقال به صفحه پرداخت در پاسخ این موارد در دسترس و قابل استفاده هستند :



$result["Node"]; Respone Node ( ir | de | sandbox )
$result["Method"]; Connection Method ( SOAP | CURL )
$result["Status"]; ZarinPal Webservice Result Status Code
$result["Message"]; ZarinPal Webservice Result Status Message
$result["StartPay"]; ZarinPal Start Payment URL
$result["Authority"]; ZarinPal Payment Authority ( Save this in Database )



همچنین فراخوانی تابع verify به منظور برسی و وریفای کردن تراکنش این موارد در دسترس و قابل استفاده هستند :




$result["Node"]; Respone Node ( ir | de | sandbox )
$result["Method"]; Connection Method ( SOAP | CURL )
$result["Status"]; ZarinPal Callback Result Status Code
$result["Amount"]; ZarinPal Callback Result Status Message
$result["RefID"]; ZarinPal Tracking Code
$result["Authority"]; ZarinPal Authority


دانلود کلیه فایل ها در قالب یک فابل ZIP


کپی برداری با ذکر منبع مجاز است :-)

منبع : (https://vrl.ir/zpc)https://vrl.ir/zpc