إيرادات Stripe اليومية في Slack

كل صباح، شاهد إيرادات الأمس وعدد المدفوعات في Slack.

متوسط توفّر ~2 ساعة شهريًا المالية والإدارةبواسطة فريق Flowngn

تعمل مع n8n · Make · Zapier

كيف تعمل

المشغّل: جدول زمني — كل يوم الساعة 8:00
  1. اجلب أحدث المدفوعات من Stripe.
  2. احتفظ بالمدفوعات الناجحة في آخر 24 ساعة واجمعها.
  3. أرسل الإجمالي والعدد إلى #revenue في Slack.

المخطط

Every day 8:00Schedule TriggerSGet recent chargesStripe{ }Add up revenueCodeSPost to #revenueSlack
مشغّل تطبيق كود

الكود

كود JavaScript المستخدم في خطوات Code، وهو مضمَّن بالفعل في القالب بالأسفل.

Add up revenue · عقدة Code
// Adds up successful charges from the last 24 hours.
const DAY = 24 * 60 * 60;
const since = Math.floor(Date.now() / 1000) - DAY;

const charges = $input.all()
  .map((item) => item.json)
  .filter((c) => c.status === "succeeded" && c.paid && c.created >= since);

const byCurrency = {};
for (const c of charges) {
  const cur = c.currency.toUpperCase();
  byCurrency[cur] = (byCurrency[cur] || 0) + c.amount / 100;
}

const totals = Object.entries(byCurrency)
  .map(([cur, sum]) => `${sum.toFixed(2)} ${cur}`)
  .join(" + ") || "0";

return [{ json: { text: `💰 Last 24h: ${totals} from ${charges.length} payment(s)` } }];

ابنِها بأداتك

اختر أداتك — نفس الأتمتة، خطوة بخطوة.

انسخه والصقه مباشرة في مساحة عمل n8n (Ctrl+V)، أو حمّله واستخدم Import from File. بعد ذلك اربط حساباتك واستبدل كل قيمة تبدأ بـ YOUR_.

ملف Workflow JSON
عرض الكود (130 سطر)
{
  "name": "إيرادات Stripe اليومية في Slack (Flowngn)",
  "nodes": [
    {
      "parameters": {
        "content": "## إيرادات Stripe اليومية في Slack\nكل صباح، شاهد إيرادات الأمس وعدد المدفوعات في Slack.\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": "458223d5-1673-42cd-a93b-ba83e3101aa1",
      "name": "Setup notes",
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        -420,
        -60
      ]
    },
    {
      "parameters": {
        "rule": {
          "interval": [
            {
              "triggerAtHour": 8
            }
          ]
        }
      },
      "id": "458223d5-1673-42cd-a93b-ba83e3101aa1",
      "name": "Every day 8:00",
      "type": "n8n-nodes-base.scheduleTrigger",
      "typeVersion": 1.2,
      "position": [
        0,
        0
      ]
    },
    {
      "parameters": {
        "resource": "charge",
        "operation": "getAll",
        "limit": 100
      },
      "id": "458223d5-1673-42cd-a93b-ba83e3101aa1",
      "name": "Get recent charges",
      "type": "n8n-nodes-base.stripe",
      "typeVersion": 1,
      "position": [
        300,
        0
      ]
    },
    {
      "parameters": {
        "jsCode": "// Adds up successful charges from the last 24 hours.\nconst DAY = 24 * 60 * 60;\nconst since = Math.floor(Date.now() / 1000) - DAY;\n\nconst charges = $input.all()\n  .map((item) => item.json)\n  .filter((c) => c.status === \"succeeded\" && c.paid && c.created >= since);\n\nconst byCurrency = {};\nfor (const c of charges) {\n  const cur = c.currency.toUpperCase();\n  byCurrency[cur] = (byCurrency[cur] || 0) + c.amount / 100;\n}\n\nconst totals = Object.entries(byCurrency)\n  .map(([cur, sum]) => `${sum.toFixed(2)} ${cur}`)\n  .join(\" + \") || \"0\";\n\nreturn [{ json: { text: `💰 Last 24h: ${totals} from ${charges.length} payment(s)` } }];"
      },
      "id": "458223d5-1673-42cd-a93b-ba83e3101aa1",
      "name": "Add up revenue",
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        600,
        0
      ]
    },
    {
      "parameters": {
        "select": "channel",
        "channelId": {
          "__rl": true,
          "value": "#revenue",
          "mode": "name"
        },
        "text": "={{ $json.text }}",
        "otherOptions": {}
      },
      "id": "458223d5-1673-42cd-a93b-ba83e3101aa1",
      "name": "Post to #revenue",
      "type": "n8n-nodes-base.slack",
      "typeVersion": 2.2,
      "position": [
        900,
        0
      ]
    }
  ],
  "connections": {
    "Every day 8:00": {
      "main": [
        [
          {
            "node": "Get recent charges",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get recent charges": {
      "main": [
        [
          {
            "node": "Add up revenue",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Add up revenue": {
      "main": [
        [
          {
            "node": "Post to #revenue",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "pinData": {},
  "settings": {
    "executionOrder": "v1"
  },
  "meta": {
    "templateCredsSetupCompleted": false
  },
  "tags": []
}

← افتحها في ساحة التجربة لتعديلها

نصائح

  • الاستردادات لا تُخصم — أضفها في خطوة Code إذا أردت صافي الإيرادات.

أتمتات مشابهة