درگاه پرداخت اینترنتی
توجه نمایید استفاده از وبسرویسها تنها از سمت سرور امکانپذیر است. کلیه فراخوانیها میبایست از سمت سرور صورت پذیرد. استفاده از سمت فرانت امکانپذیر نمیباشد.
فرآیند پرداخت بر روی درگاههای اینترنتی 4 مرحله دارد:
1. ساخت پرداخت: مشخصات پرداختی که می خواهد انجام شود را مانند مبلغ پرداخت و `redirectUrl` که آدرسی از سایت شماست که کاربر پس از پرداخت باید به آن هدایت شود را مشخص می کنید و در قبال آن یک `code` دریافت می کنید
2. هدایت به درگاه: کاربر را بهمراه کدی که در مرحله قبلی دریافت شده است به آدرس درگاه `redirect`
3. برگشت از درگاه بانکی تکمیل فرایند پرداخت: پس از اینکه پرداخت توسط کاربر انجام شد، کاربر را به همراه یک `refid` که کد تراکنش است به آدرس `redirectUrl` شما ارسال می کنیم و شما باید از طرف سرور خودتان آن شماره پرداخت را تایید کنید
4. تایید پرداخت: در این مرحله باید `refid` را به همراه مبلغ تراکنش به متد تایید پرداخت ارسال کرده و فرایند پرداخت را نهایی نمایید.
برای انجام یک پرداخت کامل نیاز است حتما هر ۴ مرحله انجام شود. در صورتی که مرحله چهارم یعنی تایید پرداخت تا ۱۵ دقیقه پس از پرداخت مشتری انجام نشود، پول به حساب آنها برگشت داده میشود.
ذخیره شناسه لاگ پیپینگ برای پشتیبانی بهتر
در هر درخواست REST که به پیپینگ ارسال میکنید در پاسخ هر کدام هدری با نام X-PayPingRequest-ID وجود دارد که در صورت ذخیره کردن این شناسه در دیتابیس خود میتوانید در صورت وجود مشکل با دادن این شناسه به پشتیبانی فنی بهتر کمک کنید. نمونه آن در عکس زیر در POSTMAN نشان داده شده است.
1. ساخت پرداخت
برای ساخت پرداخت میبایست از متد `POST /v2/pay` استفاده کنید.
به کمک این متد میتوانید برای هر پرداخت یک کد پرداخت ایجاد کنید. فراخوانی این متد برای شما کدی یکتا تولید میکند.
به زبان ساده تر، هر پرداختی که توسط شما ساخته میشود یک “کد پرداخت” به آن اختصاص پیدا میکند که شما با همان کد، کاربر را به درگاه هدایت مینمایید.
شما میبایست برای همه پرداختها کد را سمت خود ذخیره بفرمایید. ما با این کد، پرداخت شما را شناسایی میکنیم.
ساختار ارسال توکن: Bearer TOKEN
curl -X POST
https://api.payping.ir/v2/pay
'H 'Accept: application/json-
'H 'Authorization: bearer YOUR_TOKEN-
'H 'Content-Type: application/json-
'} d-
,"نام پرداخت کننده - اختیاری" : "payerName"
مبلغ// ,"amount": 1000
,"شماره تلفن یا ایمیل پرداخت کننده - اجباری" : "payerIdentity"
,"آدرس url شما که پس از پرداخت کاربر به همراه refid به آن فرستاده میشود" : returnURL"
,"توضیح پرداخت - اختیاری" : "description"
,"یک رشته یکتا که پس از پرداخت به همراه refid به صورت querystring برای شما ارسال میشود" : "clientRefId"
{'
در پاسخ این متد `code` را دریافت میکنید.
}
"code": "xxxx"
{
این کد ، “کد پرداخت” شما در پیپینگ میباشد.
ClientRefId همان مقدار یکتا و دلخواه شما است که در هنگام “ساخته شدن پرداخت جدید” از شما دریافت شده است. این پارامتر همان مشخصهی شماست که پس از پرداخت، میتوانید با استفاده از آن پرداخت خود را در دیتابیس خودتان پیدا کنید.
نکته بسیار مهم: جهت جلوگیری از پرداخت ناموفق، حتما میبایست سایت شما بر روی بستر SSL باشد. در غیراز اینصورت پس از کلیک بر روی گزینه “تکمیل فرآیند”، خطای امنیتی بر روی مرورگر پرداختکننده ظاهر میشود و تراکنش ناموفق خواهد شد. بنابراین باید حتما آدرس بازگشت سایت شما با پروتکل https همراه باشد.
2. هدایت کاربر به درگاه
برای ورود به درگاه بانک، کدی که در مرحله قبل دریافت کردهاید را بصورت زیر در URL اضافه کنید و کاربر را به آدرس زیر `Redirect` کنید.
https://api.payping.ir/v2/pay/gotoipg/{code}
3. برگشت از درگاه بانکی تکمیل فرایند پرداخت
پس از پرداخت، اطلاعات پرداخت به آدرس `returnUrl` که در مرحله اول ساخت پرداخت مشخص شده است در بدنه درخواست بصورت زیر فرستاده میشود:
curl --location --request POST 'returnUrl'
'header 'Content-Type: application/x-www-form-urlencoded--
'=data-urlencode 'code--
'=data-urlencode 'refid--
'=data-urlencode 'clientrefid--
'=data-urlencode 'cardnumber--
'=data-urlencode 'cardhashpan--
refid که در این مرحله دریافت میکنید، “شماره پرداخت” تراکنش در پیپینگ هست و مقداری است که برای تایید پرداخت در متد Verify باید از آن استفاده کرد.
شما میبایست سمت سرور خود در قسمت ReturnURL، متدی از نوع post، شامل اطلاعات پرداخت که در مرحله اول ذکر شده است را در body قرار دهید.
پیپینگ نیز در بادی پست، اطلاعات پرداخت را به شما برمیگرداند.
4. تایید پرداخت
شما با استفاده از متد `POST /v2/pay/verify` و ارسال `refid` پرداخت را تایید میکنید.
در نظر داشته باشید در صورتیکه این متد تا 15 دقیقه پس از پرداخت فراخوانی نشود، پرداخت باطل شده و مبلغ به حساب پرداختکننده باز خواهد گشت.
curl -X POST /https://api.payping.ir/v2/pay/verify
'H 'Accept: application/json-
'H 'Authorization: bearer YOUR_TOKEN-
'H 'Content-Type: application/json-
'} d-
,"refId": "string"
"amount": int
{'
در پاسخ این متد `ViewModel` زیر را دریافت میکنید
}
,مبلغ : "amount"
,شماره کارت ماسک شده : "cardNumber"
,مقدار شماره کارت هش شده : "cardHashPan"
{
پاسخ کد 200 به منزله “موفقیت در تایید پرداخت” است.
چنانچه پس از فراخوانی وریفای، از سمت پیپینگ پاسخی دریافت نشد، وریفای را برای همین پرداخت در زمان دیگری فراخوانی نمایید.
هر درگاه ممکن است شماره ماسک شده کارت و یا هش شماره کارت پرداخت کننده را در اختیار شما قرار دهد. بنابراین حتما در صورتیکه چک کردن شماره کارت برای شما اهمیت دارد، هر ۲ پارامتر را چک کنید تا در صورت نبود یک مورد با پارامتر دیگر اطمینان حاصل کنید.
جهت دریافت هش شماره کارت از اینجا میتوانید کمک بگیرید.
* برای دریافت نمونه کد به زبان Laravel ، لطفا اینجا کلیک فرمایید.
* برای دریافت نمونه کد به زبان PHP ، لطفا اینجا کلیک فرمایید.
* برای دریافت نمونه کد به زبان C#.Net ، لطفا اینجا کلیک کنید.
* برای دریافت SDK، زبان موردنظر خود اینجا کلیک کنید.
در صورت داشتن هرگونه سوال و نیاز به راهنمایی ، با پشتیبانی آنلاین سایت پیپینگ در ارتباط باشید.
به روز شده در: 1400/09/22