n8n Thai
by n8n Thai

เชื่อมต่อ Payment Gateway กับ n8n: Stripe, Omise, PromptPay

คู่มือเชื่อม n8n กับ Payment Gateway ยอดนิยม Stripe, Omise และ PromptPay เพื่อจัดการ payment events, ออกใบเสร็จ และอัปเดตออเดอร์อัตโนมัติ

เชื่อมต่อ Payment Gateway กับ n8n: Stripe, Omise, PromptPay

Payment Gateway กับ n8n ทำงานร่วมกันอย่างไร

Payment Gateway ทุกเจ้าที่ทันสมัยมีระบบ Webhook ส่งแจ้งเตือนทุกครั้งที่มี payment event เช่น charge สำเร็จ, การชำระเงินล้มเหลว, หรือมีการ refund n8n รับ Webhook เหล่านี้แล้วดำเนินการต่อโดยอัตโนมัติ เช่น ส่งใบเสร็จ, อัปเดตสถานะออเดอร์, แจ้ง admin และ sync ข้อมูลเข้าระบบบัญชี

บทความนี้เป็นส่วนหนึ่งของคลัสเตอร์ Automation สำหรับร้านค้าออนไลน์ด้วย n8n

เปรียบเทียบ Payment Gateway สำหรับร้านออนไลน์ไทย

ประเด็นStripeOmise (Opn Payments)PromptPay (ผ่าน Bank API)
n8n Nodeมีไม่มี (ใช้ HTTP Request)ไม่มี (ใช้ HTTP Request)
Webhook Supportดีมากดีขึ้นกับ Bank
บัตรต่างประเทศดีที่สุดดีไม่รองรับ
PromptPayไม่รองรับรองรับรองรับ
ค่าธรรมเนียม3.6%3.65%ต่ำมาก
เหมาะกับร้านที่มีลูกค้าต่างชาติร้านไทยทั่วไปร้านที่ต้องการประหยัด fee

ส่วนที่ 1: Stripe + n8n

ข้อดีของ Stripe

Stripe มี node สำเร็จรูปใน n8n ที่รองรับ operations หลายอย่าง ทำให้ integrate ง่ายที่สุดในบรรดา payment gateway ทั้งหมด

ตั้งค่า Stripe Credential ใน n8n

  1. ไปที่ Stripe Dashboard → Developers → API Keys
  2. Copy Secret Key (ใช้ sk_test_ สำหรับทดสอบ, sk_live_ สำหรับ production)
  3. ใน n8n: Settings → Credentials → New → “Stripe API” → ใส่ Secret Key

Workflow — เมื่อชำระเงินสำเร็จ

Stripe Trigger node (Event: charge.succeeded)
→ Set node (เตรียมข้อมูลใบเสร็จ)
→ Gmail node (ส่ง email ยืนยันพร้อมใบเสร็จ PDF)
→ Google Sheets (บันทึกรายการชำระเงิน)
→ LINE Notify Admin (แจ้งรับเงินแล้ว)
→ (Optional) WooCommerce node (อัปเดตสถานะออเดอร์)

Workflow — เมื่อชำระเงินล้มเหลว

Stripe Trigger node (Event: charge.failed)
→ Gmail node (ส่ง email แจ้งลูกค้าพร้อม retry link)
→ LINE Notify Admin (แจ้ง admin)
→ Google Sheets (บันทึก failed payment log)

Stripe Webhook Security

Stripe ส่ง header Stripe-Signature มาด้วยทุก Webhook request ต้อง verify ก่อนประมวลผล

// Code node สำหรับ verify Stripe Webhook
const stripe = require('stripe')($credentials.stripe_secret_key);
const sig = $input.headers['stripe-signature'];
const webhookSecret = $credentials.stripe_webhook_secret;

let event;
try {
  event = stripe.webhooks.constructEvent(
    $input.rawBody,
    sig,
    webhookSecret
  );
} catch (err) {
  throw new Error('Webhook signature verification failed');
}

return [{ json: event }];

ส่วนที่ 2: Omise (Opn Payments) + n8n

Omise เป็น payment gateway ที่นิยมในไทยมาก รองรับบัตรเครดิต, PromptPay, TrueMoney Wallet และ Installment

ตั้งค่า Omise ใน n8n

Omise ไม่มี node สำเร็จรูปใน n8n ต้องใช้ HTTP Request node พร้อม Basic Auth

  1. ไปที่ Omise Dashboard → API Keys
  2. Copy Secret Key (ขึ้นต้นด้วย skey_)
  3. ใน n8n: ใช้ HTTP Request node พร้อม Authentication: Basic Auth โดยใส่ Secret Key เป็น Username และเว้นว่าง Password

Omise Webhook Setup

  1. ไปที่ Omise Dashboard → Settings → Webhooks
  2. ใส่ URL ของ n8n Webhook node
  3. เลือก Events ที่ต้องการ เช่น charge.complete, charge.failed, refund.create

Workflow — เมื่อ Omise Charge สำเร็จ

Webhook node (รับ Omise event)
→ IF node: event.key == "charge.complete"
→ HTTP Request (Omise API - ดึงรายละเอียด charge)
  GET https://api.omise.co/charges/{{$json.data.id}}
  Authentication: Basic Auth (Secret Key)
→ Set node (แปลงข้อมูลสำหรับใบเสร็จ)
→ Gmail/SendGrid (ส่งใบเสร็จ)
→ Google Sheets (บันทึก)

การ Verify Omise Webhook

Omise ส่ง Header X-Omise-Webhook-Signature สำหรับ verify

const crypto = require('crypto');
const webhookSecret = $credentials.omise_webhook_secret;
const signature = $input.headers['x-omise-webhook-signature'];
const body = JSON.stringify($input.body);

const expected = crypto
  .createHmac('sha256', webhookSecret)
  .update(body)
  .digest('hex');

if (signature !== expected) {
  throw new Error('Invalid webhook signature');
}
return [{ json: $input.body }];

ส่วนที่ 3: PromptPay QR Code + n8n

PromptPay เป็น payment method ที่ค่าธรรมเนียมต่ำที่สุด แต่การรู้ว่าใครจ่ายเงินมาต้องการ solution พิเศษ

วิธีที่ 1: ผ่าน Omise (แนะนำ)

Omise รองรับ PromptPay QR Code สร้างผ่าน API แล้วรับ Webhook เมื่อลูกค้าจ่ายเงิน

Webhook / Trigger (ลูกค้ากดชำระเงิน)
→ HTTP Request (Omise - สร้าง Charge ด้วย PromptPay source)
  POST https://api.omise.co/charges
  Body: { "amount": 100000, "currency": "thb", "source": { "type": "promptpay" } }
→ ส่ง QR Code ให้ลูกค้า (จาก response)
→ รอ Webhook charge.complete จาก Omise

วิธีที่ 2: ผ่าน Bank API (SCB Easy API, KBank KPayPlus)

ธนาคารใหญ่ในไทยมี API สำหรับ business ที่รองรับ PromptPay พร้อม Webhook เมื่อรับเงินสำเร็จ ต้องสมัครแยกกับแต่ละธนาคาร

การออกใบเสร็จอัตโนมัติ

ต่อจาก payment success ทุก workflow ควรมีขั้นตอนออกใบเสร็จ

ตัวเลือก A: HTML Email เป็นใบเสร็จ

สร้าง HTML template สำหรับใบเสร็จแล้วส่งผ่าน Gmail node

ตัวเลือก B: สร้าง PDF ด้วย n8n

ใช้ HTTP Request เรียก HTML-to-PDF service เช่น wkhtmltopdf ที่ self-host บน server เดียวกัน หรือ API ภายนอกเช่น PDFShift

ตัวเลือก C: เชื่อมระบบบัญชี

ส่งข้อมูล payment เข้า PEAK Account หรือ FlowAccount ผ่าน API เพื่อออกใบเสร็จจากระบบบัญชีโดยตรง

ข้อควรระวังด้านความปลอดภัย

อย่า expose Secret Key: Secret Key ของ payment gateway ต้องเก็บเป็น n8n Credential ไม่ใส่ตรงๆ ใน Workflow

ตรวจสอบ Webhook signature เสมอ: ทุก payment gateway ที่ดีมีระบบ signature verification อย่า skip ขั้นตอนนี้

ใช้ Test Mode ก่อน: ทดสอบ Workflow ทุกอย่างใน Test/Sandbox environment ก่อน activate กับเงินจริง

Log ทุก transaction: เก็บ log ครบทุก payment event ไว้ใน Google Sheets หรือ Database สำหรับ audit trail

สรุป

การเชื่อม n8n กับ Payment Gateway เปลี่ยนกระบวนการรับเงินจาก manual เป็น automated ตั้งแต่รับ event, ออกใบเสร็จ, แจ้งลูกค้า จนถึงอัปเดตสถานะออเดอร์ Stripe เหมาะสำหรับร้านที่ต้องการ node สำเร็จรูป ส่วน Omise เหมาะกับร้านไทยที่ต้องการ PromptPay เริ่มต้นด้วย Webhook charge.succeeded ก่อน แล้วค่อยต่อยอด

ดูบทความอื่นในชุด e-commerce automation ได้ที่ คู่มือ Automation ร้านค้าออนไลน์ฉบับเต็ม

อยากเรียน n8n แบบเป็นระบบ ตั้งแต่เริ่มต้นจนสร้าง Workflow ใช้งานจริงได้ ลองดู คอร์สสอน n8n ที่ aiunlock.co

Related posts