واجهة non-voip للتجار v1
واجهة عامة للعملاء مخصصة للتكامل بين الخوادم. لا تشمل واجهات العميل والإدارة الداخلية.
الرابط الأساسي والمصادقة
الرابط الأساسي
https://non-voip-api.0246864.xyz/api/v1استخدم هذا المضيف لجميع طلبات Merchant API.
المصادقة
جميع نقاط النهاية تتطلب مفتاح API. احتفظ به على خادمك وأضفه إلى ترويسة كل طلب.
X-Api-Key: YOUR_MERCHANT_API_KEYالبدء السريع
- أنشئ مفتاح Merchant API من لوحة API واحتفظ به على خادمك. يتطلب إنشاء المفتاح وتدويره واستخدامه اشتراكاً نشطاً في فئة merchant.
- أرسل X-Api-Key مع كل طلب.
- اقرأ الكتالوج، ثم أنشئ عملية تحقق باستخدام productServiceId ومفتاح Idempotency-Key فريد.
- استعلم عن عملية التحقق حتى تحتوي data.messages على رمز. عمليات الرسالة الواحدة تنتقل عادةً إلى completed وليس otp_received.
export NV_API_KEY='nvr_live_...'
API='https://non-voip-api.0246864.xyz/api/v1'
PRODUCT_SERVICE_ID=$(curl --fail-with-body --silent --show-error "$API/catalog?test=true" -H "X-Api-Key: $NV_API_KEY" | jq -r '.data[0].productServiceId')
VERIFICATION_ID=$(curl --fail-with-body --silent --show-error -X POST "$API/verifications?test=true" -H "X-Api-Key: $NV_API_KEY" -H "Idempotency-Key: $(uuidgen)" -H "Content-Type: application/json" -d "{"productServiceId":"$PRODUCT_SERVICE_ID"}" | jq -r '.data.verificationId')
for _ in $(seq 20); do
curl --fail-with-body --silent --show-error --max-time 15 "$API/verifications/$VERIFICATION_ID?test=true" -H "X-Api-Key: $NV_API_KEY" | jq -e '.data.messages[0].code' && break
sleep 5
doneأساسيات التكامل في الإنتاج
على الخادم فقط
احتفظ بمفاتيح API في خادمك أو وظائف serverless. لا تعرضها في JavaScript المتصفح أو تطبيقات الهاتف.
استجابات بإصدار محدد
تبدأ كل المسارات بـ /api/v1. اقرأ النتائج الناجحة من data وتعامل مع حالة HTTP ورمز التطبيق عند الخطأ.
إعادة المحاولة والحدود
أرسل Idempotency-Key مع عمليات الكتابة وأعد استخدامه عند المحاولة مجددًا. احترم ترويسات X-RateLimit-* و Retry-After.
وضع الاختبار (بدون خصم حقيقي)
أضف ?test=true للحصول على بيانات حتمية بنفس شكل الإنتاج دون استدعاء المزود أو خصم الرصيد. تبقى المصادقة والتسجيل وحدود الطلبات مطبقة.
إشعارات Webhook
اضبط رابط HTTPS والأحداث المطلوبة من لوحة API. الأحداث هي verification.created و verification.otp_received و verification.completed و verification.expired و verification.cancelled و verification.failed.
تصل رموز خدمات الرسالة الواحدة مع verification.completed. وقد ترسل خدمات الرسائل المتعددة verification.otp_received قبل الاكتمال. وهذا أكثر ما يُخطئ فيه المطورون: إذا اشتركت في verification.otp_received وحده فقد لا يصلك أي شيء إطلاقاً في تكامل الرسالة الواحدة، لذا اشترك دائماً في verification.completed أيضاً.
تحقق من X-Webhook-Signature باعتباره HMAC-SHA256 بأحرف صغيرة لجسم الطلب الخام، وأعد 2xx خلال 10 ثوانٍ. تُنفَّذ كل عملية تسليم بحد أقصى 5 محاولات بتباعد أسّي، أي محاولة واحدة وأربع إعادات. تُبنى الحمولة من جديد في كل محاولة، لذا يختلف كل من timestamp وX-Webhook-Signature في كل مرة؛ لا تخزّن التوقيع أو تعِد استخدامه بين المحاولات. أما X-Webhook-Delivery فيبقى ثابتاً عبرها، ولهذا فهو الحقل الذي تمنع التكرار به.
أبقِ نقطة الاستقبال متاحة. بعد 5 عمليات تسليم متتالية تستنفد كل محاولاتها، يعطّل non-voip الـ webhook تلقائياً ويمسح الرابط ومفتاح التوقيع والأحداث المشترك بها. سيصلك إشعار، لكن لن يُسلَّم شيء بعد ذلك حتى تعيد تسجيل الرابط من لوحة API وتنشئ مفتاح توقيع جديداً — فالانقطاع الطويل يكلّفك الإعدادات نفسها، لا الأحداث الفائتة وحدها.
مثال على الحمولة
{
"event": "verification.completed",
"timestamp": "2026-08-27T10:00:00.000Z",
"balance": 124.5,
"data": {
"subscriptionId": "550e8400-e29b-41d4-a716-446655440000",
"phoneNumber": "+15550001234",
"otpCode": "483920",
"messages": [
{
"code": "483920",
"message": "Your verification code is 483920",
"receivedAt": "2026-08-27T09:59:58.000Z"
}
],
"status": "completed",
"productServiceId": "0f1a5a6c-1c2d-4f2b-9a1e-3c9d4b7e2f10"
}
}التاجر - الرصيد
التاجر - الكتالوج
التاجر - عمليات التحقق
موارد
أنشئ مفاتيح API وأدر إعدادات webhook.
مرجع تفاعلي لواجهة Merchant API v1 العامة فقط؛ لا يشمل واجهات العميل والإدارة الداخلية.
تحتاج مساعدة في التكامل؟ تواصل معنا عبر support@non-voip.com.

