در این آموزش , قصد داریم به شما نحوه اتصال به درگاه پرداخت paypal در php را نشان بدیم . همچنین یک کد php نمونه برای هماهنگ سازی پرداخت ها با درگاه واسط پی پال (PAYPAL) را خواهیم دید . در اینجا ما از حالت sandbox (آزمایشی) برای اطمینان از پرداخت قبل از اجرایی کردن آن استفاده میکنیم . در آموزش قبلی به شما نحوه اتصال به درگاه بانک ملت php را همراه با سورس کد کامل نشان دادیم
اخیرا یکی از مشتریان درخواست هماهنگ سازی پرداخت قسمتی از پروژه با پی پال رو داشتند و احساس شد شاید دوستان توسعه دهنده دیگری با نحوه اتصال به درگاه پرداخت paypal در php آشنا نباشند و نیاز است که این قابلیت را در پروژه های خود پیاده سازی کنند . برای همین تصمیم گرفتیم یک آموزش در این مورد در نت پارادیس بخش آموزش php منتشر کنیم.
مراحل اتصال به درگاه پرداخت paypal در php
- لاگین / ثبت نام در پی پال به عنوان توسعه دهنده (https://developer.paypal.com)
- به قسمت Dashboard > Sandbox > Accounts بروید و یک اکانت تست برای خریدار و فروشنده به واسطه کلیک بر روی Business and Personal بسازید .
- به اکانت تجاری Sandbox لاگین کنید و به قسمت My Account > profile > My selling tools بروید
- از قسمت PayPal buttons کد button را کپی و در صفحه خود قرا بدید
- از قسمت Website Preferences گزینه Auto Return را روشن (turn on) و url بازگشتی بعد پرداخت (callbackURL) را وارد کنید.
- از قسمت Instant payment notifications گزینه Receive IPN messages (Enabled) را انتخاب و آدرس Notification URL را وارد کنید.
مثال اتصال به درگاه پرداخت paypal در php
در این مثال از کد های php , 4 فایل برای انجام مراحل پرداخت پی پال نیاز داریم .
فایل های php در زیر لیست شده اند :
Index.php
– شامل یک فرم با پارامتر های پرداخت پی پال (paypal) و دکمه خرید (Buy Now).Payment.php
– دارای IPN listener برای دریافت اعلان های پرداخت و بروزرسانی (UPDATE) جدول سفارش و پرداختThanks.php
– نمایش پیغام پرداخت موفقیت آمیز بعد از برگشت از درگاه پرداختCancel.php
– اطلاع به کاربر در صورتی که پرداخت موفقیت آمیز نبود و یا توسط کاربر کنسل شده باشد .
ارسال پارامتر های پرداخت به Paypal Sandbox
این فرم شامل item_name , item_number , amount , currenc
y و پارامتر های دیگر به همراه دکمه خرید است .
حتما کد های دکمه خرید را از قسمت My Account > Profile > My selling tools > PayPal buttons کپی و در فایل خود قرار بدید
بعد از کلیک این دکمه , پارامتر های ست شده به Paypal sandbox طبق url تعریف شده در مشخصه action فرم ارسال می شوند .
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
<img src="camera.jpg" /> <h3>Camera <br> $0.01</h3> <form action="https://www.sandbox.paypal.com/cgi-bin/webscr" method="post" target="_top"> <input type='hidden' name='business' value='Paypal_Business_TestAccount_Id'> <input type='hidden' name='item_name' value='Camera'> <input type='hidden' name='item_number' value='CAM#N1'> <input type='hidden' name='amount' value='0.01'> <input type='hidden' name='no_shipping' value='1'> <input type='hidden' name='currency_code' value='USD'> <input type='hidden' name='notify_url' value='http://SITE NAME/payment.php'> <input type='hidden' name='cancel_return' value='http://SITE NAME/cancel.php'> <input type='hidden' name='return' value='http://SITE NAME/success.php'> <!-- COPY and PASTE Your Button Code --> <input type="hidden" name="cmd" value="_s-xclick"> <input type="hidden" name="hosted_button_id" value="### COPY FROM BUTTON CODE ###"> <input type="image" src="https://www.sandbox.paypal.com/en_US/i/btn/btn_buynow_LG.gif" border="0" name="submit" alt="PayPal - The safer, easier way to pay online!"> </form> |
پیاده سازی وضعیت پرداخت (Payment Notification Listener)
در این مثال از اتصال به درگاه پرداخت paypal در php , یک فایل payment.php به عنوان IPN listener داریم که برای دریافت وضعیت پرداخت استفاده می شود . پی پال یک کد مثال برای IPN listener به زبان های مختلف (از جمله PHP) قرار داده است . ما از فایل paypal_ipn.php برای تغییر اطلاعات دیتابیس پرداخت استفاده میکنیم.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
... if (strcmp ($res, "VERIFIED") == 0) { // assign posted variables to local variables $item_name = $_POST['item_name']; $item_number = $_POST['item_number']; $payment_status = $_POST['payment_status']; $payment_amount = $_POST['mc_gross']; $payment_currency = $_POST['mc_currency']; $txn_id = $_POST['txn_id']; $receiver_email = $_POST['receiver_email']; $payer_email = $_POST['payer_email']; include("dbcontroller.php"); $db = new DBController(); // check whether the payment_status is Completed $isPaymentCompleted = false; if($payment_status == "Completed") { $isPaymentCompleted = true; } // check that txn_id has not been previously processed $isUniqueTxnId = false; $result = $db->selectQuery("SELECT * FROM payments WHERE txn_id = '$txn_id'"); if(empty($result)) { $isUniqueTxnId = true; } // check that receiver_email is your PayPal email // check that payment_amount/payment_currency are correct if($isPaymentCompleted && $isUniqueTxnId && $payment_amount == "0.01" && $payment_currency == "USD") { $payment_id = $db->insertQuery("INSERT INTO payment(item_number, item_name, payment_status, payment_amount, payment_currency, txn_id) VALUES('$item_number', '$item_name', $payment_status, '$payment_amount', '$payment_currency', '$txn_id')"); } // process payment and mark item as paid. if(DEBUG == true) { error_log(date('[Y-m-d H:i e] '). "Verified IPN: $req ". PHP_EOL, 3, LOG_FILE); } } ... |
بعد از ست کردن IPN listener در پی پال به قسمت My Account > Profile > My selling tools بروید و بخش Recieve IPN messages (Enabled) را انتخاب و آدرس کامل (absolute) را به عنوان Notification URL وارد و ذخیره کنید
بدلیل داکیومنت قوی پی پال و سادگی استفاده و پیاده سازی درگاه پرداخت paypal در برنامه های تحت وب , به راحتی می توانید در پروژه های واقعی این مورد را پیاده سازی و استفاده کنید
امیدوارم از آموزش اتصال به درگاه پرداخت paypal در php لذت برده باشید و در پروژه هایی که می نویسید از این روش ها بهره ببرید.
برای دانلود سورس کد کامل از دانلود باکس استفاده کنید
هر سوالی داشتید ، از قسمت نظرات اقدام کنید . سریعا ، پاسخگوی سوالات شما هستیم .
موفق و پیروز باشید.
آقا شما خییییلی خوبی. کلا آموزشها صریح و کاملا قابل اجرا. متشکر
سلام. خداروشکر راضی هستید.
موفق و پیروز باشید
سلام
شما میدونید برای پرداخت پی پال که بتونه توی یه تراکنش پرداختی ۲ تا پرداخت انجام بشه یعنی من یه فروشنده دارم که باید سهمش رو بریزم حسابش و سهم ادمین سایت هم بره تو حسابش
چنین چیزی داره پی پال؟؟
ممنون
سلام. اطلاع ندارم باید داخل داکیومنت پی پال نگاه کنید
سلام برای اتصال به credit card ها هم این روش جواب میده یا متفاوته؟؟؟
سلام. متفاوت هست
با آیپی ایران نمیتونید از هیچ کدوم از حالت های پی پال حتی لوکال استفاده کنید.
سلام
من یه اکانت paypal ساختم و بعد از اون اکانت تجاری Sandbox رو هم ساختم و لاگین کردم ولی نمیتونم این مسیر رو پیدا کنم.
My Account > profile > My selling tools
اگر امکانش هست راهنماییم کنید از کدوم قسمت میتونم پیداش کنم
ممنون
سلام. این قابلیت برای بعضی کشورها غیرفعال هست.
از طریق لینک زیر ببینید به چه صورته و اکانت کشور دیگه باید داشته باشید تا دسترسی باز بشه یا اینکه حساب شما باید پرداخت بین المللیش فعال باشه به هر حال موارد زیادی رو باید بررسی کنید ببینید دلیلش چیه
همچنین اکانت هم ممکنه باید business باشه نه personal
https://www.paypal.com/cgi-bin/webscr?cmd=_display-country-functionality-outside&dispatch=5885d80a13c0db1f8e263663d3faee8d64ad11bbf4d2a5a1a0d303a50933f9b2
سلام این سورس منسوخ نشده هنوز؟؟
(اردیبهشت۹۹)
سلام. خیر مشکلی نیست و میتونید استفاده کنید
سلام
من میخوام یک سایت بیارم بالا غیر فارسی
فروشگاهی
چطور میتونم مشکل خرید رو که توسط مشتریان خارجی انجام میشه حل کنم ؟
ممنون میشم راهنمایی کامل بفرمایید
با تشکر
سلام. مشکل خرید منظورتون چی هست. اگر سایت در هاست خارجی هست و آیپی ایران هم نباشه میتونید درگاه رو راه اندازی و خرید انجام میشه
ببخشید منظورم این هست که مثلا من یه فروشگاه اینترنتی بیارم بالا حالا یک نفر از آلمان یا کاندا میخواد از فروشگاه من خرید کنه
آیا شدنی هست و شما همچین پروژه ای انجام دادین ؟
با تشکر از شما
بله شدنی هست و باید برون سپاری کنید براتون انجام بدند
سلام ممنون از آموزش خوبتون
نحوه اتصال اکانت فعال شده هم به این شکل هست ؟
یکی از آشنایان بنده در خارج از کشور قرار هست از طریق اکانت خودشون برای ما درگاه ثبت کنند.
هاست و دامنه هم ایرانی نیستند.
راستی پی پال به سایت های که زبانشون فارسی هست درگاه می ده ؟
سلام. خوشحالیم که مفید واقع شده.
بله به اینصورت هست. سورس کامل هم از بخش باکس دانلود قابل دریافت است.
سایت باید غیر فارسی باشه به هر حال باز هم شانسی هست که به خاطر فارسی بودن رد کنند ولی باز میتونید درخواست بدید.
موفق باشید.
سلام
کردیت کارت و پرفکت مانی رو هم اموزش بدید.
تشکر.
سلام . بله حتما .
موفق و پیروز باشید