รู้ทันทีที่มีคนส่งน้ำใจ แล้วให้ระบบทำงานต่อเอง

ภาษาคนทุกครั้งที่ทิปถูกยืนยัน Tipjai จะส่งข้อความสั้น ๆ ไปบอกบริการอย่าง Zapier แล้วคุณตั้งให้มันทำอะไรต่อก็ได้ เช่น จดลง Google Sheets หรือแจ้งเข้า Discord

ข้อจำกัดตอนนี้ปลายทางต้องเป็นลิงก์ของ Zapier, Make หรือ IFTTT เท่านั้น ตั้งได้ในแดชบอร์ดที่การ์ด เชื่อมต่ออัตโนมัติ (Zapier / Make / IFTTT)

ไอเดียที่ทำได้ทันที
  • จดทุกทิปลง Google Sheetsรับ webhook แล้วเพิ่มแถวใหม่ ชื่อ ยอด ข้อความ ครบในตาราง
  • ขอบคุณในห้อง Discordส่งข้อความเข้าห้องทุกครั้งที่มีคนส่งน้ำใจ
  • ไฟในห้องกระพริบต่อกับหลอดไฟอัจฉริยะ ให้ไฟวาบทุกครั้งที่ทิปเข้า
ทำตามทีละขั้น

ต่อทิปเข้า Google Sheets อัตโนมัติ

ไม่ต้องเขียนโค้ด ใช้ Make หรือ Zapier ที่มีแพลนฟรี ถ้าแค่อยากได้ไฟล์ไว้ยื่นภาษี ปุ่ม ดาวน์โหลด CSV ในแดชบอร์ดง่ายกว่า

  1. 1
    สมัคร Make หรือ Zapier
  2. 2
    สร้าง scenario ใหม่ เลือก trigger Webhooks แล้ว Custom webhook คัดลอกลิงก์ที่ได้
  3. 3
    วางลิงก์นั้นในการ์ด เชื่อมต่ออัตโนมัติ บนแดชบอร์ด Tipjai แล้วกด บันทึก
  4. 4
    กด ส่งทดสอบ ปลายทางจะได้ event พร้อมฟิลด์ supporter, amount และ message
  5. 5
    เพิ่ม action Google Sheets แบบ Add a Row แล้วลากแต่ละฟิลด์ลงคอลัมน์
  6. 6
    เปิด scenario ไว้ ทุกทิปจะลงชีตเอง
แกะดูข้างใน

หนึ่งคำขอ แยกออกเป็นสามชั้น

ตัวอย่างนี้คำนวณลายเซ็นจริงด้วย secret ตัวอย่าง ลองเอาไปตรวจในกล่องด้านล่างได้

ชั้นที่ 1 HeadersPOST
POST https://hooks.zapier.com/hooks/catch/…
Content-Type: application/json; charset=utf-8
User-Agent: Tipjai-Webhook/1.0
Idempotency-Key: 8c2f4e1a-6b3d-4f7e-9a2c-1d5e8f0b3a47
X-Tipjai-Delivery: 8c2f4e1a-6b3d-4f7e-9a2c-1d5e8f0b3a47
X-Tipjai-Event: tip.confirmed
X-Tipjai-Timestamp: 1790501464
X-Tipjai-Signature: v1=e8a89c93dfba1464…7ceba520
  • ได้ id เดิมซ้ำ แปลว่าเป็นงานเดิมที่ส่งซ้ำ ข้ามได้เลย
  • Timestamp เป็นเวลาแบบ Unix หน่วยวินาที คำนวณใหม่ทุกครั้งที่ส่ง รวมถึงตอนส่งซ้ำ
ชั้นที่ 2 ลายเซ็นHMAC-SHA256
hmac_sha256(
  secret,
  "1790501464" + "." + body ดิบ
) → hex แล้วนำหน้าด้วย v1=
  • เซ็นจาก body ดิบเท่านั้น ห้าม parse แล้วแปลงกลับเป็นข้อความก่อนตรวจ
ชั้นที่ 3 Bodyส่งจริงเป็นบรรทัดเดียว ลำดับตามนี้
{ "id": "8c2f4e1a-…-1d5e8f0b3a47",
  "data": { "gift": { "id": "rose", "qty": 3, "name": "กุหลาบ" },
    "amount": 30, "tip_id": "e7a1c3f5-…-9d1b3f5e7a2c",
    "message": "สู้ ๆ นะครับ", "currency": "THB",
    "supporter": "แฟนคลับหมายเลข 1", "verification": "verified" },
  "event": "tip.confirmed",
  "created_at": "2026-09-27T09:31:04.221+00:00",
  "schema_version": 1 }
  • กุหลาบดอกละ ฿10 สามดอก ยอดจึงเป็น 30
ลำดับการส่ง

ส่งยังไง และถ้าพลาดจะเกิดอะไร

  1. 1ทิปถูกยืนยัน

    ตามการตั้งค่าของครีเอเตอร์ ระดับการยืนยันอยู่ในฟิลด์ verification

  2. 2เข้าคิวส่ง

    งานถูกเก็บในคิวก่อน ไม่หายแม้ปลายทางล่มชั่วคราว

  3. 3ส่ง POST

    รอคำตอบนานสุด 5 วินาที และไม่ตาม redirect

  4. 4ได้ 2xx คือสำเร็จ

    ตอบ 200 ถึง 299 แปลว่ารับแล้ว จบงานนี้

  5. 5ไม่ใช่ 2xx ส่งซ้ำเอง

    ลองใหม่อัตโนมัติได้นานถึง 24 ชั่วโมง ด้วย id เดิม

ปิด webhook หรือเปลี่ยนปลายทาง งานที่ยังค้างในคิวจะถูกยกเลิก ไม่ถูกส่งไปที่เดิมอีก

กด เปลี่ยน secret เมื่อไหร่ งานที่ค้างอยู่จะถูกเซ็นด้วย secret ใหม่ก่อนส่ง

งานที่ส่งไม่สำเร็จจนหมดเวลา กด ส่งรายการค้างอีกครั้ง ในการ์ดเดียวกันได้

ตรวจลายเซ็น

มั่นใจว่ามาจาก Tipjai จริง

คัดลอก secret ได้จากการ์ดเชื่อมต่ออัตโนมัติในแดชบอร์ด ถ้าใช้ Zapier ให้เลือกตัวรับแบบ Catch Raw Hook เพื่อให้ได้ body ดิบ แล้วตรวจในขั้น Code by Zapier ด้วยโค้ดชุดเดียวกันนี้

import { createHmac, timingSafeEqual } from "node:crypto";

// rawBody คือข้อความดิบที่ได้รับ ยังไม่ผ่าน JSON.parse
export function verifyTipjai(rawBody, headers, secret) {
  const ts = headers["x-tipjai-timestamp"];
  const got = String(headers["x-tipjai-signature"] || "");
  const want = "v1=" + createHmac("sha256", secret)
    .update(`${ts}.${rawBody}`)
    .digest("hex");
  const fresh = Math.abs(Date.now() / 1000 - Number(ts)) < 300;
  return fresh && got.length === want.length &&
    timingSafeEqual(Buffer.from(got), Buffer.from(want));
}
ลองตรวจเองคำนวณในเบราว์เซอร์ ไม่ส่งไปไหน
ลายเซ็นตรง ข้อความนี้มาจาก Tipjai และไม่ถูกแก้คำนวณได้ v1=e8a89c93dfba146423e4d8c17f…
ฟิลด์ใน body

schema_version 1

ฟิลด์ชนิดคำอธิบาย
iduuidรหัสของการส่งครั้งนี้ ค่าเดียวกับ Idempotency-Key
eventstringtip.confirmed หรือ tip.test
created_attimestampเวลาที่ทิปถูกยืนยัน
schema_versionnumberตอนนี้เป็น 1
data.tip_iduuidรหัสทิป
data.supporterstringชื่อคนส่ง ถ้าเว้นว่างจะเป็น ผู้สนับสนุน
data.amountnumberยอดเงิน
data.currencystringสกุลเงิน ปกติเป็น THB
data.messagestringข้อความจากคนส่ง ไม่มีจะเป็นค่าว่าง
data.verificationstringระดับการยืนยัน เช่น verified หรือ creator_confirmed
data.giftobject | nullid, name, qty เมื่อทิปมาพร้อมของขวัญ
event ที่มีตอนนี้
tip.confirmed

ส่งทุกครั้งที่ทิปถูกยืนยัน

tip.test

กด ส่งทดสอบ จากแดชบอร์ด ยอดเป็น 0 และ verification เป็น test

ถามคู่มือdocs.tipjai.com
เริ่มใช้ Tipjai ในสามขั้นเริ่มต้น↵เอาการ์ดน้ำใจขึ้น OBSขึ้นจอ / OBS Studioใส่ลิงก์การ์ดใน TikTok LIVE Studioขึ้นจอ / TikTok LIVE Studioแต่งการ์ดใน Overlay Studioขึ้นจอ / Overlay Studioเลือกเสียงอ่านข้อความลูกเล่น / เสียงอ่านตั้งพร้อมเพย์และช่องทางรับเงินรับเงิน / ช่องทางรับเงินส่งทิปยังไง และเงินไปไหนคนส่งทิปสลิปทำงานยังไง ป้ายบนทิปแปลว่าอะไรรับเงิน / สลิปยืนยันอัตโนมัติ ไม่ต้องแนบสลิปรับเงิน / ยืนยันอัตโนมัติซองอั่งเปา TrueMoneyรับเงิน / ช่องทางอื่นสรุปรายรับสำหรับยื่นภาษีรับเงิน / ภาษีโคลนเสียงของคุณเองลูกเล่น / เสียงอ่านแฟนอัดเสียงตัวเองขึ้นจอลูกเล่น / เสียงอ่านฟีเจอร์ทั้งหมดของ Tipjaiฟีเจอร์ทั้งหมดหลอดโด Subathon และวิดเจ็ตบนจอฟีเจอร์ / ลูกเล่นบนจออัปเดตล่าสุดของ Tipjaiอัปเดต
ทิปจากคอม แต่สลิปอยู่ในมือถือแก้ปัญหา / คนส่งทิปการ์ดไม่เด้งบน OBSแก้ปัญหา / ขึ้นจอไม่ได้ยินเสียงอ่านแก้ปัญหา / ขึ้นจอการ์ดเล็กไปหรือภาพแตกแก้ปัญหา / ขึ้นจอTikTok LIVE Studio การ์ดไม่ขยับแก้ปัญหา / ขึ้นจอสลิปไม่ผ่านแก้ปัญหา / รับเงินแฟนเปิดจาก TikTok แล้วแนบสลิปไม่ได้แก้ปัญหา / คนส่งทิปไม่อยากให้ใครเห็นยอดรวมแก้ปัญหา / ความเป็นส่วนตัว
ลิงก์การ์ดและวิดเจ็ต (Overlay URL)นักพัฒนา / Overlay URLWebhook tip.confirmedนักพัฒนา / Webhookดึงโปรไฟล์ครีเอเตอร์ GET /api/v1/creatorนักพัฒนา / REST APIRemote MCP สำหรับ agentนักพัฒนา / Remote MCPปุ่มทิปฝังเว็บ embed.jsนักพัฒนา / ปุ่มฝังเว็บ
↑↓เลือก↵เปิดescปิดค้นได้ทั้งคำไทยที่เขียนติดกัน และคำอังกฤษ