Skip to main content

درگاه تلفنی

1. سرویس درخواست رمز پویا#

اين وبسرويس برای ارسال پيامک رمز پويا به پرداخت کننده ميبايست مورد استفاده قرار گيرد.

آدرس وبسرویس

  • https://core.paystar.ir/api/ivr/otp-v2

برای انجام تراکنش IVR ابتدا باید این سرویس با متد POST فراخوانی شود تا رمز پویای مورد نیاز، به پرداخت کننده پیامک شود.

-  پارامترهای مورد نیاز در قسمت Body درخواست ودر قالب json میبایست ارسال شوند:

نام فیلدنوع دادهشرحاجباری
amountdoubleمبلغ تراکنشبله
panstringشماره کارت پرداخت کنندهبله
order_idstringشناسه سفارسبله
sequencestringشناسه درگاه تلفنیبله

توجه: در فیلد sequence میبایست شناسه درگاه تلفنی که در پنل پی استار دریافت کرده اید را قرار دهید .

• يکتايی شناسه سفارش در سامانه بررسی نمیشود. طول شناسه سفارش حداقل 1 و حداکثر 50 کاراکتر میباشد.

• فيلد مبلغ ميبايست مضربی از 1000 باشد.


-  نمونه پارامترهای ورودی سرویس:

{
"amount": 50000,
"pan": "5022000012340000",
"order_id": "123456",
"sequence": "acd54b56ddd651a5cc3v"
}

-  پارامترهای خروجی وبسرویس:

نام فیلدنوع دادهشرح
statusintوضعیت پاسخ
dataarray-
errorsarrayخطاهای رخ داده

توجه : در فيلد status مقدار 1 ،به معنی پاسخ موفق و ارسال پيامک رمز پويا به پرداخت کننده است. هر مقدار ديگری غير از آن به معنی رخداد خطا در درخواست ارسالی می باشد. مقادير invoice_id و price که مبلغ با احتساب کارمزد می باشد در فيلد data برگردانده می شود.

نمونه کد (php) :
<?php
$url = 'https://core.paystar.ir/api/ivr/otp-v2';
$body_params = [
'amount' => 50000,
'pan' => '5022000012340000',
'order_id' => '123456',
'sequence' => 'acd54b56ddd651a5cc3v'
];
$body_params_json= json_encode($body_params);
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => $url,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => $body_params_json,
CURLOPT_HTTPHEADER => [
'Accept: application/json',
'Content-Type: application/json',
],
]
);
$response = curl_exec($curl);
curl_close($curl);
print_r(json_decode($response ,true ,JSON_PRETTY_PRINT));
نمونه کد (C# .net) :
using RestSharp;
using Newtonsoft.Json;
var options = new RestClientOptions("https://core.paystar.ir");
var client = new RestClient(options);
var requestBody = new
{
amount = 50000,
pan = "5022000012340000",
order_id = "123456",
sequence = "acd54b56ddd651a5cc3v"
};
string jsonBody = JsonConvert.SerializeObject(requestBody);
var request = new RestRequest("/api/ivr/otp-v2", Method.Post);
request.AddJsonBody(jsonBody);
request.AddHeader("Accept", "application/json");
request.AddHeader("Content-Type", "application/json");
RestResponse response = client.Execute(request);
var res = response.Content;
نمونه کد (Python) :
import json
import requests
url = "https://core.paystar.ir/api/ivr/otp-v2"
header = {
"Accept": "application/json",
"Content-Type": "application/json"
}
data = {
"amount": 50000,
"pan": "5022000012340000",
"order_id": "123456",
"sequence": "acd54b56ddd651a5cc3v"
}
response = requests.post(url, headers=header, json=data)
output = json.dumps(response.json(), indent=4, ensure_ascii=False)
print(output)

-  نمونه پاسخ موفق:

{
"status": 1,
"data": [
"order_id": "123456",
"invoice_id": "123456#456789",
"price": "12000"
],
"errors": []
}

-  نمونه پاسخ ناموفق:

{
"status": 0,
"data": [
"refID": "111111111111",
"transactionStatus": "20"
],
"errors": [
"شماره کارت اشتباه وارد شده"
]
}

توجه: توضيحات مربوط به مقادير فيلد transactionStatus در پاسخ ناموفق، در جدول کدهای وضعيت انتهای مستند قابل مشاهده است.



2. سرویس پرداخت#

آدرس وبسرویس

اين وبسرويس برای انجام تراکنش ميبايست فراخوانی شود.

  • https://core.paystar.ir/api/ivr/pay

نوع فراخوانی: POST

پرداخت از طریق تلفن گویا

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

-  پارامترهای مورد نیاز که در قسمت Body درخواست و در قالب json می بایست ارسال شوند:

نام فیلدنوع دادهشرحاجباری
ivrintمقدار ثابت 1 ارسال شودبله
panstringشماره کارت پرداخت کنندهبله
pinstringرمز پویابله
amountintمبلغ تراکنشبله
order_idstringشناسه سفارشبله
merchant_cidstringشماره تلفن / موبایل پرداخت کنندهخیر
sequencestringشناسه درگاه تلفنیبله
wallet_hashidstringشناسه کیف پولخیر

توجه:

• فيلد مبلغ (amount )در صورتی که ابتدا سرویس otp-v2 فراخوانی شده باشد، الزامی نبوده و مبلغ تراکنش همان مبلغی که در سرویس otp-v2 فراخوانی شده است خواهد بود. در غير اینصورت ارسال آن در این وبسرویس الزامی است.

• توجه: در فيلد sequence ميبایست شناسه درگاه IVR که در پنل پی استار پذیرنده دریافت کرده است را قرار دهد.

• فيلد مبلغ ميبایست مضربی از 1000 باشد.

• شناسه کيف پول باید متعلق به کاربر دارنده درگاه باشد. بدیهی است که وضعيت کيف باید فعال باشد.

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

-  نمونه پارامترهای ورودی وبسرویس:

{
"ivr": 1,
"pan": "5022000012340000",
"pin": "12345",
"amount": 500000,
"order_id": "123456"
"merchant_cid": "+989123456789",
"sequence": " acd54b56ddd651a5cc3v"
}

-  پارامترهای خروجی وبسرویس:

نام فیلدنوع دادهشرح
statusintوضعیت پاسخ
dataarray-
errorsarrayخطاهای رخ داده
نمونه کد (php) :
<?php
$url = 'https://core.paystar.ir/api/ivr/otp-v2';
$body_params = [
'ivr' => 1,
'pan' => '5022000012340000',
'pin' => '123456',
'amount' => 500000,
'order_id' => '123456',
'sequence' => 'acd54b56ddd651a5cc3v',
'merchant_cid' => '+989123456789',
];
$body_params_json = json_encode($body_params);
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => $url,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => $body_params_json,
CURLOPT_HTTPHEADER => [
'Accept: application/json',
'Content-Type: application/json',
],
]
);
$response = curl_exec($curl);
curl_close($curl);
print_r(json_decode($response ,true ,JSON_PRETTY_PRINT));
نمونه کد (C# .net) :
using RestSharp;
using Newtonsoft.Json;
var options = new RestClientOptions("https://core.paystar.ir");
var client = new RestClient(options);
var requestBody = new
{
ivr = 1,
pan = "5022000012340000",
pin = "12345",
amount = 500000,
order_id = "123456",
sequence = "acd54b56ddd651a5cc3v",
merchant_cid = "+989123456789"
};
string jsonBody = JsonConvert.SerializeObject(requestBody);
var request = new RestRequest("/api/ivr/pay", Method.Post);
request.AddJsonBody(jsonBody);
request.AddHeader("Accept", "application/json");
request.AddHeader("Content-Type", "application/json");
RestResponse response = client.Execute(request);
var res = response.Content;
نمونه کد (Python) :
import json
import requests
url = "https://core.paystar.ir/api/ivr/pay"
header = {
"Accept": "application/json",
"Content-Type": "application/json"
}
data = {
'ivr': 1,
'pan': '5022000012340000',
'pin': '123456',
'amount': 500000,
'order_id': '123456',
'sequence': 'acd54b56ddd651a5cc3v',
'merchant_cid': '+989123456789'
}
response = requests.post(url, headers=header, json=data)
output = json.dumps(response.json(), indent=4, ensure_ascii=False)
print(output)

توجه: چنانچه تراکنش با موفقیت انجام شود، فیلد status با مقدار 1 و فیلد data شامل موارد زیر خواهد بود.


-  جدول نوع داده data در صورت برگشت پاسخ موفقیت آمیز

نام فیلدنوع دادهشرح
refIDstringشناسه پیگیری تراکنش
trackingCodestringکد رهگیری تراکنش

توجه: در صورتی که انجام تراکنش با خطا مواجه شود فیلد status با مقدار 0 و فیلد data شامل موارد زیر خواهد بود .


-  جدول نوع داده data در صورت برگشت پاسخ موفقیت آمیز

نام فیلدنوع دادهشرح
refIDstringمقدار ثابت 0
transactionStatusstringکد خطای تراکنش
trackingCodestringکد رهگیری تراکنش

شرح کدهای خطای تراکنش در جدول مربوطه در انتهای مستند قابل مشاهده است.

3. سرویس استعلام تراکنش موفق#

آدرس وبسرویس

  • https://core.paystar.ir/api/ivr/inquiry

اين وبسرويس برای استعالم موفق بودن تراکنش می توان فراخوانی شود.

-  پارامترهای ورودی:

نام فیلدنوع دادهشرحاجباری
tracking_codestringکد رهگیری تراکنشبله
sequencestringشناسه درگاه IVRبله

توجه:

• توجه: در فيلد sequence ميبايست شناسه درگاه IVR که در پنل پی استار پذيرنده دريافت کرده است را قرار دهد.

نمونه پارامترهای ورودی وبسرويس

{
"tracking_code": "50220000#12340000",
"sequence": " acd54b56ddd651a5cc3v"
}
عنواننوع دادهشرح
statusstringوضعیت پاسخ
dataarray_
messagestringپیغام دریافتی
نمونه کد (php) :
<?php
$url = 'https://core.paystar.ir/api/ivr/inquiry';
$sign_key = 'your_sign_key';
$sign_data = $amount. '#'. $ref_num . '#' . $card_number . '#'. $tracking_code;
$sign = hash_hmac('SHA512', $sign_data, $sign_key);
$body_params = [
'tracking_code' => '50220000#12340000',
'sequence' => 'acd54b56ddd651a5cc3v'
];
$body_params_json= json_encode($body_params);
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => $url,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => $body_params_json,
CURLOPT_HTTPHEADER => [
'Accept: application/json',
'Content-Type: application/json',
],
]
);
$response = curl_exec($curl);
curl_close($curl);
print_r(json_decode($response ,true ,JSON_PRETTY_PRINT));
نمونه کد (C# .net) :
using RestSharp;
using Newtonsoft.Json;
var options = new RestClientOptions("https://core.paystar.ir");
var client = new RestClient(options);
var requestBody = new
{
tracking_code = "50220000#12340000",
sequence = " acd54b56ddd651a5cc3v",
};
string jsonBody = JsonConvert.SerializeObject(requestBody);
var request = new RestRequest("/api/ivr/inquiry", Method.Post);
request.AddJsonBody(jsonBody);
request.AddHeader("Accept", "application/json");
request.AddHeader("Content-Type", "application/json");
RestResponse response = client.Execute(request);
var res = response.Content;
نمونه کد (Python) :
import json
import requests
url = "https://core.paystar.ir/api/ivr/inquiry"
header = {
"Accept": "application/json",
"Content-Type": "application/json"
}
data = {
"tracking_code": "50220000#12340000",
"sequence": " acd54b56ddd651a5cc3v",
}
response = requests.post(url, headers=header, json=data)
output = json.dumps(response.json(), indent=4, ensure_ascii=False)
print(output)

توجه: چنانچه تراکنش با موفقيت انجام شده باشد، فيلد status با مقدار ok و فيلد data شامل موارد زير خواهد بود.

جدول نوع داده data در صورت برگشت پاسخ موفقيت آميز:

عنواننوع دادهشرح
refIDstringشناسه ارجاع بانکی

توجه: در صورتی که انجام تراکنش با خطا مواجه شده باشد فيلد status با مقدار fail و فيلد message پيغام خطای دريافتی خواهد بود.

4. جدول کد خطا#

کد خطاپیام
3پذیرنده کارت نامعتبر است
5تراکنش نامعتبر است
13مبلغ نامعتبر است
14کارت نامعتبر است
20پاسخ نامعتبر است
21تراکنش نامعتبر است
42حساب کارت نامعتبر است
51موجودی کافی نیست
54تاریخ انقضا کارت گذشته است
55رمز نادرست است
57دارنده کارت مجاز به انجام تراکنش نیست
59خطای امنیتی (رمز نامعتبر)
61سقف تراکنش تکمیل شده است
62کارت محدود شده است
63پایانه نامعتبر است
75تعداد دفعات وارد کردن رمز بیش از حد مجاز است
78کارت غیرفعال است
80خطای سیستمی رخ داده است
90عملیات پایان روز کاری در حال انجام است
91صادر کننده در وضعیت عملیاتی نمی باشد
94تراکنش تکراری است
115شناسه قبض نادرست است
121شناسه پرداخت نادرست است