درگاه اینترنتی
https://paystar.ir/help#
آموزش ویدئویی اتصال به درگاه اینترنتی :#
مقدمهاین مستند جهت ارائه به پذیرندگان پی استار جهت اتصال به درگاه پرداخت میباشد. در حالت کلی پذیرنده ابتدا میبایست یک درخواست ایجاد تراکنش ارسال و برای آغاز تراکنش یک توکن یکبار مصرف دریافت و آن را برای انجام تراکنش به سایت پست نماید. بعد از بازگشت مشتری از درگاه، اطلاعات وضعيت تراکنش به سمت پذیرنده برگشت داده میشود و پذیرنده پس از دریافت اطلاعات میبایست نسبت به verify کردن تراکنش اقدام نماید.
نکته 1 : سرویسها به صورت REST با متد POST و فرمت json قابل استفاده میباشد.
نکته 2: :آدرس پایه برای اتصال به تمامی وبسرویسها https://core.paystar.ir/api/pardakht میباشد. این آدرس را به ابتدای آدرس های نسبی معرفی شده در مستند بيافزایيد. به عنوان مثال آدرس وبسریس create به شکل زیر تبدیل میشود.
https://core.paystar.ir/api/pardakht/create
#
سرویس Createاین سرویس جهت ایجاد تراکنش به کار میرود و پذیرنده با دادن اطلاعات مورد نياز ایجاد تراکنش یک توکن یکبار مصرف دریافت میکند
key | value |
---|---|
Content-Type | application/json |
Authorization | Bearer <YOUR_GATEWAY_ID> |
توجه: به جای <YOUR_GATEWAY_ID> مقدار شناسه درگاه خود که در پنل پی استار وجود دارد را قرار دهيد.
پارامترهای ورودی
نام فیلد | نوع داده | شرح | اجباری |
---|---|---|---|
amount | double | مبلغ تراکنش | بله |
order_id | string | شناسه سفارس | بله |
callback | string | آدرس برگشت | بله |
sign | string | امضاء | بله |
name | string | نام پرداخت کننده | خیر |
phone | string | تلفن پرداخت کننده | خیر |
string | ایمیل پرداخت کننده | خیر | |
description | string | توضیحات پرداخت | خیر |
allotment | array | تسهیم در هر تراکنش | خیر |
callback_method | integer | متد انتخابی برای بازگشت کاربر به سایت پذیرنده | خیر |
wallet_hashid | string | شناسه کیف پول | خیر |
national_code | string | کد ملی پرداخت کننده | خیر |
card_number | string | شماره کارت پرداخت کننده | خیر |
توجه:
• مبلغ تراکنش میبایست به ریال باشد و حداقل 5,000 ریال و حداکثر 500,000,000 ریال است. همچنين با توجه به تنظيمات کارمزد پایانه، سهم کارمزد پرداخت کننده به مبلغ افزوده خواهد شد.
• یکتایی شناسه سفارش در سامانه بررسی نمیشود. بهتر است به منظور جلوگيری از بروز خطا از شناسه یکتا استفاده شود. طول شناسه سفارش حداقل 1 و حداکثر 50 کاراکتر و شامل حروف و اعداد میباشد.
• آدرس برگشت باید با فرمت https://yoursite.ir/your/callback/url باشد. دامنه برگشت، باید دامنه اصلی سامانه که در هنگام ایجاد درگاه ثبت کرده اید باشد.
• شناسه کيف پول باید متعلق به کاربر دارنده درگاه باشد. بدیهی است که وضعيت کيف باید فعال باشد.
• چنانچه در نظر دارید پرداخت مورد نظر فقط از طریق یک شماره کارت مشخص انجام شود، در فیلد card_number، شماره کارت مربوطه را ارسال نمایید.
• قابليت محدودیت شماره کارت پرداخت کننده در حال حاضر تنها بر روی درگاه های پی اس پی سامان کيش اعمال ميشود. بنابراین جهت استفاده از این قابليت ميبایست با بخش فروش پی استار هماهنگی های لازم انجام گيرد.
• چنانچه فیلد کد ملی (national_code) ارسال گردد، پرداخت تنها از طریق شماره کارتهایی که متعلق به کد ملی پرداخت کننده باشند امکان پذیر خواهد بود.
• برای ساخت امضا از متد HMAC و الگوریتم رمزنگاری SHA512 استفاده کنيد. کليد مورد نياز برای رمزنگاری، در هنگام ساخت درگاه در اختيار شما قرار میگيرد. آماده سازی داده ها برای امضا به صورت زیر میباشد:
amount#order_id#callback
پارامتر های خروجی (درصورت مجاز بودن درگاه برای تراکنش)
عنوان | نوع داده | شرح |
---|---|---|
status | int | جدول وضعيت |
message | string | پيام سيستم |
data | PardakhtCreateData | جدول نوع داده PardakhtCreateData |
نمونه کد (php) :
نمونه کد (C# .net) :
نمونه کد (Python) :
پارامتر های خروجی (درصورت غیر مجاز بودن درگاه برای تراکنش)
عنوان | نوع داده | شرح |
---|---|---|
status | string | مقدار ثابت unauthenticated |
action | string | مقدار ثابت PardakhtCreate |
tag | string | مقدار ثابت unauthenticated |
message | string | پیام سیستم |
data | array | آرایه خالی |
api_version | string | نسخه API |
جدول نوع داده PardakhtCreateData
عنوان | نوع داده | شرح |
---|---|---|
token | string | توکن یکبار مصرف تراکنش |
ref_num | string | شناسه یکتای رهگيری تراکنش |
order_id | string | شناسه سفارش |
payment_amount | double | مبلغ نهایی پرداختی کاربر با اعمال کارمزد |
توجه:
• مقدار ref_num را در دیتابيس ذخيره کنيد. از این شناسه در وبسرویس تایيد تراکنش استفاده خواهد شد.
• در صورت دریافت کد وضعیت -1 ،میبایست خطاهای برگشتی در فیلد data را مورد بررسی قرار داده و با اصلاح پارامترهای ورودی مجددا سرویس را فراخوانی نمایید.
#
پارامترهای تبادلی میان سایت فروشنده و سامانه پی استاردرصورتی که پاسخ دریافتی از وبسرویس مرحله قبل (ایجاد تراکنش) موفق باشد و توکن یکبار مصرف را دریافت کرده باشيد، میتوانيد مشتری را با توکن دریافتی به سمت پی استار به آدرس زیر هدایت کنيد
https://core.paystar.ir/api/pardakht/payment
پارامترهای ورودی
نام فیلد | نوع داده | شرح | اجباری |
---|---|---|---|
token | string | توکن دریافتی از وبسرویس create | بله |
توجه:
• برای هدایت کاربر به این صفحه میتوانید از متد GET یا POST استفاده کنید.
برگشت از درگاه به سایت پذیرنده
پس از انجام تراکنش، کاربر به صفحه CallBack پذیرنده که در زمان ایجاد تراکنش مشخص شده، با ارسال فيلدهای زیر به صورت form-data هدایت خواهد شد. اگر در هنگام فراخوانی وبسرویس create ،پارامتر callback_method با مقدار عددی 1 ارسال شود، بازگشت به سایت پذیرنده با متد GET انجام میشود. در غیر اینصورت بازگشت به سایت پذیرنده با متد POST خواهد بود. بنابراین میبایست متد CallBack خود را با در نظر گرفتن این شرایط پیاده سازی و در وبسایت یا نرم افزار خود قرار دهید.
پارامترهای خروجی
عنوان | نوع داده | شرح |
---|---|---|
status | int | جدول وضعیت |
order_id | string | شناسه سفارش (ارسال شده توسط پذیرنده) |
ref_num | string | شناسه یکتای رهگیری تراکنش |
transaction_id | string | شناسه تراکنش (موجود در پنل پی استار) |
card_number | string | شماره کارت پرداخت کننده |
hashed_card_number | string | شماره کارت پرداخت کننده به صورت هش شده |
tracking_code | string | کد رهگیری بانکی |
توجه:
• درصورتی که وضعيت تراکنش ناموفق باشد ( پرداخت انجام نشده باشد ) فيلدهای card_number , hashed_card_number و tracking_code برگشت داده نمیشود.
#
سرویس verifyhttps://core.paystar.ir/api/pardakht/verify
پذیرنده بعد از گرفتن دادههای برگشتی از درگاه، درصورت موفق بودن تراکنش، از این سرویس جهت تایيدیه تراکنش ارسالی استفاده میکند. نکته مهم این است که پذیرنده نباید تا زمان دریافت وضعيت موفق از این سرویس، تراکنش را موفق در نظر بگيرد. درصورتی که تا 10 دقيقه بعد از تراکنش، این وبسرویس فراخوانی نشود، وضعيت تراکنش به صورت خودکار به ناموفق تغيير ميکند و مبلغ کسر شده از حساب مشتری طی 72 ساعت به حساب مشتری برگشت داده میشود. توجه داشته باشيد در صورتی که یکبار از این وبسریس پاسخ موفق دریافت کنيد، دیگر امکان فراخوانی وبسرویس را نخواهيد داشت و در صورت فراخوانی با پيام خطا مواجه خواهيد شد.
توجه:
به منظور جلوگیری از رخداد خطای timeout و ایجاد مغایرت احتمالی، در هنگام فراخوانی سرویس وریفای، حتما زمان دریافت پاسخ را در هدر درخواست، با یک زمان مناسب (حداقل 10ثانیه) تنظیم نمایید
Header درخواست
key | value |
---|---|
Content-Type | application/json |
Authorization | Bearer <YOUR_GATEWAY_ID> |
توجه:
• به جای <YOUR_GATEWAY_ID> مقدار شناسه درگاه خود که در پنل پی استار وجود دارد را قرار دهيد.
پارامترهای ورودی
نام فیلد | نوع داده | شرح | اجباری |
---|---|---|---|
ref_num | string | شناسه یکتای رهگیری تراکنش | بله |
amount | double | مبلغ تراکنش | بله |
sign | string | امضاء | بله |
توجه:
• برای ساخت امضا از متد HMAC و الگوریتم رمزنگاری SHA512 استفاده کنيد. کليد مورد نياز برای رمزنگاری، در هنگام ساخت درگاه در اختيار شما قرار میگيرد. آماده سازی دادهها برای امضا به صورت زیر میباشد:
amount#ref_num#card_number#tracking_code
پارامترهای خروجی (درصورت مجاز بودن درگاه)
عنوان | نوع داده | شرح |
---|---|---|
status | int | جدول وضعیت |
message | string | پیام سیستم |
data | PardakhtVerifyData | جدول نوع داده PardakhtVerifyData |
نمونه کد (php) :
نمونه کد (C# .net) :
نمونه کد (Python) :
پارامترهای خروجی (درصورت غیر مجاز بودن درگاه)
عنوان | نوع داده | شرح |
---|---|---|
status | string | مقدار ثابت unauthenticated |
action | string | مقدار ثابت PardakhtCreate |
tag | string | مقدار ثابت unauthenticated |
message | string | پیام سیستم |
data | array | _ |
api_version | string | نسخه API |
جدول نوع داده PardakhtVerifyData
عنوان | نوع داده | شرح |
---|---|---|
price | double | مبلغ تراکنش |
ref_num | string | شناسه یکتای رهگيری تراکنش |
card_number | string | شماره کارت پرداخت کننده |
تسهیم در تراکنش
علاوه بر تسهیم ایستا که برای همه ی تراکنشها به صورت یکسان اعمال میگردد و از طریق پنل کاربری قابل تنظیم است، میتوان برای هر تراکنش تسهیم متفاوت ایجاد کرد. برای این منظور باید در هنگام فراخوانی سرویس create فیلد allotment را که به فرمت زیر است، در بدنه درخواست ارسال کنید.
جدول نوع داده allotment
عنوان | نوع داده | شرح |
---|---|---|
id | string | شناسه شریک تجاری |
sheba_id | string | شناسه شماره شبا شریک تجاری |
share | integer | درصد تسهیم )اجباری در صورت نبود amount |
amount | integer | مبلغ تسهیم )اجباری در صورت نبود share) |
به عنوان مثال:
برای تعیین درصد از share و برای تعیین مبلغ از amount استفاده کنید. ارسال همزمان share و amount مجاز نیست. در هر تراکنش، حداکثر هشت رکورد تسهیم قابل ارسال است. بدیهی است که شریک تجاری باید پیشتر از طریق پنل کاربری، ایجاد شده و به درگاه متصل شده باشد. در صورت تسهیم روی تراکنش، تسهیم ایستا روی تراکنش اعمال نمیگردد.
#
سرویس inquiryhttps://core.paystar.ir/api/pardakht/inquiry
توجه:
به منظور جلوگيری از رخداد خطای timeout و ایجادمغایرت احتمالی،در هنگام فراخوانی سرویس inquiry، حتما زمان دریافت پاسخ را در هدر درخواست، بایک زمان مناسب (حداقل 10 ثانيه) تنظيم نمایيد.
Header درخواست
key | value |
---|---|
Content-Type | application/json |
Authorization | Bearer <YOUR_GATEWAY_ID> |
توجه:
• به جای <YOUR_GATEWAY_ID> مقدار شناسه درگاه خود که در پنل پی استار وجود دارد را قرار دهيد.
پارامترهای ورودی
شرح | نوع داده | نوع فیلد | اجباری |
---|---|---|---|
ref_num | string | شناسه یکتای تراکنش | بله |
پارامترهای خرجی
عنوان | نوع داده | شرح |
---|---|---|
status | int | جدول وضعيت |
message | string | پيام سيستم |
data | PardakhtInquiryData | جدول نوع داده PardakhtInquiryData |
نمونه کد (php) :
نمونه کد (C# .net) :
نمونه کد (Python) :
پارامترهای خروجی (درصورت غیرمجاز بودن درگاه)
عنوان | نوع داده | شرح |
---|---|---|
status | string | مقدار ثابت unauthenticated |
action | string | مقدار ثابت PardakhtInquiry |
tag | string | مقدار ثابت unauthenticated |
message | string | پيام سيستم |
data | string | - |
api_version | string | نسخه API |
جدول نوع داده PardakhtInquiryData
عنوان | نوع داده | شرح |
---|---|---|
ref_num | string | شناسه یکتای رهگيری تراکنش |
status | string | وضعيت تراکنش (با مقادیر موجود در جدول وضعيت تراکنش) |
message | string | پيغام متناسب با وضعيت تراکنش |
payment_date | string | تاریخ پرداخت |
payment_amount | int | مبلغ پرداختی (ریال) |
order_id | string | شناسه سفارش |
ref_id | string | شناسه ارجاع |
tracking_code | string | کد ارجاع بانکی |
card_number | string | شماره کارت پرداخت کننده |
hashed_card_number | string | هش شماره کارت پرداخت کننده |
جدول وضعیت تراکنش
وضعیت | شرح |
---|---|
INIT | تراکنش در انتظار پرداخت است |
SUCCEED | پرداخت با موفقيت انجام شد |
FAILED | عمليات پرداخت با خطا مواجه شد |
CANCELED | عمليات پرداخت توسط کاربر لغو شد |
REVERSED | تراکنش برگشت خورده است |
UNVERIFIED | تراکنش توسط پذیرنده تایيدنشد |
VERIFY_PENDING | تراکنش در انتظار تایيدپذیرنده است |
توجه:
• چنانچه فيلد وضعيت تراکنش (status در جدول PardakhtInquiryData) مقداری غير از SUCCEED داشته باشد، مقادیر فيلدهای payment_date،tracking_code، card_number خالی برخواهند گشت.
#
جدول کد های وضعیتعنوان | description | توضیحات |
---|---|---|
1 | Ok | موفق |
1- | invalidRequest | درخواست نامعتبر (خطا در پارامترهای ورودی) |
2- | inactiveGateway | درگاه فعال نیست |
3- | retryToken | توکن تکراری است |
4- | amountLimitExceed | مبلغ بیشتر از سقف مجاز درگاه است |
5- | invalidRefNum | شناسه ref_num معتبر نیست |
6- | retryVerification | تراکنش قبلا وریفای شده است |
7- | badData | پارامترهای ارسال شده نامعتبر است |
8- | trNotVerifiable | تراکنش را نمیتوان وریفای کرد |
9- | trNotVerified | تراکنش وریفای نشد |
98- | paymentFailed | تراکنش ناموفق |
99- | error | خطای سامانه |
#
سرویس ریزتراکنش های درگاهhttps://core.paystar.ir/api/pardakht/get-transactions
Header درخواست
key | value |
---|---|
Content-Type | application/json |
Authorization | Bearer <YOUR_GATEWAY_ID> |
پارامترهای ورودی
شرح | نوع داده | نوع فیلد | اجباری |
---|---|---|---|
from_date | jalalidate | تاریخ شمسی (مثال: 01-01-1401) | بله |
to_date | jalalidate | تاریخ شمسی (مثال: 02-01-1401) | بله |
sign | string | امضاء | بله |
status | string | وضعيت تراکنش (با مقادیر موجود در جدول وضعيت تراکنش) | خیر |
offset | int | تعداد ردیفهایی است که باید از ابتدای نتایج جستجو یا نمایش حذف شود | درصورت وارد شدن size |
size | int | تعداد تراکنش (پیشفرض 100) | درصورت وارد شدن offset |
توجه:
• برای ساخت امضا از متد HMAC و الگوریتم رمزنگاری SHA512 استفاده کنيد. کليد مورد نياز برای رمزنگاری، در هنگام ساخت درگاه در اختيار شما قرار میگيرد. آماده سازی دادهها برای امضا به صورت زیر میباشد:
from_date#your_gateway_id#to_date
پارامترهای خرجی
عنوان | نوع داده | شرح |
---|---|---|
status | int | جدول وضعيت |
message | string | پيام سيستم |
data | data | جدول نوع داده data |
پارامترهای خروجی (درصورت غیرمجاز بودن درگاه)
عنوان | نوع داده | شرح |
---|---|---|
status | string | مقدار ثابت unauthenticated |
action | string | مقدار ثابت PardakhtInquiry |
tag | string | مقدار ثابت unauthenticated |
message | string | پيام سيستم |
data | string | - |
api_version | string | نسخه API |
جدول نوع داده data
عنوان | نوع داده | شرح |
---|---|---|
count | int | تعداد تراکنش |
transactions | transactionData | لیست تراکنش ها که درجدول transactionData قابل مشاهده می باشد |
جدول نوع داده transactionData
عنوان | نوع داده | شرح |
---|---|---|
transaction_id | string | شناسه یکتای تراکنش |
ref_num | string | شناسه پرداخت |
payment_amount | int | مبلغ تراکنش |
wage | int | کارمزد |
bank_wage | int | کامزد بانک |
ref_id | string | شناسه مرجع بانکی |
status | string | وضعیت تراکنش |
psp | string | نام پی اس پی درگاه |
card_number | string | شماره کارت پرداخت کننده |
hashed_card_number | string | هش شماره کارت پرداخت کننده |
order_id | string | شناسه سفارش |
payer_ip | string | ip پرداخت کننده |
payer_name | string | نام پرداخت کننده |
payer_phone | string | موبایل پرداخت کننده |
payer_email | string | ایمیل پرداخت کننده |
description | string | توضیحات |
payment_date | jalalidate | تاریخ پرداخت |
created_at | jalalidate | تاریخ ایجاد |