آموزش PHP
دسته بندی ( ۱۹۸ آموزش )
نمایش دسته بندی ها (۱۹۸ آموزش)

استفاده از درگاه پرداخت وجه پارس پال (ParsPal) برای سایت خود، با استفاده از Post Service ، با کدهای PHP

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

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


http://www.epbank.ir

دقت کنید که در خود سایت پارس پال (ParsPal)، کدها و توضیحات فراوانی وجود دارد (شاید شما به کد دیگری در آن سایت علاقه مند شوید زیرا کدهای آماده ای برای انواع بسته های نرم افزاری دارد) و شدیدا توصیه می کنم که ابتدا آنها را بخوانید :


https://www.parspal.com
نکته مهم

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

این مبحث تنها برای ارائه توضیحات بیشتری در مورد آن کدها است و در تاریخ 1393/03/20 نوشته شده است، بنابراین شما کدها را از خود سایت پارس پال (ParsPal) دریافت کنید و سپس برای درک بهتر آنها، این مبحث را بخوانید (این مبحث بر اساس کدهای روش Post Service با زبان PHP می باشد).

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

1- تنها وجه به صورت آنلاین به حساب پارس پال (ParsPal) ما واریز شود و برایمان اهمیتی ندارد که در همان زمان، متوجه بشویم که پرداختی صورت گرفته است یا خیر (مثل بخش حمایت از سایت که هر کاربر، به صورت دلخواه می تواند وارد آن شود و مبلغی را به حساب پارس پال (ParsPal) ما واریز کند. در این شرایط نیازی به یک سری عملیات بعد از پرداخت وجه نیست، البته برخی افراد اطلاعات این واریزها را هم در پایگاه داده سایت ثبت می کنند که در مورد شماره 2 به آن اشاره کرده ایم).

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

قبل از هرچیز، باید در سایت پارس پال ثبت نام کرده و دو مقدار زیر را به عنوان مشخصه های اصلی درگاه پرداخت خود، دریافت کنید (البته موارد دیگری نیز به شما اعلام می شود، ولی برای نوشتن کدهای PHP مربوط به درگاه پرداخت، دو مورد زیر را نیاز داریم) :

1- شناسه درگاه (Merchant ID)

2- کلمه عبور درگاه

اطلاعات را باید به یک شکل مشخص، به سایت پارس پال ارسال کنیم اما ابتدا باید ببینیم که قصد داریم اطلاعات به چه صورت تعیین شوند. مثلا دو مورد زیر را در نظر بگیرید :

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

2- در صفحه حمایت از سایت، یک فرم (form) را به کاربر نمایش می دهیم تا میزان مبلغ مورد نظرش و همچنین در صورت دلخواه، اطلاعاتی مثل نام و ایمیل خود را در فرم وارد کند و سپس با کلیک بر روی دکمه پرداخت، اطلاعات دریافت شده توسط فرم و سایر اطلاعاتی که خودمان داریم را به صفحه پرداخت ارسال می کنیم.

از همین دو مورد فوق متوجه می شوید که همیشه، تعدادی اطلاعات را خودمان داریم و گاهی ممکن است که اطلاعاتی را بخواهیم از طریق فرم (form) از کاربر دریافت کنیم. بنابراین شکل کلی صفحه می تواند به صورت یک فرم باشد که برخی فیلدهای (field) آن به صورت معمولی هستند که کاربر آنها را می بیند و اطلاعاتی را برای آنها تعیین می کند و همچنین برخی از فیلدها را به صورت hidden ( کلید شماره 457 ) تعیین می کنیم که کاربر آنها را نمی بیند و تنها مقداری که خودمان برای آنها تعیین کرده ایم، ارسال خواهد شد. حال اگر هیچ اطلاعاتی نباشد که بخواهیم کاربر با فرم تعیین کند، می توانیم تمامی فیلد های (field) فرم را به صورت hidden قرار بدهیم و بنابراین تنها دکمه مربوط به فرم به کاربر نمایش داده می شود که با کلیک بر روی آن، به صفحه پرداخت منتقل می شود.

اکنون فرض می کنیم که تمام فیلد های (field) های فرم به صورت hidden باشد، کدهای فرم را می توانیم به صورت زیر بنویسیم (باز هم تاکید می کنم که لطفا کدها را از خود سایت پارس پال دریافت کنید و کدهای زیر، تنها برای ارائه توضیحات است) :

چون تمامی فیلدهای فرم (منظور تگ های input است) به صورت hidden تعیین شده اند، بنابراین کاربر تنها دکمه مربوط به فرم را می بیند که عبارت ((اتصال به درگاه پرداخت)) بر روی آن نوشته شده است.

با کد زیر، صفحه پردازش اطلاعات را تعیین کرده ایم (صفحه ای در سایت پارس پال) :

روش ارسال اطلاعات فرم، به صورت روش POST انتخاب شده است :

هر تگ input ، حاوی یکی از اطلاعات مهم است که باید یه سایت پارس پال ارسال شود. مثلا کد یکی از این تگ های input را ببینید :

چون تگ به صورت hidden است، پس کاربر آن را نمی بیند. نام MerchantID برای آن انتخاب شده است که یکی از همان دو اطلاعاتی است که گفتیم سایت پارس پال برای درگاه پرداخت سایت ما، تعیین می کند. این نام را با مشخصه name در تگ input تعریف کرده ایم. همچنین مقدار متناظر با آن را با مشخصه value در تگ input تعیین کرده ایم (چون hidden است، پس کاربر آن را نمی بیند و نمی تواند آن را تغییر بدهد پس همین مقداری که در کدها نوشته ایم، به سرور سایت پارس پال ارسال می شود).

خوب اکنون تک تک اطلاعات فرم را شرح می دهیم (بر اساس نام تعیین شده برای آنها) :

1- ReturnPath :

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

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

صفحه ای که تعیین کرده ایم، می تواند عملیات های مختلفی را انجام بدهد که در ادامه در مورد آنها صحبت خواهیم کرد، ولی بد نیست همین حالا دو حالت کلی را شرح بدهیم :

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

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

بنابراین کدهایی که در این صفحه نوشته می شوند، اهمیت زیادی دارند. ولی فعلا در مورد آن صحبت نمی کنیم و در انتهای مبحث، نکات آن را ذکر خواهیم کرد.

2- MerchantID : همان شناسه درگاه (Merchant ID) است که از سایت پارس پال دریافت کرده ایم.

3- Password : همان ((کلمه عبور درگاه)) است که از سایت پارس پال دریافت کرده ایم.

4- Description : در این قسمت، می توانیم یک توضیح دلخواه بنویسیم که بعدا با دیدن این توضیح، مثلا متوجه بشویم که واریز این وجه به چه دلیل بوده است (یا هر مورد دیگر). دقت کنید که این توضیح، بعدا در ایمیلی که برای خود کاربر ارسال می شود، نوشته خواهد شد، بنابراین آن را مختصر و به صورت قابل درک برای کاربر، بنویسید.

5- Paymenter : در این قسمت، نام مربوط به کاربری که وجه را پرداخت می کند را می نویسیم. دقت کنید که این نام، بعدا به عنوان نام کاربر، در بالای ایمیلی که برای کاربر ارسال می شود، نوشته خواهد شد. بنابراین عدد مربوط به id کاربر (user id) را در این قسمت ننویسید، بلکه نام وی را در این قسمت قرار بدهید.

6- Email : ایمیل کاربری که وجه را واریز می کند.

7- Mobile : شماره موبایل کاربری که وجه را واریز می کند.

8- Price : مقدار مبلغی که کاربر باید واریز کند (به تومان).

9- ResNumber : شماره سفارش.

نکته

مدیران سایت ها می توانند در پایگاه داده (database) سایت خود، یک جدول (table) ساخته و موارد مربوط به واریز وجه را در آن ثبت کنند و مواردی مثل id کاربر و یا توضیحات کاملی در مورد پرداخت (که این بار کاربر آنها را نخواند) را در جدول ذخیره کنند. البته این مورد اختیاری است و بستگی به مدیران سایت ها دارد.

کدهای ((صفحه بازگشت)) :

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

کدهای PHP لازم برای چک کردن واریز وجه، می تواند به صورت زیر باشد (باز هم تاکید می کنم که لطفا کدها را از خود سایت پارس پال دریافت کنید و کدهای زیر، تنها برای ارائه توضیحات است) :

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

در کدها، متغیر با نام status را که با روش POST به این صفحه ارسال می شود (توسط سایت پارس پال به صفحه بازگشت ارسال می شود) را دریافت می کنیم و بر اساس آن می توانیم متوجه بشویم که پرداخت وجه موفقیت آمیز بوده است یا خیر.

سایت پارس پال، به صفحه بازگشت، متغیری با نام refnumber را نیز با روش POST ارسال می کند که یک ((شماره رسید)) برای پرداخت وجه انجام شده است (البته اگر پرداخت وجه، موفقیت آمیز بوده باشد). بنابراین اگر پرداخت وجه موفقیت آمیز بوده باشد، این شماره رسید نیز توسط کدها، به کاربر نمایش داده می شود.

نکته مهم

در کدی که ارائه شده، مقدار مربوط به متغیر refnumber با روش POST دریافت شده و توسط تابع echo در خروجی چاپ می شود. خوب این قسمت از کدها، یک حفره امنیتی را به وجود می آورد که هکرها می توانند از آن استفاده کنند. یعنی هکرها، کدهای مخرب خود را با روش POST ، به عنوان مقدار متغیر refnumber ، به این صفحه ارسال می کنند و چون کدها با تابع echo در خروجی منعکس می شوند، بنابراین کدها در صفحه اجرا خواهند شد. به این حمله، حمله XSS گفته می شود که در مورد آن، می توانید در کلید شماره 2502 بخوانید. توصیه این است که بیشتر در مورد آن تحقیق کنید و هنگام نوشتن کدهای نهایی، این مورد امنیتی را در نظر داشته باشید.

نکته

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

کدهای PHP را باید در میان دو تگ body صفحه قرار بدهید.

نکته مهم

لطفا برای امنیت بیشتر چک کردن پرداخت توسط کاربر، موضوع زیر را بخوانید :


چک کردن صحت پرداخت توسط پارس پال

تست کردن کدهای درگاه پرداخت پارس پال (ParsPal) :

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

نام کاربر را برابر user_id_1 تعیین کرده ام و مبلغ واریز وجه را هم برابر 100 (یعنی 100 تومان) در نظر گرفته ام.

صفحه فرم به صورت زیر نمایش داده می شود (تنها شامل یک دکمه) :

استفاده از درگاه پرداخت وجه پارس پال (ParsPal) برای سایت خود، با استفاده از Post Service ، با کدهای PHP

با کلیک بر روی دکمه، به صفحه زیر در سایت پارس پال منتقل می شویم :

استفاده از درگاه پرداخت وجه پارس پال (ParsPal) برای سایت خود، با استفاده از Post Service ، با کدهای PHP

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

استفاده از درگاه پرداخت وجه پارس پال (ParsPal) برای سایت خود، با استفاده از Post Service ، با کدهای PHP

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

استفاده از درگاه پرداخت وجه پارس پال (ParsPal) برای سایت خود، با استفاده از Post Service ، با کدهای PHP

موارد خواسته شده را پر می کنیم و سپس بر روی دکمه ((پرداخت)) کلیک می کنیم. پیامی به صورت زیر نمایش داده می شود (البته در مرورگر اینترنت من اینگونه است، شاید شما پیامی مشاهده نکنید) :

استفاده از درگاه پرداخت وجه پارس پال (ParsPal) برای سایت خود، با استفاده از Post Service ، با کدهای PHP

بر روی گزینه Submit کلیک می کنیم تا پیام سبز رنگی به عنوان اعلام موفقیت آمیز بودن پرداخت، از طرف بانک، به ما نمایش داده شود :

استفاده از درگاه پرداخت وجه پارس پال (ParsPal) برای سایت خود، با استفاده از Post Service ، با کدهای PHP

پس از چند ثانیه، به صورت خودکار، ((صفحه بازگشت)) ای که تعیین کرده بودیم نمایش داده می شود (در واقع، ابتدا بانک، اطلاعات پرداخت را به پارس پال ارسال می کند و سپس سایت پارس پال، کاربر را به صفحه بازگشت مورد نظر ما هدایت می کند) :

استفاده از درگاه پرداخت وجه پارس پال (ParsPal) برای سایت خود، با استفاده از Post Service ، با کدهای PHP

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

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

استفاده از درگاه پرداخت وجه پارس پال (ParsPal) برای سایت خود، با استفاده از Post Service ، با کدهای PHP

همچنین ایمیل کاربر را هم برابر ایمیل خود تعیین کرده بودم (برای تست)، بنابراین یک ایمیل هم به عنوان پرداخت کننده وجه دریافت کرده ام (از طرف پارس پال) :

استفاده از درگاه پرداخت وجه پارس پال (ParsPal) برای سایت خود، با استفاده از Post Service ، با کدهای PHP

من نام کاربر را برابر user_id_1 در نظر گرفته بودم که در ایمیل نوشته شده است، بنابراین شما نام واقعی کاربر را به عنوان نام کاربر به کار ببرید زیرا در عنوان ایمیل، ذکر می شود.

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

استفاده از درگاه پرداخت وجه پارس پال (ParsPal) برای سایت خود، با استفاده از Post Service ، با کدهای PHP
استفاده از درگاه پرداخت وجه پارس پال (ParsPal) برای سایت خود، با استفاده از Post Service ، با کدهای PHP

قرار دادن لوگوی تاییدیه پارس پال در سایت خود :

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

استفاده از درگاه پرداخت وجه پارس پال (ParsPal) برای سایت خود، با استفاده از Post Service ، با کدهای PHP

یکی از آنها را انتخاب کرده و کد آن را در سایت خود قرار بدهید.

نویسنده علیرضا گلمکانی
شماره کلید 2608
گزینه ها
به اشتراک گذاری (Share) در شبکه های اجتماعی
نظرات 1 1 0
بهنام مقدس
۱۴۰۱/۰۳/۰۷
۰۰:۲۸

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

ارسال نظر جدید (بدون نیاز به عضو بودن در وب سایت)

جستجو در کلیدستان، توسط گوگل

جستجو در عنوان کلیدها

دسترسی سریع

کلید
×

شماره کلید


دسته بندی
×

شماره دسته کلید


جستجو
×

جستجو


راهنمای توابع PHP

راهنمای توابع PHP بر اساس حرف اول تابع :

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z