App ID
UUID عام يحدد تطبيقك. آمن في تطبيقات الجوال مع المفتاح القابل للنشر.
المفتاح القابل للنشر (pk_live_)
لـ POST /v1/sdk/token فقط. مرتبط بـ package + SHA256.
المفتاح السري (sk_live_)
للخادم فقط. لا تضعه في تطبيقات الجوال.
SDK Token (JWT)
JWT قصير (~180 ث) من /v1/sdk/token. يُستخدم كـ Bearer للتحقق.
JWT لوحة التحكم
access + refresh لتسجيل الدخول وإدارة المنظمة.
Package Name
applicationId Android. عدم التطابق → package_mismatch.
Android SHA256
بصمة 64 hex. keytool -list -v. غير مسجل → signature_not_registered.
HTTPS
Webhooks تتطلب HTTPS. عناوين خاصة مرفوضة.
مفاتيح test
sk_test_/pk_test_ — بوابات حقيقية وتستهلك رصيداً. لا تستخدمها في builds الإنتاج.
Receipt JWT
إثبات موقّع. تحقق عبر POST /v1/receipts/verify. استخدام مكرر → SH_014.
حماية Replay
nonce فريد في طلب token. JWT قصير العمر. Receipts لمرة واحدة.
عمر الرموز
| الرمز | TTL افتراضي |
|---|---|
| SDK JWT | ~180 ثانية |
| جلسة التحقق | 300 ثانية |
| JWT لوحة التحكم | قصير + refresh |
توقيع Webhook
HMAC-SHA256 للجسم JSON. Header: X-Shernova-Signature: sha256=<hex>.
كيف يثبت التحقق ملكية الرقم
Shernova لا ترسل SMS ولا تقرأ سجل مكالمات المستخدم. تُثبت الملكية عندما يتصل نفس الرقم الذي أدخله المستخدم برقم البوابة المخصص أثناء جلسة نشطة.
- التطبيق ينشئ جلسة برقم المستخدم بصيغة E.164.
- Shernova تخصص رقم بوابة وتحجز رصيداً واحداً.
- يجب أن يتصل المستخدم من ذلك الهاتف قبل انتهاء TTL (300 ث افتراضياً).
- جهاز البوابة يرسل caller ID؛ API يطابق المتصل بالجلسة.
- عند التطابق: verified + receipt JWT موقّع.
المكالمات لا تُسجّل — فقط metadata المتصل للمطابقة. راجع البنية.
قائمة أمان
خزّن الأسرار في مدير آمن، ودوّر المفاتيح بعد الحوادث، وتحقق من توقيع Webhook، واستخدم HTTPS دائماً. راجع أفضل الممارسات.
