آموزش ساخت درگاه پرداخت در PHP با زرین پال - قسمت اول

16 آبان 1397
php-payment-part-1

در این قسمت قصد دارم تغییراتی را انجام داده تا اگر یک کاربر اطلاعات خود را به درستی وارد کرد و یا قصد خرید یک محصول را داشت بتوانید پس از انتخاب آن محصول به صفحه پرداخت (درگاه پرداخت در PHP) هدایت شود. آنچه که به صورت اصلی مورد بررسی قرار می گیرد ویرایش صفحه ی ثبت نام کاربران، تایید ایمیل و صفحه پرداخت (checkout.php) است.

ضمنا توجه داشته باشید که یک صفحه جدید با عنوان payment.php خواهیم ساخت و در بخش دیگر در مورد درگاه های پرداخت اینترنتی مستقیم و واسطه ای صحبت می کنیم. در نهایت یک درگاه پرداخت واسط به نام زرین پال را در پروژه خود اعمال خواهیم کرد.

بررسی فایل checkout.php

اگر به فایل checkout.php دقت کرده باشید، یک شرط اساسی مطرح شده است، که فلوچارت آن را در تصویر زیر مشاهده می نمایید.

فلوچارت صفحه پرداخت اینترنتی

همانگونه که مشاهده می کنید بار اول که ما فایل checkout.php را اجرا می کنیم در متغییر $_ SESSION['customer_email'] مقداری قرار ندارد (یا بهتر بگویم اصلا وجود نداشت) بنابراین کاربر به صفحه customer_login.php هدایت می شود.

حالا فرض کنید که ما می خواهیم کاری کنیم که مشتری پس از وارد کردن اطلاعات و ثبت کردن آنها و تایید ایمیل به صفحه پرداخت بانکی (payment.php) هدایت شود برای انجام اینکار طبق فلوچارت بالا باید متغییر سراسری $_ SESSION['customer_email'] را با مقدار خاصی پر کنیم (با مقدار ایمیل مشتری هنگامی که ثبت نام می کند)؛ اینجاست که اگر به فایل emailconfirm.php که در قسمت قبل ساختیم دقت کرده باشید، پس از تایید ایمیل ما $_ SESSION['customer_email'] را با ایمیل داده شده توسط مشتری پر کرده ایم، برای دیدن این کدها به آدرس C:\wamp\www\ecommerce مراجعه نمایید و فایل emailconfirm.php را با Notepad++ باز کنید.

به کدهای موجود در تصویر زیر دقت کنید.

مقدار دهی متغییر &_SESSION

همانطور که مشاهده می کنید، ما در این دو قسمت $_SESSION['customer_email'] را مقدار دهی کرده ایم.

اگر دقت کرده باشد در تصویر بالا نیز یک شرط اساسی مطرح شده است (شرط اساسی این شرط if($check_cart == 0) است) . این شرط این موضوع را بیان می کند که آیا در سبد خرید مشتری محصولی وجود دارد یا خیر؟ اگر متغییر $check_cart برابر صفر باشد (یعنی سبد خرید مشتری خالی باشد) او را به برگه my_account.php هدایت خواهیم کرد و در غیر این صورت او را به برگه checkout.php هدایت می کنیم.

حالا همانطور که در فلو چارت اول داشتیم شرط if(isset($_SESSION['customer_email'])) برقرار می شود و به صفحه payment.php خواهیم رفت.

اما دقت کنید که چون برگه payment.php را نداریم باید آن را بسازیم بنابراین به آدرس C:\wamp\www\ecommerce می رویم و یک فایل php با نام payment.php می سازیم. به تصویر زیر نگاه کنید.

ساخت برگه درگاه پرداخت

دقت کنید که در فایل payment.php نیز باید درگاه پرداخت در PHP را که با زرین پال نوشته شده است، قرار دهیم. برای درک چرایی این موضوع به توضیحات زیر دقت نمایید.

درگاه پرداخت زرین پال در PHP چیست؟

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

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

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

گرفتن درگاه پرداخت واسطه ایی مثل زرین پال بسیار راحت است؛ در عوض درصد ناچیزی از تراکنش مالی را در هنگام رد و بدل شدن پول برداشت می کند.

من هم تصمیم دارم در این دوره آموزشی نحوی استفاده از این درگاه پرداخت واسطه ای (زرین پال) را آموزش دهم.

راه اندازی درگاه پرداخت در PHP با زرین پال

اولین کاری که باید انجام دهید این است که وارد آدرس ثبت نام سایت زرین پال شوید و مراحل ثبت نام را طی کنید.

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

بعد از ثبت نام باید به پنل کاربری خودتان وارد شوید، در منوی بالای صفحه یک تب به نام درگاه دارد که باید به آنجا مراجعه نمایید. در این قسمت مدارک خاصی از شما درخواست می گردد، مثل کارت ملی، تصویر کارت بانکی ، شماره شبا و ... که مدارک خاصی نیستند. شما وقتی این مدارک را به سایت ارائه دادید، بعد از چند ساعت که معمولا نباید پیش از 24 ساعت کاری شود به شما یک کلید داده می شود (به این کلید اصطلاحا MerchantID گفته می شود) که آن کلید در واقع کلید شناسایی شما است که باید در کدهای خودتان از آن کلید شناسایی استفاده کنید.

دقت کنید که درگاه پرداخت بانک ها بر روی ip کار می کنند. این یعنی اینکه هنگامی که می خواهند به شما درگاه پرداخت اینترنتی بدهند، از شما ip سرور را درخواست می کنند زیرا هنگامی که درخواستی برای آنها می آید بررسی می کنند که آیا درخواست از این ip بوده است یا خیر؟

اگر درخواست از ip سرور بود، جواب درخواست را می دهند در غیر اینصورت درخواست را پاسخ نمی دهند. بنابراین امکان تست این نوع درگاهها در حالت localhost وجود ندارد (در نتیجه اگر بخواهیم برنامه ایی را که نوشته ایم مورد تست قرار دهیم، امکان انجام آن برای ما مقدور نخواهد بود، چون ip ما valid نیست).

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

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

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

تب آزمایشگاه در منوی بالای صفحه زرین پال

و بعد از آن نمونه کدها را انتخاب کنید.

نمونه کدها

همانطور که در تصویر زیر مشاهده می کنید تعداد زیادی نمونه کد دیده می شود، این نمونه کدها تقریبا تمام زبانهای برنامه نویسی را پوشش می دهند. ولی ما دنبال نمونه کد php هستیم، بنابراین گزینه " نمونه کد استفاده از وب سرويس نوشته شده به زبان PHP" را انتخاب می کنیم و بر روی دکمه "دانلود راهنما" کلیک کنید.

نمونه کد استفاده از وب سرویس نوشته شده به زبان php

سپس می توانید فایل های راهنما ( فیلم آموزشی، کتابچه و کدهای مورد نیاز ) را دانلود نمایید.

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

 

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

خب دوستان عزیزم به پایان این قسمت از آموزش رسیدیم، انشاالله در قسمت آینده سعی می کنم که کدهای زرین پال را در میان کدهای payment.php سایت خودمان قرار دهم و با هم یک بار برنامه را تست کنیم. تا قسمت آینده شما را به خدای بزرگ می سپارم . موفق باشید.

تمام فصل‌های سری ترتیبی که روکسو برای مطالعه‌ی دروس سری فروشگاه اینترنتی با PHP توصیه می‌کند:
نویسنده شوید
دیدگاه‌های شما (4 دیدگاه)

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

سعیدی
26 مهر 1402
سلام من از درگاه پرداخت نوینوپی استفاده میکنم خدماتشون عالیه و پشتیبانی خیلی خوبی دارن واقعا راضیم تسویه هاشون هم بدون هیچ تاخیر توی این یک سال همکاری که دارم انجام شده

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

احسان
05 دی 1401
سلام خسته.نباشید میخواستم ببینم که اگر سایت قسمت ثبت نام کاربر و... نداشته باشه چه اتفاقی میافته

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

احمد
22 بهمن 1399
سلام نمونه کدها در زرین پال به صورت کلی تغییر کرده و دیگه به روش دستی نمیشه Suap یا Nusap رو انتخاب کرد به صورت خودکار توسط سرور انتخاب میشه اگه مقدور هست آموزش رو به روز کنید با تکر

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

مهدی
28 خرداد 1399
با سلام و عرض ادب بابت سایت خوبتون خیلی ممنونم.

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