پرداخت کالابرگ با رمز
رابط مستقیم با سامانهٔ بالادست کالابرگ برای خرید کالابرگ با رمز یکبارمصرف
مقدمه
سرویس پرداخت کالابرگ با رمز، رابط مستقیم با سامانهٔ بالادست کالابرگ برای چرخهٔ خرید مبتنی بر رمز یکبارمصرف است. در این گروه، بهجای اطلاعات کارت، خریدار با رمزی که روی موبایلش دریافت کرده احراز میشود. چهار فیلد uniqueCode، counter، requestDate و channelType را پذیرنده میسازد و دستنخورده عبور میکنند — هیچکدام از سمت تترا تولید نمیشوند. پاکت پاسخ همان پاکت بالادست کالابرگ است، نه پاکت استاندارد گیتوی تترا.
اکشن «ارسال رمز» در این میرور وجود ندارد. رمز باید از طریق کانال مستقل بالادست برای خریدار ارسال شده باشد، پیش از آنکه چرخهٔ خرید شروع شود.
این سرویس هدر Idempotency-Key نمیخواهد و هیچ محافظ تکراری ندارد. تکرارِ درخواست ثبت سفارش میتواند یک خرید جدید ثبت کند — تکرار فقط با اطمینان از نرسیدنِ پاسخ اول انجام شود.
- احراز هویت (
authenticate)
توکن کوتاهمدت کالابرگ را میگیرید و در هدرAuthorizationهمهٔ درخواستهای بعدی قرار میدهید. توکن ۲۴ ساعت اعتبار دارد و با غیرفعالشدن یا تغییر کلید API باطل میشود.textPOST /api/Authentication/authenticate - ثبت سفارش با رمز (
item-order-by-otp)
رمز یکبارمصرف، کد یکتا (uniqueCode) و اقلام سفارش را میفرستید. اعتبار خریدار همان لحظه کسر میشود. پاسخorderTraceمیدهد — بلافاصله ذخیره کنید؛ بدون آن هیچ مرحلهٔ بعدی ممکن نیست.textPOST /inquiry/itemorderbyotp - استعلام وضعیت (
purchase-inquiry-by-otp)
وضعیت سفارش را میپرسید و هیچ تغییری در سیستم ایجاد نمیشود. این مرحله اجباری است — پیش از تأیید نهایی باید اطمینان حاصل شود سفارش در وضعیت درست است. اگر تصمیم به ادامه ندارید، مراحل ۵ یا ۶ را ببینید.textPOST /inquiry/purchaseinquirybyotp - تأیید سفارش (
confirm-order-by-otp)
تراکنش را قطعی میکنید. پس از این مرحله، برگشت از طریق API غیرممکن است.textPOST /payment/confirmorderbyotp - برگشت (
reverse-order-by-otp)
اگر به هر دلیلیconfirm-order-by-otpانجام نشد، این سرویس اجباری است. برخلاف لغو، هیچ آزادسازی خودکاری وجود ندارد — بدون این فراخوانی، اعتبار خریدار به حسابش برنمیگردد.textPOST /payment/reverseorderbyotp - لغو (
order-cancelation-by-otp)
پس ازitem-order-by-otpو پیش ازconfirm-order-by-otp، در صورت انصراف مشتری یا خطای داخلی. اگر صدا نزنید، اعتبار حدود ۲ دقیقه بعد خودبهخود آزاد میشود — اما برای تجربهٔ بهتر خریدار همیشه صدایش بزنید.textPOST /payment/ordercancelationbyotp
ساختار کلی API
- Base URL:
https://back.tetra.land - پیشوند مسیر:
inquiry(ثبت و استعلام) /payment(تأیید، برگشت، لغو) - احراز هویت: ابتدا با Authenticate توکن بگیرید؛ سپس
Authorization: Bearer {sfara_token}در همهٔ درخواستهای بعدی - فرمت درخواست:
application/json - فرمت پاسخ:
application/json - گارد لایسنس: فقط روی ثبت سفارش (اولین اکشن) بررسی میشود — بقیه حتی با لایسنس منقضیشده کار میکنند
۱. احراز هویت (authenticate)
Endpoint
POST {{base_url}}/api/Authentication/authenticate
مثال:
POST https://back.tetra.land/api/Authentication/authenticate
Headers
| کلید | مقدار |
|---|---|
Accept | application/json |
Content-Type | application/json |
Body
| پارامتر | نوع | الزامی | توضیح |
|---|---|---|---|
username | string | بله | کلید API که از پنل خود دریافت کردهاید |
password | string | بله | کلید محرمانهٔ همان کلید API |
نمونه درخواست:
{
"username": "xxxx",
"password": "xxxx"
}
نمونه کد
<?php
$payload = json_encode([
'username' => 'xxxx',
'password' => 'xxxx',
]);
$ch = curl_init('https://back.tetra.land/api/Authentication/authenticate');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $payload);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Accept: application/json',
'Content-Type: application/json',
]);
$response = curl_exec($ch);
curl_close($ch);
$data = json_decode($response, true);
print_r($data);
امتحان کنید
/api/Authentication/authenticateامتحان کنیدنمایش JSON ارسالی
{
"username": "xxxx",
"password": "xxxx"
}پارامترهای پاسخ
| پارامتر | نوع | نمونه مقدار | توضیح |
|---|---|---|---|
jwtToken | string | - | توکن دسترسی، در result.data قرار دارد |
id | string | - | شناسهٔ کلید API |
username | string | - | همان کلید API |
firstname | string | - | نام دارندهٔ کسبوکار |
lastname | string | - | نام خانوادگی دارندهٔ کسبوکار |
isActive | boolean | - | فعال بودن کلید API |
توکن ۲۴ ساعت اعتبار دارد. اگر کلید محرمانه را عوض کنید یا کلید را غیرفعال کنید، تمام توکنهای صادرشده بلافاصله باطل میشوند و باید دوباره احراز هویت کنید.
پاسخها
{
"message": "POST Request successful.",
"statusCode": 200,
"result": {
"status": true,
"responseCode": 0,
"data": {
"id": 1,
"firstname": "Kala",
"lastname": "Kala",
"username": "YOUR_API_KEY",
"jwtToken": "YOUR_SFARA_TOKEN",
"isActive": true
}
},
"isError": false
}
۲. ثبت سفارش با رمز (item-order-by-otp)
Endpoint
POST {{base_url}}/inquiry/itemorderbyotp
مثال:
POST https://back.tetra.land/inquiry/itemorderbyotp
Headers
| کلید | مقدار |
|---|---|
Accept | application/json |
Authorization | Bearer {sfara_token} |
Content-Type | application/json |
Body
| پارامتر | نوع | الزامی | توضیح |
|---|---|---|---|
terminalNumber | string | بله | ترمینالی که خرید روی آن انجام میشود؛ باید لایسنس معتبر داشته باشد |
channelType | string | بله | "4" — پرداخت با رمز یکبارمصرف |
requestDate | integer | بله | تاریخ و ساعت شمسی به شکل YmdHis؛ پذیرنده خودش میسازد |
uniqueCode | string | بله | شناسهٔ یکتای درخواست |
counter | string | بله | شمارندهٔ درخواست |
otp | string | بله | رمز یکبارمصرفی که خریدار دریافت کرده |
mobileNumber | string | بله | موبایل خریدار که رمز روی آن رفته |
amount | integer | بله | مبلغ کل فاکتور به ریال |
orderItems | array | بله | اقلام فاکتور؛ دستکم یک قلم |
هر قلم در orderItems
| پارامتر | نوع | الزامی | توضیح |
|---|---|---|---|
commodityCode | string | بله | کد کالا |
quantity | integer | بله | تعداد |
unitCode | string | بله | کد واحد سنجش |
amount | integer | بله | مبلغ همین قلم به ریال |
گارد لایسنس: تنها شرطی که این میرور خودش بررسی میکند این است که برای همین terminalNumber یک لایسنسِ منقضینشده وجود داشته باشد. مالکیت بیاثر است. اگر بیش از یک لایسنس با این شماره وجود داشته باشد، درخواست رد میشود.
هیچ فیلدی از سمت تترا تولید نمیشود. چهار فیلدِ uniqueCode، counter، requestDate و channelType را خودِ پذیرنده میسازد و دستنخورده به بالادست میفرستد.
نمونه درخواست:
{
"terminalNumber": "TERM-XXXXXXXX",
"channelType": "4",
"requestDate": 14040205115507,
"uniqueCode": "000000000159",
"counter": "000159",
"otp": "xxxxxx",
"mobileNumber": "xxxxxxxxxxx",
"amount": 1000000,
"orderItems": [
{
"commodityCode": "6260371001295",
"quantity": 1,
"unitCode": "5",
"amount": 1000000
}
]
}
نمونه کد
<?php
$token = 'YOUR_SFARA_TOKEN';
$payload = json_encode([
'terminalNumber' => 'TERM-XXXXXXXX',
'channelType' => '4',
'requestDate' => 14040205115507,
'uniqueCode' => '000000000159',
'counter' => '000159',
'otp' => 'xxxxxx',
'mobileNumber' => 'xxxxxxxxxxx',
'amount' => 1000000,
'orderItems' => [
[
'commodityCode' => '6260371001295',
'quantity' => 1,
'unitCode' => '5',
'amount' => 1000000,
],
],
]);
$ch = curl_init('https://back.tetra.land/inquiry/itemorderbyotp');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $payload);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Accept: application/json',
'Content-Type: application/json',
"Authorization: Bearer {$token}",
]);
$response = curl_exec($ch);
curl_close($ch);
$data = json_decode($response, true);
print_r($data);
امتحان کنید
/inquiry/itemorderbyotpامتحان کنیدنمایش JSON ارسالی
{
"terminalNumber": "TERM-XXXXXXXX",
"channelType": "4",
"requestDate": "14040205115507",
"uniqueCode": "000000000159",
"counter": "000159",
"otp": "xxxxxx",
"mobileNumber": "xxxxxxxxxxx",
"amount": "1000000",
"orderItems": "{}"
}پارامترهای پاسخ
| فیلد | نوع | توضیح |
|---|---|---|
orderTrace | string | شناسهٔ سفارش؛ ورودیِ سه مرحلهٔ بعدی است |
creditAmount | integer | مبلغی که از اعتبار کالابرگ برداشته شد |
amount | integer | مبلغ کل فاکتور |
terminalNumber | string | بازتابِ ترمینال درخواست |
counter | string | بازتابِ شمارنده |
uniqueCode | string | بازتابِ شناسهٔ یکتا |
assignedCredits | array | ریز اعتبار تخصیصیافته به هر قلم |
پاسخها
{
"message": "POST Request successful.",
"statusCode": 200,
"result": {
"status": true,
"responseCode": 0,
"data": {
"orderTrace": "5078738696785",
"creditAmount": 1000000,
"amount": 1000000,
"terminalNumber": "TERM-XXXXXXXX",
"counter": "000159",
"uniqueCode": "000000000159",
"assignedCredits": [
{
"commodityCode": "6260371001295",
"commodityName": "برنج ایرانی",
"unitCode": "5",
"unitName": "کیلوگرم",
"assignedCredit": 1000000,
"currentCredit": 500000,
"quantity": 1,
"amount": 1000000,
"isBalanceMarket": false
}
]
}
},
"isError": false
}
۳. استعلام وضعیت سفارش (purchase-inquiry-by-otp)
Endpoint
POST {{base_url}}/inquiry/purchaseinquirybyotp
مثال:
POST https://back.tetra.land/inquiry/purchaseinquirybyotp
Headers
| کلید | مقدار |
|---|---|
Accept | application/json |
Authorization | Bearer {sfara_token} |
Content-Type | application/json |
Body
| پارامتر | نوع | الزامی | توضیح |
|---|---|---|---|
terminalNumber | string | بله | ترمینالی که خرید روی آن انجام شده |
channelType | string | بله | "4" — همان مقدار مرحلهٔ ثبت سفارش |
requestDate | integer | بله | تاریخ و ساعت شمسی YmdHis |
uniqueCode | string | بله | بازتابِ پاسخ مرحلهٔ ثبت سفارش |
counter | string | بله | بازتابِ پاسخ مرحلهٔ ثبت سفارش |
orderTrace | string | بله | بازتابِ پاسخ مرحلهٔ ثبت سفارش |
otp | string | بله | رمز یکبارمصرف |
mobileNumber | string | بله | موبایل خریدار |
amount | integer | بله | مبلغ کل فاکتور به ریال |
creditAmount | integer | خیر | بازتابِ مبلغ اعتباری مرحلهٔ ثبت سفارش |
نمونه درخواست:
{
"terminalNumber": "TERM-XXXXXXXX",
"channelType": "4",
"requestDate": 14040205115507,
"uniqueCode": "000000000159",
"counter": "000159",
"orderTrace": "5078738696785",
"otp": "xxxxxx",
"mobileNumber": "xxxxxxxxxxx",
"amount": 1000000
}
نمونه کد
<?php
$token = 'YOUR_SFARA_TOKEN';
$payload = json_encode([
'terminalNumber' => 'TERM-XXXXXXXX',
'channelType' => '4',
'requestDate' => 14040205115507,
'uniqueCode' => '000000000159',
'counter' => '000159',
'orderTrace' => '5078738696785',
'otp' => 'xxxxxx',
'mobileNumber' => 'xxxxxxxxxxx',
'amount' => 1000000,
]);
$ch = curl_init('https://back.tetra.land/inquiry/purchaseinquirybyotp');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $payload);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Accept: application/json',
'Content-Type: application/json',
"Authorization: Bearer {$token}",
]);
$response = curl_exec($ch);
curl_close($ch);
$data = json_decode($response, true);
print_r($data);
امتحان کنید
/inquiry/purchaseinquirybyotpامتحان کنیدنمایش JSON ارسالی
{
"terminalNumber": "TERM-XXXXXXXX",
"channelType": "4",
"requestDate": "14040205115507",
"uniqueCode": "000000000159",
"counter": "000159",
"orderTrace": "5078738696785",
"otp": "xxxxxx",
"mobileNumber": "xxxxxxxxxxx",
"amount": "1000000"
}پارامترهای پاسخ
| فیلد | نوع | توضیح |
|---|---|---|
data | boolean | در پاسخ موفق true است |
پاسخها
{
"message": "POST Request successful.",
"statusCode": 200,
"result": {
"status": true,
"responseCode": 0,
"data": true
},
"isError": false
}
۴. تأیید سفارش رمزی (confirm-order-by-otp)
Endpoint
POST {{base_url}}/payment/confirmorderbyotp
مثال:
POST https://back.tetra.land/payment/confirmorderbyotp
Headers
| کلید | مقدار |
|---|---|
Accept | application/json |
Authorization | Bearer {sfara_token} |
Content-Type | application/json |
Body
| پارامتر | نوع | الزامی | توضیح |
|---|---|---|---|
terminalNumber | string | بله | ترمینالی که خرید روی آن انجام شده |
channelType | string | بله | "4" — همان مقدار مرحلهٔ ثبت سفارش |
requestDate | integer | بله | تاریخ و ساعت شمسی YmdHis |
uniqueCode | string | بله | بازتابِ پاسخ مرحلهٔ ثبت سفارش |
counter | string | بله | بازتابِ پاسخ مرحلهٔ ثبت سفارش |
orderTrace | string | بله | بازتابِ پاسخ مرحلهٔ ثبت سفارش |
otp | string | بله | رمز یکبارمصرف |
mobileNumber | string | بله | موبایل خریدار |
amount | integer | بله | مبلغ کل فاکتور به ریال |
creditAmount | integer | خیر | بازتابِ مبلغ اعتباری مرحلهٔ ثبت سفارش |
نمونه درخواست:
{
"terminalNumber": "TERM-XXXXXXXX",
"channelType": "4",
"requestDate": 14040205115507,
"uniqueCode": "000000000159",
"counter": "000159",
"orderTrace": "5078738696785",
"otp": "xxxxxx",
"mobileNumber": "xxxxxxxxxxx",
"amount": 1000000
}
نمونه کد
<?php
$token = 'YOUR_SFARA_TOKEN';
$payload = json_encode([
'terminalNumber' => 'TERM-XXXXXXXX',
'channelType' => '4',
'requestDate' => 14040205115507,
'uniqueCode' => '000000000159',
'counter' => '000159',
'orderTrace' => '5078738696785',
'otp' => 'xxxxxx',
'mobileNumber' => 'xxxxxxxxxxx',
'amount' => 1000000,
]);
$ch = curl_init('https://back.tetra.land/payment/confirmorderbyotp');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $payload);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Accept: application/json',
'Content-Type: application/json',
"Authorization: Bearer {$token}",
]);
$response = curl_exec($ch);
curl_close($ch);
$data = json_decode($response, true);
print_r($data);
گارد لایسنس روی این متد اعمال نمیشود. گارد فقط روی اولین اکشن چرخه است. این متد ادامهٔ چرخه است و حتی با لایسنسِ منقضیشده هم کار میکند — پولی که جابهجا شده باید قابل تأیید باشد.
امتحان کنید
/payment/confirmorderbyotpامتحان کنیدنمایش JSON ارسالی
{
"terminalNumber": "TERM-XXXXXXXX",
"channelType": "4",
"requestDate": "14040205115507",
"uniqueCode": "000000000159",
"counter": "000159",
"orderTrace": "5078738696785",
"otp": "xxxxxx",
"mobileNumber": "xxxxxxxxxxx",
"amount": "1000000"
}پارامترهای پاسخ
| فیلد | نوع | توضیح |
|---|---|---|
data | boolean | در پاسخ موفق true است |
پاسخها
{
"message": "POST Request successful.",
"statusCode": 200,
"result": {
"status": true,
"responseCode": 0,
"data": true
},
"isError": false
}
۵. برگشت سفارش رمزی (reverse-order-by-otp)
Endpoint
POST {{base_url}}/payment/reverseorderbyotp
مثال:
POST https://back.tetra.land/payment/reverseorderbyotp
Headers
| کلید | مقدار |
|---|---|
Accept | application/json |
Authorization | Bearer {sfara_token} |
Content-Type | application/json |
Body
| پارامتر | نوع | الزامی | توضیح |
|---|---|---|---|
terminalNumber | string | بله | ترمینالی که خرید روی آن انجام شده |
channelType | string | بله | "4" — همان مقدار مرحلهٔ ثبت سفارش |
requestDate | integer | بله | تاریخ و ساعت شمسی YmdHis |
uniqueCode | string | بله | بازتابِ پاسخ مرحلهٔ ثبت سفارش |
counter | string | بله | بازتابِ پاسخ مرحلهٔ ثبت سفارش |
orderTrace | string | بله | بازتابِ پاسخ مرحلهٔ ثبت سفارش |
otp | string | بله | رمز یکبارمصرف |
mobileNumber | string | بله | موبایل خریدار |
amount | integer | بله | مبلغ کل فاکتور به ریال |
creditAmount | integer | خیر | بازتابِ مبلغ اعتباری مرحلهٔ ثبت سفارش |
نمونه درخواست:
{
"terminalNumber": "TERM-XXXXXXXX",
"channelType": "4",
"requestDate": 14040205115507,
"uniqueCode": "000000000159",
"counter": "000159",
"orderTrace": "5078738696785",
"otp": "xxxxxx",
"mobileNumber": "xxxxxxxxxxx",
"amount": 1000000
}
نمونه کد
<?php
$token = 'YOUR_SFARA_TOKEN';
$payload = json_encode([
'terminalNumber' => 'TERM-XXXXXXXX',
'channelType' => '4',
'requestDate' => 14040205115507,
'uniqueCode' => '000000000159',
'counter' => '000159',
'orderTrace' => '5078738696785',
'otp' => 'xxxxxx',
'mobileNumber' => 'xxxxxxxxxxx',
'amount' => 1000000,
]);
$ch = curl_init('https://back.tetra.land/payment/reverseorderbyotp');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $payload);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Accept: application/json',
'Content-Type: application/json',
"Authorization: Bearer {$token}",
]);
$response = curl_exec($ch);
curl_close($ch);
$data = json_decode($response, true);
print_r($data);
گارد لایسنس روی این متد اعمال نمیشود. گارد فقط روی اولین اکشن چرخه است. این متد ادامهٔ چرخه است و حتی با لایسنسِ منقضیشده هم کار میکند — پولی که جابهجا شده باید قابل برگشت باشد.
امتحان کنید
/payment/reverseorderbyotpامتحان کنیدنمایش JSON ارسالی
{
"terminalNumber": "TERM-XXXXXXXX",
"channelType": "4",
"requestDate": "14040205115507",
"uniqueCode": "000000000159",
"counter": "000159",
"orderTrace": "5078738696785",
"otp": "xxxxxx",
"mobileNumber": "xxxxxxxxxxx",
"amount": "1000000"
}پارامترهای پاسخ
| فیلد | نوع | توضیح |
|---|---|---|
data | boolean | در پاسخ موفق true است |
پاسخها
{
"message": "POST Request successful.",
"statusCode": 200,
"result": {
"status": true,
"responseCode": 0,
"data": true
},
"isError": false
}
۶. لغو سفارش رمزی (order-cancelation-by-otp)
Endpoint
POST {{base_url}}/payment/ordercancelationbyotp
مثال:
POST https://back.tetra.land/payment/ordercancelationbyotp
املای ordercancelation با یک l — این عمداً از سامانهٔ بالادست کالابرگ آمده است؛ اصلاحش میرور را میشکند.
Headers
| کلید | مقدار |
|---|---|
Accept | application/json |
Authorization | Bearer {sfara_token} |
Content-Type | application/json |
Body
| پارامتر | نوع | الزامی | توضیح |
|---|---|---|---|
otp | string | بله | رمز یکبارمصرف |
orderTrace | string | بله | شناسهٔ سفارشی که لغو میشود |
channelType | string | بله | "4" — همان مقدار مرحلهٔ ثبت سفارش |
فقط همین سه فیلد ارسال میشوند. فیلدهایی مثل uniqueCode، counter، terminalNumber، amount و requestDate در این متد جایی ندارند.
نمونه درخواست:
{
"otp": "xxxxxx",
"orderTrace": "5078738696785",
"channelType": "4"
}
نمونه کد
<?php
$token = 'YOUR_SFARA_TOKEN';
$payload = json_encode([
'otp' => 'xxxxxx',
'orderTrace' => '5078738696785',
'channelType' => '4',
]);
$ch = curl_init('https://back.tetra.land/payment/ordercancelationbyotp');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $payload);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Accept: application/json',
'Content-Type: application/json',
"Authorization: Bearer {$token}",
]);
$response = curl_exec($ch);
curl_close($ch);
$data = json_decode($response, true);
print_r($data);
گارد لایسنس روی این متد اعمال نمیشود. گارد فقط روی اولین اکشن چرخه است. این متد ادامهٔ چرخه است و حتی با لایسنسِ منقضیشده هم کار میکند.
امتحان کنید
/payment/ordercancelationbyotpامتحان کنیدنمایش JSON ارسالی
{
"otp": "xxxxxx",
"orderTrace": "5078738696785",
"channelType": "4"
}پارامترهای پاسخ
| فیلد | نوع | توضیح |
|---|---|---|
data | boolean | در پاسخ موفق true است |
پاسخها
{
"message": "POST Request successful.",
"statusCode": 200,
"result": {
"status": true,
"responseCode": 0,
"data": true
},
"isError": false
}
قوانین اعتبارسنجی
توکن (sfara_token) باید در هدر Authorization به فرمت Bearer {token} ارسال شود. بدون توکن معتبر، درخواستهای نیازمند آن با خطای ۴۰۱ رد میشوند.
گارد لایسنس فقط روی اولین اکشنِ چرخه (ثبت سفارش با رمز) اعمال میشود. سه متد بعدی حتی با لایسنس منقضیشده هم کار میکنند تا عملیات نیمهکاره قابل تکمیل یا برگشت باشد.
| پارامتر | قانون |
|---|---|
username | الزامی در احراز هویت — کلید API که از پنل خود دریافت کردهاید |
password | الزامی در احراز هویت — کلید محرمانهٔ همان کلید API |
terminalNumber | الزامی — ترمینالی که خرید روی آن انجام میشود؛ باید لایسنس معتبر داشته باشد (فقط در ثبت سفارش بررسی میشود) |
channelType | الزامی — "4" برای پرداخت با رمز یکبارمصرف |
requestDate | الزامی — تاریخ و ساعت شمسی به شکل YmdHis که پذیرنده خودش میسازد |
uniqueCode | الزامی — شناسهٔ یکتای درخواست که پذیرنده میسازد |
counter | الزامی — شمارندهٔ درخواست که پذیرنده میسازد |
otp | الزامی — رمز یکبارمصرف خریدار |
mobileNumber | الزامی — موبایل خریداری که رمز روی آن رفته |
amount | الزامی — مبلغ کل فاکتور به ریال |
orderItems | الزامی در مرحلهٔ ثبت سفارش — اقلام سبد خرید |
orderTrace | الزامی از مرحلهٔ دوم به بعد — شناسهٔ سفارش که در پاسخ ثبت سفارش برگشته بود |
creditAmount | اختیاری — مبلغ اعتباری که در پاسخ ثبت سفارش برگشته بود |