No signatures found matching the expected signature for payload ترجمتها «ما لقينا توقيع يطابق التوقيع المتوقع لهذا المحتوى»، ومعناها: سيرفرك رفض إشعار الدفع اللي أرسله Stripe، لأنه ما قدر يتأكد إنه فعلًا من Stripe. الدفع ينجح في Stripe، لكن الطلب في منتجك ما يتحدّث.
الترجمة كلمة بكلمة
| الرسالة | الترجمة | إيش تعني |
|---|---|---|
webhook | إشعار تلقائي | رسالة يرسلها Stripe لسيرفرك لما ينجح الدفع أو يتغيّر شي |
No signatures found matching the expected signature for payload | ما فيه توقيع يطابق التوقيع المتوقع للمحتوى | التوقيع اللي حسبه سيرفرك غير اللي أرسله Stripe |
Are you passing the raw request body you received from Stripe? | هل تمرّر نص الطلب الخام اللي وصلك من Stripe؟ | سؤال Stripe نفسه، ويأشّر على السبب الأشهر |
Stripe-Signature | توقيع Stripe | الهيدر اللي فيه التوقيع |
Timestamp outside the tolerance zone | الوقت خارج المدى المسموح | خطأ قريب: التوقيع سليم، لكن الإشعار قديم بالنسبة لساعة سيرفرك |
التوقيع محسوب على النص الخام حرف بحرف، ومن سر خاص يبدأ بـ whsec_. أي تغيير في النص، أو سر غلط، والتوقيع ما يطابق.
وين تشوفها
في سجل السيرفر، أو في سجلات Edge Function إذا منتجك على Supabase، وفي لوحة Stripe عند الـ webhook، حيث يبان إن الإرسال فشل. العميل ما يشوف شي، يشوف إن دفع وطلبه ما تفعّل. والرسالة ما تتترجم للعربي، لأنها من مكتبة Stripe كما هي.
مشكلتك ولا مشكلة الموقع؟
- إذا أنت عميل: دفعتك غالبًا وصلت. احتفظ بإيصال الدفع وتواصل مع صاحب المنتج.
- إذا المنتج منتجك: الأسباب الأشهر: إطار العمل حوّل النص لـ JSON قبل الفحص، أو السر غلط (وضع التجربة غير الوضع الحقيقي، وسر
stripe listenغير سر لوحة Stripe)، أو السر ناقص في إعدادات النشر.
إيش تكتب لـ Lovable أو Bolt أو Cursor
أخطر اقتراح: «احذف سطر فحص التوقيع واقرأ JSON مباشرة». الدفع يرجع يشتغل، وفي نفس اللحظة أي أحد يقدر يرسل لسيرفرك «تم الدفع» بدون ما يدفع ريال. انسخ الرسالة كاملة، وانسخ هذا:
Stripe webhooks fail with "No signatures found matching the expected signature for payload".
The endpoint runs on <Next.js / Express / Supabase Edge Function>.
Check that the handler verifies the raw request body before any JSON parsing,
that the secret is the whsec_ secret of this endpoint and this mode (test or live),
and that the secret is set in the deployed environment. On Supabase Edge Functions,
use constructEventAsync. Never remove or skip the signature check.الحل خطوة بخطوة
كيف تتأكد بنفسك، والحل الصح، في درس Stripe: No signatures found matching the expected signature. وقبل ما تفعّل الدفع الحقيقي، راجع قبل لا تفعّل الدفع في منتجك: 6 أشياء تتأكد منها.
وإذا الدفع ينجح وطلبات عملائك ما تتفعّل الحين، حل مشاكل تطبيقك يبدأ بتشخيص مكتوب قبل أي تعديل.