مقدمه
این راهنما نحوه اتصال برنامه نویسان به درگاه های پرداخت از طریق API تاباپی را توضیح میدهد.
شما می‌توانید نمونه کدها را در ستون سمت چپ صفحه مشاهده کنید و درصورت تمایل می‌توانید از طریق تب های بالای صفحه،
نمونه کدهای زبان های برنامه نویسی مختلف را انتخاب کنید.
احراز هویت
برای استفاده از API های تاباپی نیاز به یک merchant است.
شما می‌توانید به داشبورد خود در تاباپی رفته و در بخش درگاه پرداخت، مرچنت درگاه ایجاد شده خود را مشاهده و آن را تحت عنوان Authorization در header، برای ما ارسال نمایید:

Authorization: Bearer aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee
توضیحات ضروری نوع پارامتر
کلید منحصر بفرد جهت احراز هویت به طول 36 کاراکتر بله string Authorization
ایجاد تراکنش
با استفاده از آدرس زیر می‌توانید یک تراکنش در محیط تست ایجاد کنید.
محیط تست https://api.tabapay.ir/v1/sandbox/create
با استفاده از آدرس زیر می‌توانید یک تراکنش در محیط عملیاتی ایجاد کنید.
محیط عملیاتی https://api.tabapay.ir/v1/create
پارامترهای مورد نیاز
توضیحات ضروری نوع پارامتر
مبلغ مورد نظر بین 10,000 ریال تا 2,000,000,000 ریال باشد بله number amount
آدرس بازگشت به سایت پذیرنده به طول حداکثر 2048 کاراکتر بله string callbackURL
تلفن همراه پرداخت کننده به طول 11 کاراکتر مانند 09123456789 خیر string mobile
پست الکترونیک پرداخت کننده به طول حداکثر 255 کاراکتر خیر string email
نام پرداخت کننده به طول حداکثر 255 کاراکتر خیر string name
ارسال پیامک به پرداخت کننده در صورتی که مقدار 1 ارسال شود خیر number sms
شماره کارت مشتری به طول 16 کارکتر که در صورت ارسال با شماره کارت پرداخت کننده تطابق داده می شود خیر number cardNumber
مقادیر ارسالی دلخواه تراکنش به طول حداکثر 500 کاراکتر به صورت جیسون خیر string additionalData
کد ملی پرداخت کننده به طول حداکثر 10 کاراکتر خیر number nationalCode
توضیح تراکنش به طول حداکثر 300 کاراکتر خیر string description
پاسخ موفق {
"status": "success",
"token": "05d3f1d4-82e1-11ee-8f0e-d82429616d01",
"url": "https://tabapay.ir/pay/05d3f1d4-82e1-11ee-8f0e-d82429616d01"
}
پاسخ ناموفق {
"status": "error",
"responseCode": "-33",
"message": "درگاه پرداخت پیدا نشد"
}
برای مشاهده تمامی خطاها به بخش لیست خطاها مراجعه کنید : لیست کدهای پاسخ
  • PHP
  • Python
  • NodeJS
  • C#
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://api.tabapay.ir/v1/create',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS => array('amount' => '10000','callbackURL' => 'https://test.ir','mobile' => '09900000000','email' => 'info@test.ir'),
CURLOPT_HTTPHEADER => array(
'Authorization: Bearer aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee'
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
import requests
url = "https://api.tabapay.ir/v1/create"
payload = {'amount': '10000',
'callbackURL': 'https://test.ir',
'mobile': '09900000000',
'email': 'info@test.ir'}
files=[
]
headers = {
'Authorization': 'Bearer aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee'
}
response = requests.request("POST", url, headers=headers, data=payload, files=files)
print(response.text)
var request = require('request');
var options = {
'method': 'POST',
'url': 'https://api.tabapay.ir/v1/create',
'headers': {
'Authorization': 'Bearer aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee'
},
formData: {
'amount': '10000',
'callbackURL': 'https://test.ir',
'mobile': '09900000000',
'email': 'info@test.ir'
}
};
request(options, function (error, response) {
if (error) throw new Error(error);
console.log(response.body);
});
var client = new HttpClient();
var request = new HttpRequestMessage(HttpMethod.Post, "https://api.tabapay.ir/v1/create");
request.Headers.Add("Authorization", "Bearer aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee");
var content = new MultipartFormDataContent();
content.Add(new StringContent("10000"), "amount");
content.Add(new StringContent("https://test.ir"), "callbackURL");
content.Add(new StringContent("09900000000"), "mobile");
content.Add(new StringContent("info@test.ir"), "email");
request.Content = content;
var response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
Console.WriteLine(await response.Content.ReadAsStringAsync());
بازگشت به سایت پذیرنده
بعد از اتمام عملیات پرداخت، پرداخت کننده به آدرسی که پذیرنده در callbackURL مشخص کرده بود، با متد GET، منتقل می‌شود.
پاسخ موفق {
"responseCode": 1,
"status": "success",
"token": "05d3f1d4-82e1-11ee-8f0e-d82429616d01",
"amount": 10000
}
پاسخ ناموفق {
"responseCode": -1,
"status": "error",
"token": "05d3f1d4-82e1-11ee-8f0e-d82429616d01",
"amount": 10000
}
تایید تراکنش
با استفاده از آدرس زیر می‌توانید تراکنش ایجاد شده در محیط تست را تایید کنید.
محیط تست https://api.tabapay.ir/v1/sandbox/verify
با استفاده از آدرس زیر می‌توانید تراکنش ایجاد شده در محیط عملیاتی را تایید کنید.
محیط عملیاتی https://api.tabapay.ir/v1/verify
توضیحات نوع پارامتر
کلید منحصر بفرد تراکنش string token
مبلغ مورد نظر بین 10,000 ریال تا 2,000,000,000 ریال باشد number amount
پاسخ موفق {
"responseCode": 1,
"status": "success",
"message": "تراکنش باموفقیت تایید شد",
"token": "05d3f1d4-82e1-11ee-8f0e-d82429616d01",
"shaparakRefNumber": "111122223333",
"trackingCode": 40,
"amount": 10000,
"finalAmount": 8700,
"cardNumber": "1234-56**-****-7890",
"hashedCardNumber": "23ab2fbc4074a49874ca7a8349ad9a11b8d845c2451f7c289d8f08181c6b8123",
"ip": "127.0.0.1",
"date":"1402/01/01 12:10"
}
پاسخ ناموفق {
"responseCode": -101,
"status": "error",
"message": "تراکنش انجام نشد",
"token": "05d3f1d4-82e1-11ee-8f0e-d82429616d01",
"trackingCode": 40,
"amount": "10000",
"finalAmount": 8700,
"additionalData": null,
"ip": "127.0.0.1",
"date":"1402/01/01 12:10"
}
  • PHP
  • Python
  • NodeJS
  • C#
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://api.tabapay.ir/v1/verify',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS => array('token' => '05d3f1d4-82e1-11ee-8f0e-d82429616d01','amount' => '10000'),
CURLOPT_HTTPHEADER => array(
'Authorization: Bearer aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee'
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
import requests
url = "https://api.tabapay.ir/v1/verify"
payload = {'token': '05d3f1d4-82e1-11ee-8f0e-d82429616d01',
'amount': '10000'}
files=[
]
headers = {
'Authorization': 'Bearer aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee'
}
response = requests.request("POST", url, headers=headers, data=payload, files=files)
print(response.text)
var request = require('request');
var options = {
'method': 'POST',
'url': 'https://api.tabapay.ir/v1/create',
'headers': {
'Authorization': 'Bearer aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee'
},
formData: {
'amount': '10000',
'callbackURL': 'https://test.ir',
'mobile': '09900000000',
'email': 'info@test.ir'
}
};
request(options, function (error, response) {
if (error) throw new Error(error);
console.log(response.body);
});
var client = new HttpClient();
var request = new HttpRequestMessage(HttpMethod.Post, "https://api.tabapay.ir/v1/verify");
request.Headers.Add("Authorization", "Bearer aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee");
var content = new MultipartFormDataContent();
content.Add(new StringContent("05d3f1d4-82e1-11ee-8f0e-d82429616d01"), "token");
content.Add(new StringContent("10000"), "amount");
request.Content = content;
var response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
Console.WriteLine(await response.Content.ReadAsStringAsync());
لیست کدهای پاسخ
توضیحات کد پاسخ
موفق 1
تایید شده 2
خطای سیستمی 1-
ارسال پارامتر نامعتبر 9-
کد مرچنت اجباری است 10-
کد مرچنت نامعتبر است 11-
مبلغ اجباری است 12-
حداقل مبلغ : 10000 ریال 13-
حداکثر مبلغ : 2000000000 ریال 14-
لینک بازگشت اجباری است 15-
لینک بازگشت نامعتبر است 16-
شماره موبایل نامعتبر است 17-
ایمیل نامعتبر است 18-
پارامتر ورودی برای کد ملی نامعتبر است 19-
پارامتر ورودی برای شماره کارت بانکی نامعتبر است 20-
توضیحات کد پاسخ
حداکثر طول مجاز توضیحات 300 کاراکتر است 21-
فرمت پارامتر دیتا اختیاری باید Json باشد 22-
حداکثر طول مجاز برای دیتا اختیاری 500 کاراکتر است 23-
پارامتر ورودی ارسال پیامک نامعتبر است 24-
نام نامعتبر است 25-
در صورتی که ارسال پیامک فعال باشد، پارامتر شماره موبایل نمی تواند خالی باشد 26-
دامنه فعلی با دامنه تایید شده تطابق ندارد 27-
پذیرنده درگاه غیر فعال شده است 28-
درگاه پرداخت غیر فعال شده است 29-
درگاه پرداخت پیدا نشد 30-
تراکنش نامعتبر 31-
شماره کارت پرداختی با شماره کارت درخواستی تطابق ندارد 100-
تراکنش ناموفق 101-
تراکنش منقضی شده است 102-
Postman
برای راحتی کار و بررسی سریعتر API تاباپی می‌توانید فایل زیر را دریافت کنید و آن را در برنامه Insomnia استفاده نمایید.
دانلود : Postman - API V1
Insomnia
برای راحتی کار و بررسی سریعتر API تاباپی می‌توانید فایل زیر را دریافت کنید و آن را در برنامه Insomnia استفاده نمایید.
دانلود : Insomnia - API - V1