Cancel an order
يلغي طلبًا عاديًا واحدًا أو دفعة متتابعة من ما يصل إلى 100 معرّف يخص الحساب. لا يكون كل طلب عادي عبر API مؤهلاً إلا خلال نافذة السماح الخاصة به، ومدتها 15 ثانية قبل الإرسال.
POST
https://notpanel.com/api/v3action=cancelمفتاح API مطلوبمحدود بالمعدل (حساب مشترك + IP + إجراء)الجسم:
application/x-www-form-urlencodedقدّم معرّف
order رقميًا واحدًا أو معرّفات orders مفصولة بفواصل، حتى 100. لا يمدد وضع الدفعات نافذة إلغاء أي طلب مطلقًا.المعاملات
| الاسم | النوع | الوصف |
|---|---|---|
| keyمطلوب | string | مفتاح API الخاص بك. |
| actionمطلوب | string | يجب أن يكون السلسلة النصية الحرفية "cancel". |
| orderمشروط | string | معرّف رقمي لطلب عادي واحد يخص الحساب ويعيده action=add. |
| ordersمشروط | string (CSV) | معرّفات طلبات عادية مفصولة بفواصل، بحد أقصى 100. تحافظ الاستجابة على ترتيب الإدخال وتعيد نتيجة نجاح أو خطأ لكل عنصر. |
مثال على الطلب
استبدل YOUR_API_KEY بالمفتاح المُولَّد ضمن صفحة API في لوحة تحكمك.
curl -X POST https://notpanel.com/api/v3 \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "key=YOUR_API_KEY&action=cancel&order=7001"const res = await fetch("https://notpanel.com/api/v3", {
method: "POST",
headers: { "Content-Type": "application/x-www-form-urlencoded" },
body: new URLSearchParams({
key: "YOUR_API_KEY",
action: "cancel",
order: "7001",
}),
});
const data = await res.json();
console.log(data);import requests
res = requests.post(
"https://notpanel.com/api/v3",
data={
"key": "YOUR_API_KEY",
"action": "cancel",
"order": "7001",
},
)
print(res.json())<?php
$body = http_build_query([
'key' => 'YOUR_API_KEY',
'action' => 'cancel',
'order' => '7001',
]);
$response = file_get_contents('https://notpanel.com/api/v3', false, stream_context_create([
'http' => [
'method' => 'POST',
'header' => "Content-Type: application/x-www-form-urlencoded\r\n",
'content' => $body,
'ignore_errors' => true,
],
]));
print_r(json_decode($response, true));
مثال على الاستجابة
{
"order": 7001,
"status": "Canceled",
"status_key": "cancelled",
"cancel": 1,
"refund": "0.50",
"refund_pending": 0
}الأخطاء الشائعة
| الحالة | الجسم | السبب |
|---|---|---|
| 409 | {"error":"Cancellation window has ended or the order has already started"} | غادر الطلب العادي مهلة الإلغاء البالغة 15 ثانية أو لم يعد في pending. يعيد الطلب الفردي 409. |
| 409 | {"error":"Order is already completed"} | العنصر في حالة نهائية لا تقبل الإلغاء. أما إعادة محاولة إلغاء سابق ناجح فتعيد النتيجة الناجحة نفسها. |
| 409 | {"error":"Order is already refunded"} | العنصر في حالة نهائية لا تقبل الإلغاء. أما إعادة محاولة إلغاء سابق ناجح فتعيد النتيجة الناجحة نفسها. |
| 404 | {"error":"Order not found"} | لا يوجد طلب عادي بهذا المعرّف يخص هذا الحساب. يعيد الطلب الفردي 404. |
| 429 | {"error":"Rate limit exceeded for cancel"} | تم بلوغ حد إجراء الإلغاء. أعد المحاولة بعد التأخير المُبلغ عنه؛ رمز الاستجابة 429. |