پرداخت کالابرگ
رابط مستقیم با سامانهٔ بالادست کالابرگ برای خرید کالابرگ کارتی
مقدمه
در جریان خرید کالابرگ کارتی، کسبوکار اطلاعات تراکنش بانکی (RRN، STAN، کد ملی رمزشده) را به همراه اقلام سفارش مستقیماً به سامانهٔ بالادست کالابرگ میفرستد. پاکت پاسخ این سرویس با پاکت استاندارد گیتوی تترا فرق دارد — خروجی عیناً همان چیزی است که سامانهٔ بالادست برمیگرداند.
برای خرید با رمز یکبارمصرف (OTP) به مستندات پرداخت کالابرگ با رمز مراجعه کنید.
فیلد nationalCode باید بهصورت رمزشده (ciphertext) ارسال شود — کد ملی خام به هیچ وجه پذیرفته نمیشود.
این سرویس هدر Idempotency-Key نمیخواهد و هیچ محافظ تکراری ندارد. ارسال دوبارهٔ یک درخواست خرید، سفارش را دوباره ثبت میکند.
- احراز هویت (
authenticate)
توکن کوتاهمدت کالابرگ را میگیرید و در هدرAuthorizationهمهٔ درخواستهای بعدی قرار میدهید. توکن ۲۴ ساعت اعتبار دارد و با غیرفعالشدن یا تغییر کلید API باطل میشود.textPOST /api/Authentication/authenticate - ثبت خرید (
item-order)
اطلاعات کارت (RRN، STAN)، کد ملی رمزشده و اقلام سفارش را میفرستید. اعتبار خریدار همان لحظه کسر میشود. پاسخorderTraceمیدهد — بلافاصله ذخیره کنید؛ بدون آن هیچ مرحلهٔ بعدی ممکن نیست.textPOST /inquiry/itemorder - استعلام سفارش (
purchase-inquiry)
وضعیت سفارش را میپرسید و هیچ تغییری در سیستم ایجاد نمیشود. این مرحله اجباری است — پیش از تأیید نهایی باید اطمینان حاصل شود سفارش در وضعیت درست است. اگر تصمیم به ادامه ندارید، مراحل ۵ یا ۶ را ببینید.textPOST /inquiry/purchaseinquiry - تأیید نهایی (
confirm-order)
تراکنش را قطعی میکنید. پس از این مرحله، برگشت از طریق API غیرممکن است.textPOST /payment/confirmorder - برگشت (
reverse-order)
اگر به هر دلیلیconfirm-orderانجام نشد، این سرویس اجباری است. برخلاف لغو، هیچ آزادسازی خودکاری وجود ندارد — بدون این فراخوانی، اعتبار خریدار به حسابش برنمیگردد.textPOST /payment/reverseorder - لغو (
order-cancelation)
پس ازitem-orderو پیش ازconfirm-order، در صورت انصراف مشتری یا خطای داخلی. اگر صدا نزنید، اعتبار حدود ۲ دقیقه بعد خودبهخود آزاد میشود — اما برای تجربهٔ بهتر خریدار همیشه صدایش بزنید.textPOST /payment/ordercancelation
ساختار کلی API
- Base URL:
https://back.tetra.land - پیشوند مسیر:
payment - احراز هویت: برخی درخواستها بدون نیاز به توکن و برخی نیازمند هدر
Authorization: Bearer {sfara_token}— به بخش هر endpoint مراجعه کنید - فرمت درخواست:
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)
Endpoint
POST {{base_url}}/inquiry/itemorder
مثال:
POST https://back.tetra.land/inquiry/itemorder
Headers
| کلید | مقدار |
|---|---|
Accept | application/json |
Authorization | Bearer {sfara_token} |
Content-Type | application/json |
Body
| پارامتر | نوع | الزامی | توضیح |
|---|---|---|---|
rrn | string | بله | شمارهٔ مرجع تراکنش بانکی |
stan | string | بله | شمارهٔ پیگیری ترمینال |
nationalCode | string | بله | کد ملی خریدار، از قبل رمزنگاریشده توسط کارتخوان |
cardNumber | string | خیر | شمارهٔ کارت بهصورت ماسکدار |
terminalNumber | string | بله | ترمینالی که خرید روی آن انجام میشود؛ باید لایسنسِ معتبر داشته باشد |
channelType | string | بله | "2" — پرداخت کارتی |
requestDate | integer | بله | تاریخ و ساعت شمسی به شکل YYYYMMDDHHmmss |
amount | integer | بله | مبلغ کل فاکتور به ریال |
orderItems | array | بله | اقلام سبد خرید |
هر قلم در orderItems
| پارامتر | نوع | الزامی | توضیح |
|---|---|---|---|
commodityCode | string | بله | بارکد کالا |
quantity | integer | بله | تعداد واحد از این کالا |
amount | integer | بله | مبلغ این قلم به ریال |
unitCode | string | بله | رشته است نه عدد. مقادیر مشاهدهشده «۱» و «۵» |
مجموع amount اقلام باید دقیقاً با amount کل درخواست برابر باشد.
نمونه درخواست:
{
"rrn": "123456789012",
"stan": "123456",
"nationalCode": "5Aud7J8/UpL4****w5W5p5Mwrh1CSM9rUs=",
"terminalNumber": "TERM-XXXXXXXX",
"channelType": "2",
"requestDate": 14050628114746,
"amount": 10000,
"orderItems": [
{
"commodityCode": "6260371001295",
"quantity": 1,
"amount": 10000,
"unitCode": "5"
}
]
}
نمونه کد
<?php
$token = 'YOUR_SFARA_TOKEN';
$payload = json_encode([
'rrn' => '123456789012',
'stan' => '123456',
'nationalCode' => '5Aud7J8/UpL4****w5W5p5Mwrh1CSM9rUs=',
'terminalNumber'=> 'TERM-XXXXXXXX',
'channelType' => '2',
'requestDate' => 14050628114746,
'amount' => 10000,
'orderItems' => [
['commodityCode' => '6260371001295', 'quantity' => 1, 'amount' => 10000, 'unitCode' => '5'],
],
]);
$ch = curl_init('https://back.tetra.land/inquiry/itemorder');
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/itemorderامتحان کنیدنمایش JSON ارسالی
{
"rrn": "123456789012",
"stan": "123456",
"nationalCode": "5Aud7J8/UpL4****w5W5p5Mwrh1CSM9rUs=",
"terminalNumber": "12345678",
"channelType": "2",
"requestDate": "14040205115507",
"amount": "7000000",
"orderItems": "{}"
}گارد لایسنس: تنها شرطی که این میرور خودش بررسی میکند این است که برای همین terminalNumber یک لایسنسِ منقضینشده وجود داشته باشد. مالکیت بیاثر است. اگر بیش از یک لایسنس با این شماره وجود داشته باشد، درخواست رد میشود.
پارامترهای پاسخ
| فیلد | نوع | توضیح |
|---|---|---|
orderTrace | string | شناسهٔ سفارش؛ در سه متد بعدی لازم است |
rrn | string | شمارهٔ مرجع تراکنش بانکی |
stan | string | شمارهٔ پیگیری ترمینال |
terminalNumber | string | شمارهٔ ترمینال (ممکن است با ورودی متفاوت باشد) |
amount | integer | مبلغ کل |
creditAmount | integer | مبلغ اعتبار تخصیصیافته |
balanceMarketType | integer | نوع بازار — معنی مقادیرش نامعلوم است |
orderItems | string | فهرست اقلام بهصورت رشتهٔ قالببندیشده (با ` |
assignedCredits | array | ریز اعتبار تخصیصیافته به هر قلم |
پاسخها
{
"message": "POST Request successful.",
"statusCode": 200,
"result": {
"status": true,
"responseCode": 0,
"data": {
"creditAmount": 6000000,
"terminalNumber": "12355679",
"amount": 7000000,
"orderTrace": "1046300323242",
"stan": "123456",
"rrn": "100011002374",
"balanceMarketType": 0,
"assignedCredits": [
{
"commodityCode": "06265086100790",
"quantity": 1,
"amount": 3000000,
"unitCode": "5",
"assignedCredit": 3000000,
"currentCredit": 0,
"isBalanceMarket": 0
},
{
"commodityCode": "6260719900013",
"quantity": 1,
"amount": 3000000,
"unitCode": "5",
"assignedCredit": 3000000,
"currentCredit": 0,
"isBalanceMarket": 0
},
{
"commodityCode": "6260100500280",
"quantity": 1,
"amount": 1000000,
"unitCode": "5",
"assignedCredit": 0,
"currentCredit": 0,
"isBalanceMarket": 0
}
]
}
},
"isError": false
}
۳. استعلام سفارش (purchase-inquiry)
Endpoint
POST {{base_url}}/inquiry/purchaseinquiry
مثال:
POST https://back.tetra.land/inquiry/purchaseinquiry
Headers
| کلید | مقدار |
|---|---|
Accept | application/json |
Authorization | Bearer {sfara_token} |
Content-Type | application/json |
Body
| پارامتر | نوع | الزامی | توضیح |
|---|---|---|---|
orderTrace | string | بله | شناسهٔ سفارش که در پاسخ ثبت خرید برگشته بود |
channelType | string | بله | "2" — پرداخت کارتی |
rrn | string | بله | شمارهٔ مرجع تراکنش بانکی، همان مقدار ثبت خرید |
stan | string | بله | شمارهٔ پیگیری ترمینال، همان مقدار ثبت خرید |
nationalCode | string | بله | کد ملی خریدار، از قبل رمزنگاریشده توسط کارتخوان |
cardNumber | string | خیر | شمارهٔ کارت بهصورت ماسکدار |
terminalNumber | string | بله | ترمینالی که خرید روی آن انجام شده؛ باید لایسنسِ معتبر داشته باشد |
creditAmount | integer | خیر | مبلغ اعتباری که در پاسخ ثبت خرید برگشته بود |
amount | integer | بله | مبلغ کل فاکتور به ریال |
نمونه درخواست:
{
"orderTrace": "1046300323242",
"channelType": "2",
"rrn": "100011002374",
"stan": "123456",
"nationalCode": "5Aud7J8/UpL4****w5W5p5Mwrh1CSM9rUs=",
"terminalNumber": "TERM-XXXXXXXX",
"amount": 10000
}
🔴 این نُه فیلد همهٔ ورودی این متد است. orderItems و requestDate در این
مرحله فرستاده نمیشوند.
گارد لایسنس: تنها شرطی که این میرور خودش بررسی میکند این است که برای همین terminalNumber یک لایسنسِ منقضینشده وجود داشته باشد. مالکیت بیاثر است.
خروجی
| فیلد | نوع | توضیح |
|---|---|---|
data | boolean | در پاسخ موفق مقدار true است و جزئیات دیگری ندارد |
نمونه کد
<?php
$token = 'YOUR_SFARA_TOKEN';
$payload = json_encode([
'orderTrace' => '1046300323242',
'channelType' => '2',
'rrn' => '100011002374',
'stan' => '123456',
'nationalCode' => '5Aud7J8/UpL4****w5W5p5Mwrh1CSM9rUs=',
'terminalNumber'=> 'TERM-XXXXXXXX',
'amount' => 10000,
]);
$ch = curl_init('https://back.tetra.land/inquiry/purchaseinquiry');
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/purchaseinquiryامتحان کنیدنمایش JSON ارسالی
{
"orderTrace": "1046300323242",
"channelType": "2",
"rrn": "100011002374",
"stan": "123456",
"nationalCode": "5Aud7J8/UpL4****w5W5p5Mwrh1CSM9rUs=",
"terminalNumber": "12355679",
"amount": "7000000"
}پارامترهای پاسخ
| پارامتر | نوع | نمونه مقدار | توضیح |
|---|---|---|---|
data | string | - | در پاسخ موفق مقدار true است و جزئیات دیگری ندارد |
پاسخها
{
"message": "POST Request successful.",
"statusCode": 200,
"result": {
"status": true,
"responseCode": 0,
"data": true
},
"isError": false
}
۴. تأیید نهایی (confirm-order)
Endpoint
POST {{base_url}}/payment/confirmorder
مثال:
POST https://back.tetra.land/payment/confirmorder
Headers
| کلید | مقدار |
|---|---|
Accept | application/json |
Authorization | Bearer {sfara_token} |
Content-Type | application/json |
Body
| پارامتر | نوع | الزامی | توضیح |
|---|---|---|---|
orderTrace | string | بله | شناسهٔ سفارش که در پاسخ ثبت خرید برگشته بود |
channelType | string | بله | "2" — پرداخت کارتی |
rrn | string | بله | شمارهٔ مرجع تراکنش بانکی، همان مقدار ثبت خرید |
stan | string | بله | شمارهٔ پیگیری ترمینال، همان مقدار ثبت خرید |
nationalCode | string | بله | کد ملی خریدار، از قبل رمزنگاریشده توسط کارتخوان |
cardNumber | string | خیر | شمارهٔ کارت بهصورت ماسکدار |
terminalNumber | string | بله | ترمینالی که خرید روی آن انجام شده؛ در این مرحله لایسنسش بررسی نمیشود |
creditAmount | integer | خیر | مبلغ اعتباری که در پاسخ ثبت خرید برگشته بود |
amount | integer | بله | مبلغ کل فاکتور به ریال |
نمونه درخواست:
{
"orderTrace": "1046300323242",
"channelType": "2",
"rrn": "100011002374",
"stan": "123456",
"nationalCode": "5Aud7J8/UpL4****w5W5p5Mwrh1CSM9rUs=",
"terminalNumber": "TERM-XXXXXXXX",
"amount": 10000
}
🔴 این نُه فیلد همهٔ ورودی این متد است. orderItems و requestDate در این
مرحله فرستاده نمیشوند.
گارد لایسنس روی این متد اعمال نمیشود. گارد فقط روی اولین اکشن چرخه (ثبت خرید) است. این متد ادامهٔ چرخه است و حتی با لایسنسِ منقضیشده هم کار میکند — پولی که جابهجا شده باید قابل تأیید باشد.
خروجی
| فیلد | نوع | توضیح |
|---|---|---|
data | boolean | در پاسخ موفق مقدار true است و جزئیات دیگری ندارد |
نمونه کد
<?php
$token = 'YOUR_SFARA_TOKEN';
$payload = json_encode([
'orderTrace' => '1046300323242',
'channelType' => '2',
'rrn' => '100011002374',
'stan' => '123456',
'nationalCode' => '5Aud7J8/UpL4****w5W5p5Mwrh1CSM9rUs=',
'terminalNumber'=> 'TERM-XXXXXXXX',
'amount' => 10000,
]);
$ch = curl_init('https://back.tetra.land/payment/confirmorder');
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/confirmorderامتحان کنیدنمایش JSON ارسالی
{
"orderTrace": "1046300323242",
"channelType": "2",
"rrn": "100011002374",
"stan": "123456",
"nationalCode": "5Aud7J8/UpL4****w5W5p5Mwrh1CSM9rUs=",
"terminalNumber": "12355679",
"amount": "7000000"
}پارامترهای پاسخ
| پارامتر | نوع | نمونه مقدار | توضیح |
|---|---|---|---|
data | string | - | در پاسخ موفق مقدار true است و جزئیات دیگری ندارد |
پاسخها
{
"message": "POST Request successful.",
"statusCode": 200,
"result": {
"status": true,
"responseCode": 0,
"data": true
},
"isError": false
}
۵. برگشت خرید (reverse-order)
Endpoint
POST {{base_url}}/payment/reverseorder
مثال:
POST https://back.tetra.land/payment/reverseorder
Headers
| کلید | مقدار |
|---|---|
Accept | application/json |
Authorization | Bearer {sfara_token} |
Content-Type | application/json |
Body
| پارامتر | نوع | الزامی | توضیح |
|---|---|---|---|
orderTrace | string | بله | شناسهٔ سفارش که در پاسخ ثبت خرید برگشته بود |
channelType | string | بله | "2" — پرداخت کارتی |
rrn | string | بله | شمارهٔ مرجع تراکنش بانکی، همان مقدار ثبت خرید |
stan | string | بله | شمارهٔ پیگیری ترمینال، همان مقدار ثبت خرید |
nationalCode | string | بله | کد ملی خریدار، از قبل رمزنگاریشده توسط کارتخوان |
cardNumber | string | خیر | شمارهٔ کارت بهصورت ماسکدار |
terminalNumber | string | بله | ترمینالی که خرید روی آن انجام شده؛ در این مرحله لایسنسش بررسی نمیشود |
creditAmount | integer | خیر | مبلغ اعتباری که در پاسخ ثبت خرید برگشته بود |
amount | integer | بله | مبلغ کل فاکتور به ریال |
نمونه درخواست:
{
"orderTrace": "1046300323242",
"channelType": "2",
"rrn": "100011002374",
"stan": "123456",
"nationalCode": "5Aud7J8/UpL4****w5W5p5Mwrh1CSM9rUs=",
"terminalNumber": "TERM-XXXXXXXX",
"amount": 10000
}
🔴 این نُه فیلد همهٔ ورودی این متد است. orderItems و requestDate در این
مرحله فرستاده نمیشوند.
گارد لایسنس روی این متد اعمال نمیشود. گارد فقط روی اولین اکشن چرخه (ثبت خرید) است. این متد ادامهٔ چرخه است و حتی با لایسنسِ منقضیشده هم کار میکند — پولی که جابهجا شده باید قابل برگشت باشد.
خروجی
| فیلد | نوع | توضیح |
|---|---|---|
data | boolean | در پاسخ موفق مقدار true است و جزئیات دیگری ندارد |
نمونه کد
<?php
$token = 'YOUR_SFARA_TOKEN';
$payload = json_encode([
'orderTrace' => '1046300323242',
'channelType' => '2',
'rrn' => '100011002374',
'stan' => '123456',
'nationalCode' => '5Aud7J8/UpL4****w5W5p5Mwrh1CSM9rUs=',
'terminalNumber'=> 'TERM-XXXXXXXX',
'amount' => 10000,
]);
$ch = curl_init('https://back.tetra.land/payment/reverseorder');
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/reverseorderامتحان کنیدنمایش JSON ارسالی
{
"orderTrace": "1046300323242",
"channelType": "2",
"rrn": "100011002374",
"stan": "123456",
"nationalCode": "5Aud7J8/UpL4****w5W5p5Mwrh1CSM9rUs=",
"terminalNumber": "12355679",
"amount": "7000000"
}پارامترهای پاسخ
| پارامتر | نوع | نمونه مقدار | توضیح |
|---|---|---|---|
data | string | - | در پاسخ موفق مقدار true است و جزئیات دیگری ندارد |
پاسخها
{
"message": "POST Request successful.",
"statusCode": 200,
"result": {
"status": true,
"responseCode": 0,
"data": true
},
"isError": false
}
۶. لغو سفارش (order-cancelation)
Endpoint
POST {{base_url}}/payment/ordercancelation
مثال:
POST https://back.tetra.land/payment/ordercancelation
Headers
| کلید | مقدار |
|---|---|
Accept | application/json |
Authorization | Bearer {sfara_token} |
Content-Type | application/json |
Body
| پارامتر | نوع | الزامی | توضیح |
|---|---|---|---|
orderTrace | string | بله | شناسهٔ سفارش که در پاسخ ثبت خرید برگشته بود |
channelType | string | بله | "2" — پرداخت کارتی |
nationalCode | string | بله | کد ملی خریدار، از قبل رمزنگاریشده توسط کارتخوان |
نمونه درخواست:
{
"orderTrace": "1662883620924",
"channelType": "2",
"nationalCode": "5Aud7J8/UpL4****w5W5p5Mwrh1CSM9rUs="
}
🔴 این سه فیلد همهٔ ورودی این متد است؛ برخلاف متدهای دیگر، شمارهٔ ترمینال گرفته نمیشود.
گارد لایسنس روی این متد اعمال نمیشود. گارد فقط روی اولین اکشن چرخه (ثبت خرید) است. این متد ادامهٔ چرخه است و حتی با لایسنسِ منقضیشده هم کار میکند.
خروجی
| فیلد | نوع | توضیح |
|---|---|---|
data | boolean | در پاسخ موفق مقدار true است و جزئیات دیگری ندارد |
نمونه کد
<?php
$token = 'YOUR_SFARA_TOKEN';
$payload = json_encode([
'orderTrace' => '1662883620924',
'channelType' => '2',
'nationalCode' => '5Aud7J8/UpL4****w5W5p5Mwrh1CSM9rUs=',
]);
$ch = curl_init('https://back.tetra.land/payment/ordercancelation');
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/ordercancelationامتحان کنیدنمایش JSON ارسالی
{
"orderTrace": "1662883620924",
"channelType": "2",
"nationalCode": "5Aud7J8/UpL4****w5W5p5Mwrh1CSM9rUs="
}پارامترهای پاسخ
| پارامتر | نوع | نمونه مقدار | توضیح |
|---|---|---|---|
data | string | - | در پاسخ موفق مقدار 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 |
rrn | الزامی — شمارهٔ مرجع تراکنش بانکی |
stan | الزامی — شمارهٔ پیگیری ترمینال |
nationalCode | الزامی — کد ملی خریدار، از قبل رمزنگاریشده توسط کارتخوان |
cardNumber | اختیاری — شمارهٔ کارت بهصورت ماسکدار |
terminalNumber | الزامی — ترمینالی که خرید روی آن انجام میشود؛ باید لایسنسِ معتبر داشته باشد |
channelType | الزامی — "2" برای پرداخت کارتی |
requestDate | الزامی — تاریخ و ساعت شمسی به شکل YYYYMMDDHHmmss (عدد صحیح) |
amount | الزامی — مبلغ کل فاکتور به ریال |
orderItems | الزامی — اقلام سبد خرید |
orderTrace | الزامی — شناسهٔ سفارش که در پاسخ ثبت خرید برگشته بود |
creditAmount | اختیاری — مبلغ اعتباری که در پاسخ ثبت خرید برگشته بود |