المطورون/البداية

واجهة CardV API للتجار

تبيع CardV للشركات منتجات رقمية مدفوعة مسبقًا، مثل بطاقات الهدايا وشحن الألعاب وشرائح eSIM. تتيح لك واجهة API للتجار شراء هذه المنتجات تلقائيًا من خادمك. تتحقق من رصيدك، وتختار المنتج، وتعرف سعره، ثم تطلبه وتستلم الأكواد. تُدفع قيمة الطلبات من محفظتك المدفوعة مسبقًا لدى CardV. أما باقي المهام، مثل شحن المحفظة والاطلاع على سجل الطلبات، فتتم من بوابة التاجر.

#الوثائق

الوثيقةمحتواها
المصادقةالترويسات، وتوقيع الطلب، وإعداد المفتاح
المنتجات والطلباتالرصيد، والمنتجات، والأسعار، والطلبات، والأكواد
القواعد العامةالمبالغ، والتواريخ، والأرقام التعريفية، وحد الطلبات، والأخطاء
Webhookإشعارات الطلبات التي تصل إلى خادمك
بيئة Sandboxالاختبار، وقائمة التحقق قبل التشغيل الفعلي
الأمانحماية المفاتيح والأكواد

#البيئات

LiveSandbox
عنوان API الأساسيhttps://b2b.cardv.net/api/v1https://sandbox.cardv.net/api/v1
بوابة التاجرhttps://b2b.cardv.net/portal/البوابة نفسها، مع التبديل إلى Sandbox

بيئة Sandbox نسخة تجريبية منفصلة من CardV، تعمل بأموال تجريبية. المفاتيح والأرصدة والطلبات وأرقام المنتجات مختلفة في كل بيئة.

#البدء السريع

  1. قدّم طلبًا لفتح حساب تاجر من البوابة، ثم أكّد بريدك الإلكتروني.

  2. انتظر الموافقة. تراجع CardV بيانات شركتك، ثم تحصل على Merchant ID (رقم التاجر)، مثل M00000001.

  3. افتح Sandbox. سجّل الدخول إلى البوابة واختر Sandbox من الشريط العلوي. ستجد في حسابك 1,000 USD من الأموال التجريبية.

  4. أنشئ مفتاح API. في البوابة، اذهب إلى Integrations → API keys. أنشئ مفتاحًا، ثم اعرضه باستخدام الرمز الذي ترسله CardV إلى بريدك. احفظه في مخزن الأسرار لديك.

  5. تحقق من رصيدك:

    Shell
    export CARDV_BASE=https://sandbox.cardv.net
    export CARDV_MERCHANT_ID=M00000001     # yours
    export CARDV_API_KEY=cvb2b_...         # from your secret store
    AUTH=(-H "X-Merchant-Id: $CARDV_MERCHANT_ID" -H "X-Api-Key: $CARDV_API_KEY")
    
    curl -sS "$CARDV_BASE/api/v1/balance" "${AUTH[@]}"
  6. ابحث عن منتج:

    Shell
    curl -sS "$CARDV_BASE/api/v1/skus?search=steam&limit=20" "${AUTH[@]}"

    اختر منتجًا متاحًا ("availability": "available")، وسجّل رقمه sku_id.

  7. اعرف السعر:

    Shell
    curl -sS "$CARDV_BASE/api/v1/skus/S000001/quote?quantity=1" "${AUTH[@]}"

    سجّل قيمة merchant_price، فهي ما تدفعه عن الوحدة الواحدة.

  8. أرسل الطلب. يجب توقيع هذا الطلب. استخدم أحد الأمثلة في المصادقة مع هذا المحتوى:

    JSON
    {
      "external_order_id": "TEST-0001",
      "items": [
        {"sku_id": "S000001", "quantity": 1, "expected_unit_price": "9.2500"}
      ]
    }

    ستتلقى HTTP 201 ومعه رقم طلب CardV، مثل O-00001234.

  9. استلم الأكواد. استدعِ GET/api/v1/orders/O-00001234 حتى تصبح الحالة succeeded. تجد الأكواد في items[].deliveries[].display_fields. ويمكنك أيضًا أن تتلقى إشعار Webhook عند اكتمال الطلب.

  10. انتقل إلى التشغيل الفعلي (Live) بعد إكمال قائمة التحقق في Sandbox.

الأرقام والأسعار أعلاه مجرد أمثلة. استخدم القيم التي تظهر في قائمة منتجاتك.

#نظرة سريعة على الواجهة

تضم الواجهة سبع نقاط نهاية، وتبدأ كل المسارات بـ /api/v1.

نقطة النهايةالغرض منهاتحتاج توقيعًا؟
GET/accountبيانات شركتك وحالة وصولك إلى APIلا
GET/balanceالمبلغ المتاح لك للشراءلا
GET/skusقائمة المنتجات المتاحة لك مع سعركلا
GET/skus/{sku_id}منتج واحدلا
GET/skus/{sku_id}/quoteالسعر الحالي لكمية معيّنةلا
POST/ordersإرسال طلب يُدفع من محفظتكنعم
GET/orders/{order_id}حالة الطلب وأكوادهلا

أي نقطة نهاية أخرى تُرجع HTTP 403 عند استدعائها بمفتاح API:

JSON
{"detail": "This operation is only available in the Merchant Portal."}

شحن رصيد الهاتف المحمول غير متاح عبر API.

#الأرقام التعريفية

العنصرمثالملاحظات
Merchant IDM00000001رقمك الخاص، ولا يتغيّر أبدًا.
SKU (منتج يمكنك شراؤه)S000456تستخدمه لمعرفة السعر وللطلب.
رقم طلب CardVO-00001234احفظه مع طلبك.
رقم طلبكSHOP-10001تختاره أنت (external_order_id).

احفظ الأرقام التعريفية كنصوص، ولا تحاول تفكيكها. راجع القواعد العامة.

#ما يتم من بوابة التاجر

  • شحن المحفظة، وتنبيه البريد عند انخفاض الرصيد
  • سجل الطلبات والبحث فيها وتصديرها بصيغة CSV
  • فواتير الطلبات
  • حركات المحفظة ومطابقة الحسابات
  • إعداد Webhook، وسجل الإرسال، وإعادة الإرسال
  • مفاتيح API
  • قائمة عناوين IP المسموح بها
  • أعضاء الفريق وأدوارهم
  • سجل التدقيق
  • التحقق بخطوتين (2FA)
  • التبديل بين Live وSandbox

#التوافق والدعم

قد نضيف حقولًا جديدة إلى الردود أو قيمًا جديدة للحالات دون إشعار مسبق. تجاهل الحقول التي لا تعرفها، واعتبر أي حالة طلب غير معروفة "لم يكتمل بعد". لا تعتمد على صياغة رسائل الخطأ.

راسل [email protected] وأرفق Merchant ID، والبيئة، وأرقام الطلبات، والوقت (UTC)، ورمز حالة HTTP. لا ترسل أبدًا مفاتيح API أو التواقيع أو أسرار Webhook أو أكواد البطاقات.

هل لديك سؤال حول التكامل؟ راسلنا على [email protected] مع ذكر Merchant ID ومعرّف الطلب أو الاستدعاء.