المطورون/البداية
واجهة CardV API للتجار
تبيع CardV للشركات منتجات رقمية مدفوعة مسبقًا، مثل بطاقات الهدايا وشحن الألعاب وشرائح eSIM. تتيح لك واجهة API للتجار شراء هذه المنتجات تلقائيًا من خادمك. تتحقق من رصيدك، وتختار المنتج، وتعرف سعره، ثم تطلبه وتستلم الأكواد. تُدفع قيمة الطلبات من محفظتك المدفوعة مسبقًا لدى CardV. أما باقي المهام، مثل شحن المحفظة والاطلاع على سجل الطلبات، فتتم من بوابة التاجر.
#الوثائق
| الوثيقة | محتواها |
|---|---|
| المصادقة | الترويسات، وتوقيع الطلبات، وإعداد المفتاح |
| المنتجات والطلبات | الرصيد، وسعر الصرف، والمنتجات، والأسعار، والطلبات، والأكواد |
| شحن رصيد الهاتف المحمول | شحن الهواتف: المشغّلون، وعروض الأسعار، وطلبات الشحن |
| القواعد العامة | المبالغ، والتواريخ، والأرقام التعريفية، وحد الطلبات، والأخطاء |
| Webhook | إشعارات الطلبات التي تصل إلى خادمك |
| بيئة Sandbox | الاختبار، وقائمة التحقق قبل التشغيل الفعلي |
| الأمان | حماية المفاتيح والأكواد |
#البيئات
| Live | Sandbox | |
|---|---|---|
| عنوان API الأساسي | https://b2b.cardv.net/api/v1 | https://sandbox.cardv.net/api/v1 |
| بوابة التاجر | https://b2b.cardv.net/portal/ | البوابة نفسها، مع التبديل إلى Sandbox |
بيئة Sandbox نسخة تجريبية منفصلة من CardV، تعمل بأموال تجريبية. المفاتيح والأرصدة والطلبات وأرقام المنتجات مختلفة في كل بيئة.
#البدء السريع
قدّم طلبًا لفتح حساب تاجر من البوابة، ثم أكّد بريدك الإلكتروني.
انتظر الموافقة. تراجع CardV بيانات شركتك، ثم تحصل على Merchant ID (رقم التاجر)، مثل
M00000001.افتح Sandbox. سجّل الدخول إلى البوابة واختر Sandbox من الشريط العلوي. ستجد في حسابك 1,000 USD من الأموال التجريبية.
أنشئ مفتاح API. في البوابة، اذهب إلى Integrations → API keys. أنشئ مفتاحًا. تعرض البوابة key ID وسرّ التوقيع مرة واحدة فقط. احفظ السرّ في مخزن الأسرار لديك.
تحقق من رصيدك:
export CARDV_BASE=https://sandbox.cardv.net export CARDV_KEY_ID=ck_test_... # shown in the Portal export CARDV_SIGNING_SECRET=cs_test_... # from your secret store cardv_get() { # every call is signed, see Authentication local ts nonce sig ts=$(date +%s); nonce=$(openssl rand -hex 16) sig=$(printf 'GET\n%s\n%s\n%s\n%s' "$1" "$ts" "$nonce" \ e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 \ | openssl dgst -sha256 -hmac "$CARDV_SIGNING_SECRET" -hex | sed 's/^.*= //') curl -sS "$CARDV_BASE$1" -H "X-Key-Id: $CARDV_KEY_ID" \ -H "X-Timestamp: $ts" -H "X-Nonce: $nonce" -H "X-Signature: $sig" } cardv_get "/api/v1/balance"ابحث عن منتج:
cardv_get "/api/v1/skus?search=steam&limit=20"اختر منتجًا متاحًا (
"availability": "available")، وسجّل رقمهsku_id.اعرف السعر:
cardv_get "/api/v1/skus/S000001/quote?quantity=1"سجّل قيمة
merchant_price، فهي ما تدفعه عن الوحدة الواحدة.أرسل الطلب. وقّعه كما توقّع كل استدعاء. استخدم أحد الأمثلة في المصادقة مع هذا المحتوى:
{ "external_order_id": "TEST-0001", "items": [ {"sku_id": "S000001", "quantity": 1, "expected_unit_price": "9.25"} ] }ستتلقى HTTP 201 ومعه رقم طلب CardV، مثل
O-00001234.استلم الأكواد. استدعِ
GET/api/v1/orders/O-00001234حتى تصبح الحالةsucceeded. تجد الأكواد فيitems[].deliveries[]:card_numberوpin_codeوredeem_url. ويمكنك أيضًا أن تتلقى إشعار Webhook عند اكتمال الطلب.انتقل إلى التشغيل الفعلي (Live) بعد إكمال قائمة التحقق في Sandbox.
الأرقام والأسعار أعلاه مجرد أمثلة. استخدم القيم التي تظهر في قائمة منتجاتك.
#نظرة سريعة على الواجهة
تضم الواجهة ست عشرة نقطة نهاية، وتبدأ كل المسارات بـ /api/v1.
| نقطة النهاية | الغرض منها | تحتاج توقيعًا؟ |
|---|---|---|
GET/account | بيانات شركتك وحالة وصولك إلى API | لا |
GET/balance | المبلغ المتاح لك للشراء | لا |
GET/fx-rates | سعر الصرف من USD للمتاجر التي تبيع بعملة أخرى | لا |
GET/products | قائمة المنتجات، كل منتج مع جميع وحدات SKU | لا |
GET/products/{product_id} | منتج واحد مع وحدات SKU والنصوص الكاملة | لا |
GET/skus | قائمة المنتجات المتاحة لك مع سعرك | لا |
GET/skus/{sku_id} | منتج واحد | لا |
GET/skus/{sku_id}/quote | السعر الحالي لكمية معيّنة | لا |
POST/orders | إرسال طلب يُدفع من محفظتك | نعم |
GET/orders/{order_id} | حالة الطلب وأكواده | لا |
GET/recharge/countries | الدول التي يمكنك الشحن فيها | لا |
GET/recharge/operators | مشغّلو الهاتف والمبالغ في دولة ما | لا |
POST/recharge/quote | سعر عملية شحن رصيد هاتف واحدة | نعم |
POST/recharge/orders | شحن رصيد هاتف، ويُدفع من محفظتك | نعم |
GET/recharge/orders | قائمة طلبات الشحن الخاصة بك | لا |
GET/recharge/orders/{order_id} | حالة طلب الشحن | لا |
أي نقطة نهاية أخرى تُرجع HTTP 403 عند استدعائها بمفتاح API:
{"detail": "This operation is only available in the Merchant Portal."}شحن رصيد الهاتف المحمول مشروح في شحن رصيد الهاتف المحمول.
#الأرقام التعريفية
| العنصر | مثال | ملاحظات |
|---|---|---|
| Merchant ID | M00000001 | رقمك الخاص، ولا يتغيّر أبدًا. |
| SKU (منتج يمكنك شراؤه) | S000456 | تستخدمه لمعرفة السعر وللطلب. |
| رقم طلب CardV | O-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 ومعرّف الطلب أو الاستدعاء.