درگاه پرداخت پارس پال
این API به صورت RestFull و برای انجام عملیات های مرتبط با پرداخت آنلاین در بستر وب مورد استفاده قرار می گیرد ، برای دسترسی به نسخه عملیاتی و نسخه تست نیز می توانید از مسیر های ذکر شده در زیر استفاده نمایید .
برای استفاده از این API شما نیازمند یک APIKey هستید که می بایست با عضویت در پارس پال و پس از درخواست درگاه برای وب سایت مورد نظر این کلید را برای دسترسی به API دریافت نمایید .
کلید یک رشته 32 کاراکتری می باشد که در فرمت های استاندارد GUID قابل دریافت و شناسایی می باشد ، همچنین در صورتی که توسعه دهنده هستید می توانید برای برنامه نویسی و اتصال در محیط تست یا Sandbox از کلید زیر استفاده نمایید.
برای ارسال درخواست می بایست تابع درخواستی خود را در مسیر API قرار داده و اطلاعات مورد نیاز را در قابل یک درخواست JSON و با متد POST ارسال نمایید .
برای تمام درخواست ها نیز به منظور شناسایی یا Authorize درخواست کننده می بایست APIKey از طریق Header و یا Query ارسال گردد ، توصیه ما برای ارسال کلید بخش هدر درخواست می باشد .
فرمت اصلی خروجی درخواست های API به صورت JSON می باشد که در صورت نیاز با تغییر هدر Accept به application/xml پاسخ دریافتی در قالب XML ارائه خواهد شد . این مورد در رابطه با نحوه ارسال اطلاعات نیز با هدر Content-Type قابل تغییر می باشد و می توانید در صورت نیاز در شرایط خاص درخواست خود را در فرمت XML ارسال نمایید .
با توجه به آنکه استاندارد API های REST در تمامی زبان های برنامه نویسی به سولت قابل دسترسی و پیاده سازی می باشد پیشنهاد ما ارسال درخواست در قالب مدل JSON می باشد در ادامه نیز مثال هایی برای تمامی درخواست ها ذکر و تمام موارد به همراه جزئیات توضیح داده شده است .
همچنین کد های پاسخ HTTP Status Code نیز بر اساس استاندارد بازگشت و قابل تشخیص و استفاده می باشند :
200
OK - دریافت موفق درخواست
400
Bad Request - خطا در اطلاعات یا انجام
401
Unauthorized - دسترسی غیر مجاز و یا عدم ارسال ApiKey
کلیه فرآیند های مرتبط با عملیات پرداخت از طریق مسیر payment مورد پردازش قرار می گیرد ، در زیر توابع و فرآیند های آن ذکر شده است .
برای مشاهده جزئیات و مدل هر تابع ، همچنین انجام تست و اتصال آن برروی عنوان های زیر کلیک نمایید
پس از آنکه در وب سایت پذیرنده تمامی مراحل انجام و سفارش مورد نیاز ثبت گردید و نیازمند ارسال کاربر جهت انجام پرداخت هستید می بایست با فراخوانی این تابع و ارسال اطلاعات مورد نیاز به پارس پال ، لینک مورد نیاز جهت هدایت کاربر به مراحل پرداخت را دریافت نمایید .
پارامتر های الزامی برای درخواست پرداخت amount
و return_url
هستند و با ارسال صحیح این دو پارامتر قادر به ارسال درخواست برای پرداخت هستید .
توجه داشته باشید که تمام روال های داخلی پرداخت می بایست بر اساس نیاز شما طراحی و برنامه نویسی گردد و فرآیند های مورد نیاز ارتباطی به پارس پال نخواهد داشت .
به منظور شناسایی درخواست در هنگام بازگشت می توانید از پارامتر های reserve_id
و یا order_id
استفاده نمایید .
هر مقداری که برای این دو فیلد ارسال گردد در پایان مراحل پرداخت ، مجدد به مسیر بازگشت POST خواهد شد ، این دو فیلد اختیاری می باشد و مقادیر آن اعتبار سنجی نخواهد شد و می تواند
مقادیر عدد و رشته ای را در بر داشته باشد و یکتابودن آن نیز بررسی نمی گردد .
مشخصه payer
نیز یک شئی از مشخصات پرداخت کننده می باشد که نام ، آدرس ایمیل و شماره موبایل را دریافت می نماید ،
و ارسال آن اختیاری می باشد ، و در صورت ارسال ، این اطلاعات در پنل کاربری قابل مشاهده و گزارش گیری می باشد ، همچنین
برروی اطلاعات ارسالی هیچ کنترل یا صحت سنجی انجام نمی گردد و مقدار موبایل تنها به صورت عددی قابل پذیرش می باشد .
در صورتی که قصد یا امکان ارسال این اطلاعات را ندارید از ارسال اطلاعات ثابت برای همه درخواست ها خودداری نمایید و مقدار تهی یا نال ارسال نمایید .
پس از آماده سازی درخواست و ارسال آن نتیجه با فرمت درخواستی با پارامتر های مورد نیاز با وضعیت موفق یا خطا در فیلد
status
به شرح زیر بازگشت خواهد شد :
ACCEPTED
: پذیرش موفقیت آمیز درخواست
FAILED
: عدم پذیرش درخواست
پس از دریافت وضعیت ACCEPTED
می بایست پرداخت کننده را برای شروع مراحل پرداخت به مسیر دریافتی در پارامتر link
هدایت نمایید ، در صورتی که اطلاعات
ارسالی نیز با مشکل مواجه باشد وضعیت FAILED
خواهد شد ، همچنین در این حالت کد http پاسخ نیز 400 برگشت می گردد . در هنگام بروز مشکل در درخواست ، جزئیات
خطا در فیلد error_type
قابل دسترسی می باشد ، که شرح خطاهای معمول آن در زیر ذکر شده است ، همچنین به منظور سهولت در خطایابی در پارامتر message
توضیحات و شرح خطا به صورت یک پیام فارسی اعلام می گردد :
-2 UNAUTHORIZED
: توکن شناسایی ApiKey ارسال نشده است
-1 INVALID_APIKEY
: توکن شناسایی ApiKey صحیح نمی باشد
1 INVALID_AMOUNT
: مبلغ ارسالی صحیح نمی باشد
2 INVALID_RETURN_URL
: مسیر بازگشت ارسالی صحیح نمی باشد
3 INVALID_CURRENCY
: واحد پول ارسالی معتبر نمی باشد
4 INVALID_IP
: آی پی ارسال کننده درخواست معتبر نمی باشد
10 INACTIVE_GATEWAY
: درگاه/حساب غیر فعال است
11 BLOCKED_GATEWAY
: درگاه/حساب مسدود شده است
12 NOTREADY_GATEWAY
: درگاه راه اندازی نشده است
20 SERVICE_NOT_AVAILABLE
: در حال حاضر سرویس در دسترس نمی باشد
30 BAD_REQUEST
: محتوایی برای درخواست ارسال نشده است
99 UNKNOWN_ERROR
: خطای تعریف نشده
مقادیر نوع خطا تماما با حروف بزرگ هستند ، همچنین error_code
نیز شناسه عددی هر خطا را بازگشت می دهد
توجه فرمایید که روال های داخلی وب سایت شما می بایست توسط برنامه نویس پیاده سازی و یا توسط افزونه یا سیستم مدیریت محتوای خاص انجام گردد ، برای مثال اگر نیاز دارید کاربر با انتخاب محصول و ثبت سفارش نسبت به پرداخت اقدام نماید می بایست این مراحل برروی وب سایت شما پیاده سازی و اطلاعات مورد نظر از قبیل نوع محصول ، مبلغ ، کاربر و ... ذخیره و در هنگام نیاز به پرداخت با اتصال به API پارس پال مسیر مورد نیاز جهت انجام فرآیند پرداخت توسط کاربر را دریافت نمایید .
پس از هدایت کاربر به مسیر link
در پاسخ دریافتی می بایست اقدامات لازم را برای بررسی وضعیت پرداخت در صفحه بازگشت اعلامی انجام دهید
، هنگامی که کاربر پرداخت را انجام و یا از پرداخت منصرف شود به مسیر بازگشت اعلامی در return_url
هدایت خواهد شد .
در پاسخ درخواست پرداخت payment_id
یک شناسه یکتا به منظور شناسایی و استعلام پرداخت می باشد که بر اساس نیاز در پروژه ها یا اپلیکیشن ها
می توانید با استفاده از آن به صورت لحظه ای از وضعیت و جریان پرداخت مطلع شوید ، جهت دریافت اطلاعات می بایست این شناسه را به تابع inquiry
ارسال نمایید .
پارامتر default_psp
یک فیلد اختیاری است که می توانید با ارسال کد شرکت پرداخت ، درخواست هدایت مستقیم کاربر را به صفحه پرداخت شاپرک اعلام نمایید ،
این پارامتر در جزئیات ترمینال درگاه در پنل کاربری قابل مشاهده است ، همچنین در صورتی که شرکت پرداخت یا ترمینال قادر به پاسخگویی نباشد
به صورت خودکار ترمینال شرکت پرداخت دیگری جایگزین خواهد شد .
پارامتر currency
یک فیلد اختیاری است که در صورت عدم ارسال آن ، مبلغ ارسال شده در درخواست پرداخت بر اساس تنظیمات درگاه شناسایی خواهد شد ،
در صورتی که مقدار این فیلد در هنگام ارسال درخواست تعیین گردد ملاک اصلی برای محاسبه مبلغ می باشد و به صورت خودکار تبدیل واحد پردازش خواهد شد ، مقادیر زیر برای واحد پول قابل ارسال می باشند .
IRR
: واحد پول ریال
IRT
: واحد پول تومان
پس از انجام یا انصراف از پرداخت ، کاربر به مسیر بازگشتی اعلامی توسط شما هدایت خواهد شد ، پیش از هر چیز به این نکته توجه داشته باشید که تحویل محصول و یا ثبت سفارش در وب سایت شما تنها منوط به ارسال شماره رسید پرداخت به این تابع و دریافت تاییدیه آن می باشد و وضعیت status تنها به منظور اطلاع رسانی از وضعیت تراکنش به صورت POST ارسال می گردد و به هیچ وجه قابل استناد برای تکمیل فرآیند خرید نخواهد بود !
، در هنگام ارسال کاربر اطلاعات مورد نیاز برای اعتبار سنجی پرداخت از طریق متد POST به وب سایت شما ارسال خواهد شد که توضیحات این پارامتر ها در زیر ذکر شده است :
status
: وضعیت انجام فرآیند توسط کاربر
receipt_number
: شماره رسید پرداخت
payment_id
: شناسه درخواست پرداخت
reserve_id
: شناسه رزرو - این مقدار هنگام درخواست پرداخت اعلام شده است
order_id
: شناسه سفارش - این مقدار هنگام درخواست پرداخت اعلام شده است
در صفحه بازگشت پرداخت می بایست با دریافت این اطلاعات و شناسایی کاربر و درخواست پرداخت ابتدا وضعیت فرآیند کاربر را با
ورودی status
بررسی نمایید ، شرح مقادیر در زیر اعلام شده است :
100
: کاربر عملیات پرداخت را انجام داده است
99
: انصراف کاربر از پرداخت
88
: پرداخت ناموفق
77
: لغو پرداخت توسط کاربر
در صورتی که وضعیت برابر با 100
دریافت گردد شما می بایست عملیات اعتبار سنجی و تایید پرداخت را از طریق API انجام دهید
، در این حالت پارامتر receipt_number
در بردارنده شماره رسید پرداخت کاربر می باشد که با ارسال آن به تابع verify می بایست
از صحت انجام تراکنش مطمئن شوید ، توجه فرمایید که وضعیت status با مقدار 100 نشان دهنده پرداخت موفق نمی باشد
و تکمیل خرید برای تحویل سفارش به کاربر فقط می بایست با دریافت تاییدیه از طریق API صورت پذیرد .
برای انجام تاییدیه می بایست مبلغ پرداخت به همراه شماره رسید به تابع verify
ارسال گردد ، در صورتی که اطلاعات ارسال شده صحیح باشد
تنها یک بار وضعیت بازگشتی status
برابر با SUCCESSFUL
بازگشت داده خواهد شد و پس از دریافت این مقدار می بایست نسبت به تکمیل سفارش و تحویل محصول اقدام نمایید .
SUCCESSFUL
: تایید شماره رسید پرداخت
VERIFIED
: شماره رسید قبلا تایید گردیده است
AMOUNT_NOT_MATCH
: مبلغ اعلامی جهت تایید پرداخت با مبلغ پرداخت شده همخوانی ندارد
INVALID_RECEIPT_NUMBER
: شماره رسید پرداخت معتبر نمی باشد
توجه فرمایید در صورتی که پارامتر واحد پول در هنگام درخواست پرداخت توسط شما اعلام گردد ، در هنگام تایید نیز می بایست واحد پول به شکل صحیح ارسال گردد
همچنین در صورت وجود خطا در درخواست verify خطا های آن با درخواست پرداخت مشترک بوده و از طریق پاسخ خطای 400 و پارامتر error_type
بازگشت داده خواهد شد .
یکی از نیازهای سیستم های فروش آنی و یا اپلیکیشن ها اطلاع لحظه ای از وضعیت درخواست پرداخت می باشد ، همچنین با استعلام پرداخت در Cron می توانید بدون نیاز به هندل
در بازگشت پرداخت وضعیت پرداخت را بررسی و تکمیل نمایید ، این تابع به صورت جانبی بوده و در افزونه های پرداخت یا روال های فروشگاهی نیازی به استفاده از آن نمی باشد و کاربر آن
عموما در سیستم های برنامه نویسی شده برای افزایش راندمان و سرعت تکمیل سفارش می باشد ، اطلاعات این تابع شناسه درخواست پرداخت و مبلغ درخواست می باشد که این شناسه هنگام ثبت درخواست در تابع
request
بازگشت داده می شود و هم اکنون به منظور رعایت موارد امنیتی می بایست به همراه مبلغ ارسال نمایید .
در صورت صحیح بودن اطلاعات ارسالی وضعیت ACCEPTED
را دریافت می نمایید که سایر اطلاعات درخواست پرداخت نیز به همراه آن ارسال خواهد شد ، مهمترین اطلاعات بازگشت داده شده وضعیت پرداخت و تایید آن می باشد که در زیر
ذکر شده است ، توجه فرمایید این تابع صرفا جهت استعلام وضعیت درخواست می باشد و پس از آن باید از طریق تابع verify
پرداخت را تایید و پس از آن نسبت به تحویل محصول یا تکمیل سفارش اقدام نمایید .
is_paymented
: وضعیت موفق بودن پرداخت
is_verified
: وضعیت تایید پرداخت
در صورتی که رسید پرداخت قبلا تایید گردیده باشد is_verified مقدار true
خواهد بود که به معنی انجام تایید و تکمیل سفارش توسط وب سایت شما از طریق api می باشد .
عدم همخوانی یا نداشتن صحت اطلاعات وضعیت خطای INVALID_DATA
در فرمت پاسخ خطا بازگشت خواهد شد ، این تابع نیز دارای محدودیت در درخواست می باشد و در صورت
فراخوانی بیش از تعداد در دقیقه و یا ارسال اطلاعات اشتباه متداوم دسترسی به این تابع محدود خواهد شد .
کاربر گرامی ، به این نکته توجه داشته باشید این مستندات و راهنما تنها برای برنامه نویسان و توسعه دهندگان تهیه شده است ، در صورتی که شما از سیستم های مدیریت محتوای رایگان مانند وردپرس ، جوملا و ... استفاده می نمایید می توانید با مراجعه به بخش پلاگین های آماده نسبت به دانلود پلاگین پرداخت مورد نیاز خود اقدام نمایید . در صورتی که از سیستم های برنامه نویسی شده استفاده می کنید می بایست با ارائه مستندات به برنامه نویس و یا شرکت طراح وب سایت یا فروشگاه خود نسبت به پیاده سازی روند پرداخت اقدام نمایید ، به این نکته توجه داشته باشید که در صورتی که به برنامه نویسی تسلط کافی نداشته باشید نمی توانید با استفاده از این راهنما نسبت به پیاده سازی روند پرداخت اقدام نمایید و این آموزش و کد های آماده تنها برای انتقال فرآیند به برنامه نویسان و توسعه دهندگان فراهم شده است . حال اگر برنامه نویس یا توسعه دهنده هستید و برای پیاده سازی روال پرداخت نیاز به راهنمایی بیشتری دارید توضیحات ذکر شده در زیر را مطالعه نمایید .
اگر یک سیستم فروشگاهی یا خدماتی را پیاده سازی نموده اید و هم اکنون نیازمند اتصال به فرآیند پرداخت هستید می بایست کاربر را برای انجام پرداخت آماده و سپس درخواست خود را
جهت دریافت مسیر پرداخت به api ارسال نمایید ، پیش از شروع عملیات پرداخت شما می بایست اطلاعات مورد نیاز جهت فرآیند خرید را در قالب یک سفارش یا فاکتور در پایگاه داده وب سایت ذخیره نمایید
این اطلاعات شامل مشخصات کاربر ، محصول ، مبلغ پرداخت و ... می باشد که پس از ذخیره سازی می بایست شناسه یکتای آن را به عنوان reserve_id
یا order_id
یا در صورت نیاز با استفاده
از هر دو پارامتر جهت درخواست پرداخت ارسال نمایید ، همچنین با توجه به ساختار سیستم خود می توانید در مسیر برگشت نیز پارامتر های امنیتی مورد نیاز خود را
به صورت Query String نیز ارسال نمایید ، همچنین توصیه می شود payment_id
را نیز در صورت تمایل در پایگاه داده وب سایت خود ذخیره نمایید که در بازگشت از پرداخت می توانید همسان بودن آن را نیز کنترل نمایید ،
پس از آنکه کاربر را به مسیر پرداخت هدایت نمودید می بایست فرآیند های مورد نیاز را جهت تکمیل خرید در مسیر بازگشت اعلامی آماده نمایید .
برای ارسال درخواست پرداخت تنها پارامتر های مبلغ و مسیر بازگشت الزامی می باشد و سایر پارامتر ها جهت سهولت کاربر و مدیریت پرداخت ها دریافت می گردد ، الزامی در ارسال اطلاعات پرداخت کننده وجود ندارد و درصورتی که تمایل به ارسال اطلاعات پرداخت کننده ندارید از ارسال مقادیر ثابت برای آن خودداری نمایید ، همچنین در صورتی که این اطلاعات را ارسال نمایید قادر به مشاهده آن در بخش پرداخت های پنل کاربری ، جستجو ، دریافت خروجی و استفاده از امکاناتی همچون ارسال رسید پرداخت از طریق ایمیل و پیامک هستید .
مسیر بازگشت می بایست مسیری از سایت برروی دامنه ثبت شده در اطلاعات درگاه باشد که شما برای تکمیل پرداخت ایجاد نموده اید ، این مسیر دلخواه و تماما توسط شما نامگذاری و ایجاد خواهد شد ، برای مثال اگر شما مسیر http://mysite.ir/order/callback را در هنگام درخواست پرداخت معرفی نمایید کاربر پس از انجام یا انصراف از پرداخت به این صفحه هدایت خواهد شد ، توجه فرمایید اطلاعات درخواست پرداخت به صورت POST به این مسیر ارسال می گردد و پیش از دریافت این اطلاعات نباید هیج تغییر مسیری صورت پذیرد چرا که منجر به حذف اطلاعات پست شده خواهد شد ، برای مثال اگر سایت شما دارای تغییر مسیر خودکار از مسیر بدون www به مسیر دارای www می باشد می بایست مسیر برگشت را به گونه ای اعلام نمایید که پیش از فراخوانی صفحه هیچ تغییر مسیری انجام نشود .
در صفحه بازگشت علاوه بر reserve_id
و order_id
اطلاعات مورد نیاز جهت پرداخت از جمله شماره رسید و یک خلاصه از وضعیت درخواست ارسال می گردد که پس از آن می بایست شماره رسید پرداخت که از طریق پارامتر
receipt_number
ارسال گردیده است را با استفاده از تابع verify اعتبار سنجی نمایید ، توجه فرمایید که تنها در صورت دریافت تاییدیه موفقیت آمیز با مقدار SUCCESSFUL
می بایست سفارش را تکمیل و محصول را به کاربر ارائه دهید ،
توجه فرمایید که این تابع تنها یک بار مقدار موفقیت آمیز را بازگشت می دهد و از نظر امنیتی دارای سطح بالایی می باشد از این رو شما نیز می توانید مواردی از قبیل کنترل تکرای نبودن شماره رسید و همخوانی شناسه درخواست پرداخت را
قبل از تحویل محصول کنترل نمایید .
Switch between example and interactive console for customized API calls.
برای شروع یک تابع را در ستون سمت راست انتخاب نمایید ، برای مثال ‘ request’
برای استفاده از کنسول اجرای آنلاین توابع لطفا از قسمت سمت راست یک مورد را انتخاب نمایید
برای مثال تابع ‘
request’
برای شروع زبان برنامه نویسی مورد نظر خود را انتخاب نمایید
تاکنون هیچ درخواستی اجرا نشده است . برای مشاهده نتیجه پاسخ درخواست برروی اجرای درخواست کلیک نمایید .
Loading…