تنبيه تيليجرام لمدفوعات Paymob الفاشلة
اعرف فورًا عندما تفشل دفعة عميل، لتتصل به وتنقذ البيعة.
كيف تعمل
المشغّل: Webhook — إشعار معالجة المعاملة من Paymob
- استقبل إشعار المعاملة من Paymob.
- تابع فقط إذا فشلت الدفعة.
- أرسل العميل والمبلغ وسبب الخطأ إلى تيليجرام.
المخطط
مشغّل تطبيق منطق كود
الكود
كود JavaScript المستخدم في خطوات Code، وهو مضمَّن بالفعل في القالب بالأسفل.
// Mode: Run Once for Each Item
// Paymob "transaction processed" callback → clean, easy-to-use fields.
const obj = $json.body?.obj || {};
const billing = obj.order?.shipping_data || obj.payment_key_claims?.billing_data || {};
return {
json: {
success: obj.success === true,
transaction_id: obj.id,
order_id: obj.order?.merchant_order_id || obj.order?.id,
amount: (obj.amount_cents || 0) / 100,
currency: obj.currency,
method: obj.source_data?.sub_type || obj.source_data?.type || "",
customer_name: [billing.first_name, billing.last_name].filter(Boolean).join(" "),
phone: String(billing.phone_number || "").replace(/[^0-9]/g, ""),
email: billing.email || "",
error: obj.data?.message || "",
date: obj.created_at,
},
};ابنِها بأداتك
اختر أداتك — نفس الأتمتة، خطوة بخطوة.
انسخه والصقه مباشرة في مساحة عمل n8n (Ctrl+V)، أو حمّله واستخدم Import from File. بعد ذلك اربط حساباتك واستبدل كل قيمة تبدأ بـ YOUR_.
عرض الكود (143 سطر)
{
"name": "تنبيه تيليجرام لمدفوعات Paymob الفاشلة (Flowngn)",
"nodes": [
{
"parameters": {
"content": "## تنبيه تيليجرام لمدفوعات Paymob الفاشلة\nاعرف فورًا عندما تفشل دفعة عميل، لتتصل به وتنقذ البيعة.\n\n**Setup**\n1. Open each node and connect your own credentials.\n2. Replace every YOUR_… placeholder.\n3. Test once, then activate.\n\nFree template from Flowngn",
"height": 260,
"width": 340
},
"id": "43ef56f7-3e64-497c-a29d-9f8e7687325e",
"name": "Setup notes",
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
-420,
-60
]
},
{
"parameters": {
"httpMethod": "POST",
"path": "paymob-failed",
"options": {}
},
"id": "43ef56f7-3e64-497c-a29d-9f8e7687325e",
"name": "Paymob callback",
"type": "n8n-nodes-base.webhook",
"typeVersion": 2,
"position": [
0,
0
],
"webhookId": "43ef56f7-3e64-497c-a29d-9f8e7687325e"
},
{
"parameters": {
"jsCode": "// Mode: Run Once for Each Item\n// Paymob \"transaction processed\" callback → clean, easy-to-use fields.\nconst obj = $json.body?.obj || {};\nconst billing = obj.order?.shipping_data || obj.payment_key_claims?.billing_data || {};\n\nreturn {\n json: {\n success: obj.success === true,\n transaction_id: obj.id,\n order_id: obj.order?.merchant_order_id || obj.order?.id,\n amount: (obj.amount_cents || 0) / 100,\n currency: obj.currency,\n method: obj.source_data?.sub_type || obj.source_data?.type || \"\",\n customer_name: [billing.first_name, billing.last_name].filter(Boolean).join(\" \"),\n phone: String(billing.phone_number || \"\").replace(/[^0-9]/g, \"\"),\n email: billing.email || \"\",\n error: obj.data?.message || \"\",\n date: obj.created_at,\n },\n};",
"mode": "runOnceForEachItem"
},
"id": "43ef56f7-3e64-497c-a29d-9f8e7687325e",
"name": "Read payment",
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
300,
0
]
},
{
"parameters": {
"conditions": {
"options": {
"caseSensitive": true,
"leftValue": "",
"typeValidation": "loose"
},
"conditions": [
{
"id": "c1",
"leftValue": "={{ $json.success }}",
"rightValue": "",
"operator": {
"type": "boolean",
"operation": "false",
"singleValue": true
}
}
],
"combinator": "and"
},
"options": {}
},
"id": "43ef56f7-3e64-497c-a29d-9f8e7687325e",
"name": "Failed?",
"type": "n8n-nodes-base.if",
"typeVersion": 2.2,
"position": [
600,
0
]
},
{
"parameters": {
"chatId": "YOUR_CHAT_ID",
"text": "=❌ دفعة فاشلة على Paymob\n💰 {{ $json.amount }} {{ $json.currency }} · طلب #{{ $json.order_id }}\n👤 {{ $json.customer_name }} · 📞 {{ $json.phone }}\n⚠️ {{ $json.error || 'بدون سبب' }}",
"additionalFields": {
"appendAttribution": false
}
},
"id": "43ef56f7-3e64-497c-a29d-9f8e7687325e",
"name": "Alert on Telegram",
"type": "n8n-nodes-base.telegram",
"typeVersion": 1.2,
"position": [
900,
0
]
}
],
"connections": {
"Paymob callback": {
"main": [
[
{
"node": "Read payment",
"type": "main",
"index": 0
}
]
]
},
"Read payment": {
"main": [
[
{
"node": "Failed?",
"type": "main",
"index": 0
}
]
]
},
"Failed?": {
"main": [
[
{
"node": "Alert on Telegram",
"type": "main",
"index": 0
}
]
]
}
},
"pinData": {},
"settings": {
"executionOrder": "v1"
},
"meta": {
"templateCredsSetupCompleted": false
},
"tags": []
}في Make، أنشئ سيناريو جديدًا وأضف هذه الوحدات بالترتيب:
- Webhooks › Custom webhook
- Tools › Set variable / Iterator + Array aggregator (same logic as the Code step)
- Filter on the next route: “Failed?”
- إذا نعمTelegram Bot › Send a Text Message or a Reply
- كل تشغيل لوحدة يستهلك عمليات (operations) في Make — والباقة المجانية تتضمن حصة شهرية.
- دوال Make المدمجة (map و sum و formatDate…) تغني عن معظم خطوات Code؛ وللمنطق المعقد استخدم وحدة كود.
- قد تختلف أسماء الوحدات والخطوات قليلًا مع تحديث Make و Zapier لتطبيقاتهما.
في Zapier، أنشئ Zap جديدًا وأضف هذه الخطوات بالترتيب:
- Webhooks by Zapier — Catch Hook
- Code by Zapier — Run JavaScript (paste the code from the Code section)
- Filter by Zapier: “Failed?”
- إذا نعمTelegram — Send Message
- الـ Zaps التي فيها أكثر من خطوتين تحتاج باقة Zapier مدفوعة.
- الـ Webhooks والفلاتر/المسارات و Code by Zapier ميزات مدفوعة في بعض باقات Zapier.
- Code by Zapier يشغّل JavaScript: أعد استخدام الكود بالأعلى، مع قراءة المدخلات من inputData بدلًا من $json.
- قد تختلف أسماء الوحدات والخطوات قليلًا مع تحديث Make و Zapier لتطبيقاتهما.
نصائح
- مكالمة سريعة أو رسالة واتساب للعميل غالبًا تستعيد الطلب.
أتمتات مشابهة
تطبيقات المنطقةمتقدم
تحقق من إشعارات Paymob باستخدام HMAC
افحص توقيع Paymob في كل إشعار حتى تُرفض رسائل الدفع المزيفة.
Paymob → Telegram1 س/شهر
تطبيقات المنطقةمتوسط
إيصال واتساب لمدفوعات Paymob
عند نجاح دفعة عبر Paymob، يصل العميل إيصال على واتساب فورًا.
Paymob → WhatsApp5 س/شهر
تطبيقات المنطقةسهل
سجّل كل مدفوعات Paymob في Google Sheets
كل معاملة Paymob، ناجحة أو فاشلة، تصبح صفًا في جدولك.
Paymob → Google Sheets4 س/شهر