API قنوات الشحن
يسرد GET /v1/fulfillment/shipping/channels قنوات الشحن الدولية النشطة والمُكوَّنة أسعارها المتاحة عبر المستودع المرتبط بتطبيقك.
استخدم نقطة النهاية هذه لبناء منتقي قنوات أو لفحص القدرات. لمعرفة التوفر والمبالغ حسب الوجهة، استدعِ عروض أسعار الشحن. بطاقات الأسعار هنا تشرح نموذج التسعير فقط — وهي لا تقفل سعراً أبداً.
https://open.hiobuy.com/v1/fulfillment/shipping/channelsيتطلب fulfillment المستودع. تطبيق sandbox بمفتاح hio_test_* يتلقى بيانات mock حتمية.
عروض الأسعار ميزانيات وليست أسعاراً مقفلة. وزن المستودع وقياس الحجم وإعادة التغليف ومراجعة الخدمات قد تغيّر المبلغ النهائي.
المال والوحدات {#units}
- كل قيم المال
amountأعداد صحيحة بوحدة fen لـ CNY (الوحدات الصغرى).1000تعني ¥10.00. monetary_unitفي المستوى الأعلى دائماًCNY_minor.- كائنات المال تستخدم:
{
"amount": 1000,
"currency": "CNY"
}KG= كيلوغرام،CM= سنتيمتر،M3= متر مكعب،KG_PER_M3= كيلوغرام لكل متر مكعب.- عرّف القنوات والمناطق والخدمات بـ code المستقر، وليس
name. - لا تكشف Public API معرفات قاعدة بيانات المستودع، ولا أكواد المطور، ولا عناوين URL للموردين.
الطلب {#request}
GET /v1/fulfillment/shipping/channels?country_code=US&include=regions,services,rate_cards&page=1&page_size=20
Authorization: Bearer hio_live_xxx
Language: enلغة العرض هي ترويسة Language فقط. القيم المدعومة: en (الافتراضي)، en-US، zh، zh-CN، zh-TW، cn، hk. لا تضع language في سلسلة الاستعلام أو جسم JSON.
معاملات الاستعلام
| المعامل | مطلوب | الافتراضي | الوصف |
|---|---|---|---|
channel_code | لا | — | رمز القناة المستقر الدقيق (بحد أقصى 64 حرفاً) |
country_code | لا | — | بلد الوجهة وفق ISO 3166-1 alpha-2 |
include | لا | — | توسيعات مفصولة بفاصلة: regions، services، rate_cards |
page | لا | 1 | رقم الصفحة، يبدأ من 1 |
page_size | لا | 20 | عدد العناصر في الصفحة؛ الحد الأقصى 50 |
توسيعات include
احذف include للحصول على ملخص قنوات خفيف.
قيمة include | حقل الاستجابة | استخدم عندما |
|---|---|---|
regions | regions | التغطية ونوع المطابقة وزمن العبور المرجعي |
services | value_added_services | خدمات القيمة المضافة للقناة من أجل عروض الأسعار |
rate_cards | rate_cards | صفوف أسعار مرجعية تشرح نموذج الفوترة |
يمكنك الجمع بين القيم، مثلاً include=regions,services,rate_cards. القيمة غير المعروفة تعيد 400 VALIDATION_ERROR.
rate_cardsهيreference_only. يجب ألا تحل محلPOST /v1/fulfillment/shipping/quotes. فقطinclude=rate_cardsيطلب من المستودع صفوف الأسعار.
تُعاد فقط القنوات المفعّلة و ذات تكوين سعر صالح. مصفوفة items الفارغة تعني أنه لا توجد قناة في الكتالوج تطابق عوامل التصفية الحالية.
الاستجابة {#response}
{
"items": [
{
"code": "US-SEA",
"name": "US Ocean",
"description": "General cargo line",
"status": "ACTIVE",
"tags": [
"GREAT_VALUE"
],
"warehouse": {
"code": "SZ",
"name": "Shenzhen Warehouse"
},
"capabilities": {
"delivery_methods": [
"DOOR_DELIVERY"
],
"multi_package_supported": true,
"tracking_supported": true,
"shipping_label_supported": false
},
"requirements": {
"weight": "REQUIRED",
"dimensions": "CONDITIONAL",
"postal_code": "OPTIONAL",
"declared_value": "OPTIONAL",
"customs_code": "OPTIONAL",
"personal_customs_code": "OPTIONAL",
"recipient_identity": "OPTIONAL"
},
"attribute_matching": {
"mode": "ANY_OF",
"accepted_attributes": [
{
"code": "GENERAL",
"name": "General cargo"
}
]
},
"billing": {
"basis": "WEIGHT",
"calculation_model": "FIRST_NEXT_WEIGHT",
"quantity_unit": "KG",
"supported_range": {
"minimum": {
"value": 0.5,
"unit": "KG"
},
"maximum": {
"value": 30,
"unit": "KG"
},
"out_of_range_behavior": "UNAVAILABLE"
},
"minimum": {
"value": 0.5,
"unit": "KG",
"ceil_to_minimum": true
},
"rounding": {
"single_package_step": {
"value": 0.5,
"unit": "KG"
},
"multi_package_step": {
"value": 0.5,
"unit": "KG"
},
"ignore_below": {
"value": 0.05,
"unit": "KG"
}
},
"multi_package": {
"mode": "PER_BOX",
"calculation_scope": "PER_PACKAGE",
"aggregation": "SUM_PACKAGE_CHARGES",
"minimum_per_package": {
"value": 0.5,
"unit": "KG"
},
"minimum_total": {
"value": 0,
"unit": "KG"
}
},
"volumetric_weight": {
"enabled": true,
"divisor": 6000,
"average_with_actual": false,
"exemption": null
},
"overweight_warning": {
"enabled": false,
"threshold": {
"value": 0,
"unit": "KG"
},
"notice": null
}
},
"rule_summary": {
"fee_aggregation": "SUM_ALL",
"maximum_charge": {
"amount": 0,
"currency": "CNY"
},
"has_surcharges": true,
"has_order_restrictions": false,
"has_dispatch_restrictions": true,
"evaluated_by_quote": true
},
"regions": [
{
"code": "US-WEST",
"name": "US West",
"status": "ACTIVE",
"match_type": "COUNTRY_REGION",
"countries": [
"US"
],
"postal_code_required": false,
"reference_transit_time": {
"text": "15-18 business days",
"min_business_days": 15,
"max_business_days": 18
},
"areas": []
}
],
"value_added_services": [
{
"code": "LINE_FUEL",
"name": "Fuel surcharge",
"request_mode": "MANDATORY",
"pricing_type": "CALCULATED",
"pricing_scope": "REGION",
"pricing_basis": "BASE_FREIGHT_PERCENT",
"region_prices": [
{
"region_code": "US-WEST",
"value": 500,
"value_unit": "BASIS_POINT",
"fixed_charge": {
"amount": 200,
"currency": "CNY"
}
}
],
"final_quote_required": true,
"may_be_adjusted": true
}
],
"rate_cards": [
{
"region_code": "US-WEST",
"billing_basis": "WEIGHT",
"calculation_model": "FIRST_NEXT_WEIGHT",
"quantity_unit": "KG",
"currency": "CNY",
"reference_only": true,
"price_rows": [
{
"type": "FIRST_WEIGHT",
"pricing_basis": "WEIGHT",
"range": {
"minimum": 0.5,
"maximum": 0.5,
"unit": "KG",
"minimum_inclusive": true,
"maximum_inclusive": false
},
"first_quantity": {
"value": 0,
"unit": "KG"
},
"step": {
"value": 0,
"unit": "KG"
},
"charge": {
"amount": 8000,
"currency": "CNY"
}
}
]
}
],
"service_policy": {
"warehouse_may_add_services": true,
"warehouse_may_remove_services": true,
"prices_may_change_after_inspection": true
},
"final_quote_required": true,
"config_updated_at": "2026-09-07T08:00:00Z"
}
],
"pagination": {
"page": 1,
"page_size": 20,
"total": 1,
"has_more": false
},
"monetary_unit": "CNY_minor",
"generated_at": "2026-09-07T09:00:00Z",
"request_id": "req_xxx"
}تظهر regions وvalue_added_services وrate_cards فقط عند إرسال قيمة include المطابقة.
حقول الاستجابة {#fields}
| الحقل | الوصف |
|---|---|
items[] | القنوات المطابقة. فارغة عندما لا تطابق أي قناة في الكتالوج عوامل التصفية. |
items[].code | رمز القناة المستقر. استخدمه في channel_codes لعروض الأسعار وعند إنشاء الشحنة. |
items[].name | اسم العرض المترجم (ترويسة Language). |
items[].description | الوصف المترجم. |
items[].status | حالة الكتالوج. القنوات المُعادة هي ACTIVE. |
items[].tags | وسوم مستقرة مثل GREAT_VALUE. |
items[].warehouse | المستودع المرتبط { code, name }. ليس معرف قاعدة بيانات. |
items[].capabilities | طرق التسليم والدعم متعدد الطرود والتتبع والملصقات. |
items[].requirements | تلميحات اكتمال الإدخال: REQUIRED · OPTIONAL · CONDITIONAL · NOT_SUPPORTED. |
items[].attribute_matching | ANY_OF أو ALL_REQUIRED مع accepted_attributes[].code. |
items[].billing | كيف تسعّر القناة الشحنة. انظر أدناه. |
items[].rule_summary | وجود رسوم إضافية أو قيود؛ عروض الأسعار تقيّم القواعد. |
items[].regions | موجودة مع include=regions. |
items[].value_added_services | موجودة مع include=services. |
items[].rate_cards | موجودة مع include=rate_cards. دائماً reference_only. |
items[].service_policy | يجوز للمستودع إضافة/إزالة الخدمات وتغيير الأسعار بعد الفحص. |
items[].final_quote_required | true عندما لا يزال عرض سعر خاص بالشحنة مطلوباً. |
items[].config_updated_at | وقت مراجعة الكتالوج لهذه القناة. |
pagination | page، page_size، total، has_more. |
monetary_unit | دائماً CNY_minor. |
generated_at | طابع زمني للاستجابة (ISO 8601). |
request_id | للربط مع x-request-id. |
الفوترة {#billing}
| الحقل | المعنى |
|---|---|
basis | WEIGHT أو VOLUME أو DENSITY |
calculation_model | نموذج التسعير المستخدم في صفوف بطاقة الأسعار |
quantity_unit | KG أو M3 أو KG_PER_M3 |
supported_range | الحد الأدنى والأقصى للكمية القابلة للفوترة |
supported_range.out_of_range_behavior | UNAVAILABLE — لا يمكن للقناة حمل طرد خارج النطاق. لا تستقرأ. |
minimum | الحد الأدنى للكمية القابلة للفوترة وما إذا كانت القيم الأصغر تُرفع (ceil_to_minimum) |
rounding | خطوات التقريب للطرد الواحد والمتعدد |
volumetric_weight | مقسوم الوزن الحجمي وقاعدة الإعفاء |
multi_package | الفوترة لكل طرد مقابل المجمّعة والتجميع |
overweight_warning | إشعار اختياري بتجاوز الوزن |
قد تشمل نماذج الحساب FIRST_NEXT_WEIGHT وTIERED_PRICE وUNIT_PRICE_PLUS_GRADE وMULTI_LEVEL_NEXT_WEIGHT وRANGE_FIRST_NEXT_WEIGHT. لا تعِد تنفيذ محرك تسعير المستودع انطلاقاً من هذه الصفوف.
المناطق {#regions}
| الحقل | المعنى |
|---|---|
code / name | رمز المنطقة المستقر والاسم المترجم |
match_type | COUNTRY_REGION أو POSTAL_CODE |
countries | رموز دول ISO التي تغطيها هذه المنطقة |
postal_code_required | عندما تكون true، أرسل postal_code إلى عروض الأسعار |
reference_transit_time | نص العرض مع حد أدنى/أقصى اختياري لأيام العمل |
areas | قائمة مناطق أدق اختيارية. الكتالوج لا يكشف قاعدة بيانات قواعد الرمز البريدي كاملة. |
الخدمات ذات القيمة المضافة {#value-added-services}
استخدم value_added_services[].code في services.channel[] على عروض أسعار الشحن.
| الحقل | المعنى |
|---|---|
code | رمز الخدمة المستقر |
request_mode | MANDATORY (يُطبَّق دائماً) أو OPTIONAL (يختاره المطوّر) |
pricing_type | سعر ثابت مقابل محسوب (مثلاً CALCULATED) |
pricing_scope | أين ينطبق السعر (مثلاً REGION) |
pricing_basis | كيف تُحسب الرسوم |
BASIS_POINT نقطة أساس للنسبة المئوية: 500 تعني 5%. يجوز للمستودع إضافة الخدمات أو إزالتها أو تعديلها أثناء المعالجة — انظر service_policy وmay_be_adjusted.
بطاقات الأسعار {#rate-cards}
| الحقل | المعنى |
|---|---|
region_code | المنطقة التي تنتمي إليها البطاقة |
billing_basis | نفس مفردات billing.basis |
calculation_model | نفس مفردات billing.calculation_model |
quantity_unit | KG أو M3 أو KG_PER_M3 |
price_rows | نطاقات مرجعية تُستخدم لشرح النموذج |
reference_only | دائماً true — ليست عرض سعر حيّاً |
التخزين المؤقت {#caching}
يتغيّر config_updated_at عند تغيّر تفاصيل القناة أو المناطق أو بطاقات الأسعار أو القواعد أو الخدمات. خزّن الكتالوج الخفيف مؤقتاً لفترة وجيزة، وأعد جلب التوسيعات عندما يتغيّر هذا الطابع الزمني، واستدعِ دائماً عروض أسعار الشحن قبل إنشاء شحنة. لا توجد نسخة تسعير مقفلة.
الأخطاء {#errors}
عدم أهلية قناة معيّنة ليس خطأ HTTP. مصفوفة items الفارغة هي إخفاق كتالوج ناجح.
| HTTP | error.code | متى |
|---|---|---|
| 400 | VALIDATION_ERROR | ترقيم صفحات غير صالح، أو صياغة بلد، أو قيمة include |
| 401 | INVALID_API_KEY | رمز Bearer مفقود أو غير صالح |
| 400 | INVALID_SHIPPING_CHANNEL | محجوز لاستدعاءات عروض الأسعار/الشحنات التي تسمّي قناة غير معروفة. هذه القائمة تعيد ببساطة مصفوفة items فارغة. |
| 403 | FULFILLMENT_MODE_NOT_SUPPORTED | التطبيق يستخدم self fulfillment |
| 403 | WAREHOUSE_AUTH_INVALID | تفويض المستودع مفقود أو مرفوض أو منتهٍ |
| 422 | INVALID_COUNTRY_CODE | بلد الوجهة غير صالح أو غير مدعوم |
| 502 | WAREHOUSE_UPSTREAM_ERROR | فشلت خدمة المستودع؛ أعد المحاولة مع backoff |
لا يوجد رمز عام مستقل AUTHENTICATION_ERROR أو WAREHOUSE_AUTH_REQUIRED أو WAREHOUSE_SERVICE_UNAVAILABLE. إخفاقات المصادقة تستخدم 401 INVALID_API_KEY؛ وغياب ربط المستودع يستخدم 403 WAREHOUSE_AUTH_INVALID؛ وانقطاع المستودع يستخدم 502 WAREHOUSE_UPSTREAM_ERROR.
أمثلة {#examples}
كتالوج خفيف:
curl "https://api.hiobuy.com/v1/fulfillment/shipping/channels?page=1&page_size=20" \
-H "Authorization: Bearer hio_live_xxx" \
-H "Language: en"قنوات يمكنها خدمة الولايات المتحدة، بما في ذلك التسعير المرجعي:
curl "https://api.hiobuy.com/v1/fulfillment/shipping/channels?country_code=US&include=regions,services,rate_cards" \
-H "Authorization: Bearer hio_live_xxx" \
-H "Language: zh-CN"التالي: اطلب عرض سعر شحن حسب الوجهة.
Get Support
Need integration help? Contact Developer Support at support@hiobuy.com · Response within 1–2 business days