โอนผ่านธนาคาร (เวียดนาม)
ตำแหน่งในหน้าผู้ดูแล: Finance › Payment channels › VN bank transfer (
/payments/bank) อัตราแลกเปลี่ยน: Finance › Payment channels › Exchange rates (/payments/fx)
What it does
ให้ลูกค้าเติมเงินในกระเป๋าเงิน USD ผ่านการโอนเงินผ่านธนาคารปกติในสกุลเงินดองเวียดนาม NexCMP จะแสดงรหัส VietQR รายละเอียดบัญชี และ บันทึกการโอน ที่ไม่ซ้ำกัน SePay จะคอยตรวจสอบบัญชีธนาคารของคุณและเรียกเว็บฮุกเมื่อเงินเข้า จากนั้น NexCMP จะเติมเงินเข้ากระเป๋าเงินให้ ใช้สิ่งนี้หากคุณขายสินค้าให้กับลูกค้าในเวียดนาม
แสดงเฉพาะในอินเทอร์เฟซภาษาเวียดนาม
ตัวเลือกธนาคาร VN จะแสดงต่อเมื่อพอร์ทัลแสดงเป็นภาษา Vietnamese เท่านั้น ลูกค้าที่ใช้ภาษาอื่นจะไม่เห็นตัวเลือกนี้
ข้อกำหนด
| Item | Requirement |
|---|---|
| บัญชีธนาคาร | บัญชีธนาคารเวียดนาม (หรือบัญชีเสมือนของ Sepay, VA) ที่เชื่อมต่อกับบัญชี Sepay ที่ my.sepay.vn |
| Sepay | บัญชี Sepay ที่เปิดใช้งานการบูรณาการ Webhook แล้ว |
| อัตราแลกเปลี่ยน | ต้องมีอัตราแลกเปลี่ยน USD เป็น VND อยู่: โปรดอัปเดตที่ Exchange rates ก่อน หากไม่มีอัตราแลกเปลี่ยน ช่องทางนี้จะตอบกลับด้วย fx_unavailable และลูกค้าจะไม่สามารถเริ่มการโอนเงินได้ |
| Network | แผงควบคุมของคุณต้องสามารถเข้าถึงได้ผ่าน HTTPS เพื่อให้ Sepay สามารถเรียกใช้งาน https://<your-domain>/v1/billing/sepay/webhook ได้ |
| Dependencies | สกุลเงินและอัตราแลกเปลี่ยน. |
เตรียมโครงสร้างพื้นฐาน
ฝั่งของ Sepay:
- ใน my.sepay.vn ให้เชื่อมต่อบัญชีธนาคารของคุณ (หรือสร้าง VA) และตรวจสอบว่ามีรายการธุรกรรมปรากฏขึ้น
- กำหนดคำนำหน้าบันทึกช่วยจำ (memo prefix) — ตัวอักษรพิมพ์ใหญ่ 2 ถึง 5 ตัว เช่น
PAYNexCMP จะสร้างบันทึกช่วยจำโดยใช้คำนำหน้าตามด้วยตัวเลขสุ่ม 8 หลัก (เช่นPAY48210937) คำนำหน้าต้องไม่มีORDและไม่ควรซ้ำกับระบบอื่นที่รับเงินเข้าบัญชีเดียวกัน - หากบัญชี Sepay ของคุณใช้ โครงสร้างรหัสการชำระเงิน (payment code structure) ให้ลงทะเบียนคำนำหน้าเดียวกันที่นั่นเพื่อให้ Sepay จดจำบันทึกช่วยจำได้
- สร้าง Webhook ในภายหลัง หลังจากที่หน้า NexCMP แสดง URL และคีย์ให้คุณแล้ว (ขั้นตอนที่ 7 ด้านล่าง)
เชื่อมต่อใน NexCMP
เปิด Finance › Payment channels › Exchange rates แล้วคลิก Update exchange rates หากยังไม่มีการบันทึกอัตราแลกเปลี่ยน
เปิด Finance › Payment channels › VN bank transfer (
/payments/bank)ในส่วน Receiving account ให้กรอกข้อมูลดังนี้:
ฟิลด์ ตัวอย่าง กฎ ธนาคาร VCBVietcombankเลือกจากรายการ รหัส BIN จะถูกเติมอัตโนมัติ เลขที่บัญชี 0123456789ตัวเลข 4–24 หลักหรือตัวอักษรพิมพ์ใหญ่ บัญชีเสมือน (VA — ไม่บังคับ) หากตั้งค่าไว้ ลูกค้าจะโอนเงินเข้า VA และคิวอาร์โค้ดจะแสดงผลดังกล่าว ชื่อเจ้าของบัญชี NGUYEN VAN Aไม่มีอักษรพิเศษ, ตัวพิมพ์ใหญ่ทั้งหมด, ความยาว 2–60 ตัวอักษร คำนำหน้าบันทึกการโอนเงิน PAYตัวอักษรพิมพ์ใหญ่ 2–5 ตัว, ไม่มี ORDใน Webhook authentication ให้เลือก Auth method: HMAC-SHA256 (แนะนำ) หรือ API key และป้อน Webhook key / HMAC secret (8–200 ตัวอักษร) หรือเลือกป้อน userapi token จาก Sepay ซึ่งใช้สำหรับการตรวจสอบยอดโอนที่ Webhook ขาดหายไปเท่านั้น
ใน Channel & limits ให้กำหนดขีดจำกัด (ค่าเริ่มต้นอยู่ในวงเล็บ): Min / order (10,000 VND), Max / order (200,000,000 VND), Order expiry (120 นาที, 15–1440), Max pending orders / account (3, 1–10), Reconcile every (10 นาที) และ Allowed webhook IPs (คั่นด้วยจุลภาค หากเว้นว่างไว้จะบันทึกเฉพาะ IP เท่านั้น เป็นทางเลือก)
คลิก Save แบนเนอร์สีแดง "Sepay not configured" จะหายไปเมื่อบัญชี ชื่อ คำนำหน้า และคีย์ถูกต้อง
คัดลอก Webhook URL to paste into my.sepay.vn (ซึ่งแสดงเป็น
https://<your-domain>/v1/billing/sepay/webhook) ด้วย Copy จากนั้นใน Sepay ให้เปิดการเชื่อมต่อ webhook วาง URL เลือกประเภทและคีย์การตรวจสอบสิทธิ์ให้ตรงกัน แล้วเปิดใช้งานอีเวนต์ "money in"คลิก Test connection จากนั้นเปิดสวิตช์ Enable Sepay for clients (main site) และคลิก Save


ความปลอดภัยของ Webhook
| วิธี | สิ่งที่ Sepay ต้องส่ง |
|---|---|
| HMAC-SHA256 | ส่วนหัว X-SePay-Signature: sha256=<hex> คำนวณจาก "<X-SePay-Timestamp>.<raw body>" โดยเวลาอาจแตกต่างกันได้ไม่เกิน 300 วินาที |
| คีย์ API | ส่วนหัว Authorization: Apikey <key> |
จะมีการตรวจสอบเฉพาะส่วนหัวเท่านั้น (ไม่รวมเนื้อหาหรือคิวรีสตริง) และการเปรียบเทียบใช้เวลาคงที่ จะใช้เฉพาะการโอนเงินขาเข้า (transferType = in) ไปยังบัญชีหรือ VA ที่คุณกำหนดไว้เท่านั้น ธุรกรรม SePay แต่ละรายการจะถูกจัดเก็บไว้เพียงครั้งเดียว ดังนั้นเว็บฮุกที่มีการส่งซ้ำจะไม่ถูกเครดิตซ้ำ NexCMP จะตอบกลับเป็น 200 {"success":true} แม้ว่าจะจงใจเพิกเฉยต่อธุรกรรมนั้น และตอบกลับ HTTP 5xx เฉพาะกรณีข้อผิดพลาดชั่วคราวเพื่อให้ SePay ส่งซ้ำ
วิธีที่ลูกค้าชำระเงิน
- ใน Billing › Deposit (อินเทอร์เฟซภาษาเวียดนาม) ลูกค้าเลือกตัวเลือกการโอนเงินผ่านธนาคารเวียดนามและระบุจำนวนเงิน จากนั้นคลิกปุ่มสร้างรายการโอน
- NexCMP จะแปลงจำนวนเงิน USD ตามอัตราที่จัดเก็บไว้ (รวมถึงส่วนต่างและขั้นตอนการปัดเศษที่คุณตั้งค่าไว้ใน Exchange rates) และ ปัดเศษจำนวนเงิน VND ขึ้น ไปยังขั้นการปัดเศษ
- ลูกค้าจะเห็นคิวอาร์โค้ด (VietQR สร้างขึ้นในเครื่อง) พร้อมเลขที่บัญชี ธนาคาร จำนวนเงิน และบันทึกช่วยจำ
- หลังจากการโอนเงิน SePay จะเรียกเว็บฮุก และ NexCMP จะเพิ่มเครดิต
floor(VND received × 100 / rate)เซนต์ อัตราแลกเปลี่ยนจะถูกล็อกไว้เมื่อสร้างคำสั่งซื้อ หากเงินเข้าหลังจากคำสั่งซื้อหมดอายุ จะใช้อัตราที่สูงกว่าระหว่างอัตราที่ล็อกไว้กับอัตราปัจจุบัน - คำสั่งซื้อจะหมดอายุหลังจาก Order expiry; การกระทบยอดจะทำงานทุกๆ Reconcile every นาทีเพื่อเป็นตาข่ายความปลอดภัย (ต้องใช้โทเค็น userapi)
ตรวจสอบ
- สร้างคำสั่งซื้อทดสอบในฐานะลูกค้าบนอินเทอร์เฟซภาษาเวียดนาม ตรวจสอบว่าจำนวนเงิน บัญชี และบันทึกช่วยจำถูกต้อง
- โอนเงินตามจำนวนขั้นต่ำที่อนุญาตพร้อมบันทึกช่วยจำที่แน่นอน
- ภายในหนึ่งนาที พอร์ทัลจะแสดงการฝากเงินว่าเสร็จสมบูรณ์และยอดเงินในกระเป๋าเงินจะเพิ่มขึ้น การ์ด State ในหน้าธนาคารจะแสดงเวลาเว็บฮุกครั้งล่าสุด
- เปิด Finance › Billing › Top-ups และตรวจสอบว่าการชำระเงินแสดงอยู่ในรายการพร้อมจำนวนเงิน VND ที่ได้รับ
ขีดจำกัดและหมายเหตุ
- ขั้นต่ำ จำนวนเงิน VND ขั้นต่ำที่ลูกค้าเห็นคือค่าที่มากกว่าระหว่าง Min / order และมูลค่า VND ของ minimum top-up
- คำสั่งซื้อที่รอดำเนินการ ลูกค้าสามารถมีคำสั่งซื้อที่เปิดอยู่ได้สูงสุด Max pending orders / account รายการ (ค่าเริ่มต้นคือ 3)
- บันทึกช่วยจำซ้ำกัน การโอนเงินสองครั้งด้วยบันทึกช่วยจำเดียวกันจะสร้างการชำระเงินที่สำเร็จรายการที่สองตามอัตราปัจจุบัน
- ไม่มีการคืนเงินอัตโนมัติ ไปยังบัญชีธนาคาร
- ค่าธรรมเนียม ช่องทางนี้ไม่มีบรรทัดค่าธรรมเนียมคงที่ใน Fees & limits โดยส่วนต่างอัตราแลกเปลี่ยนคือการปรับแก้เพียงอย่างเดียว
- Resellers สามารถกำหนดค่าบัญชีของตนเองได้ โดย URL เว็บฮุกจะลงท้ายด้วย
/v1/billing/sepay/webhook/r/<id>
การโอนเงินที่ยังไม่ได้จับคู่
เงินที่เข้าบัญชีแล้วแต่ไม่มีบันทึกช่วยจำที่ถูกต้องจะปรากฏใน Unmatched transactions ที่ด้านล่างของหน้า (ตัวกรอง All channel owners หรือ Master) ตรวจสอบอ้างอิงธนาคารกับลูกค้า จากนั้นคลิก Assign และเลือกบัญชี ยอดเงินในกระเป๋าจะถูกเติมเครดิตตามอัตราปัจจุบัน
การแก้ Problme
| อาการ | สาเหตุ | วิธีแก้ปัญหา |
|---|---|---|
| แบนเนอร์ "Sepay not configured" | ธนาคาร, บัญชี, ชื่อผู้ถือบัญชี, คำนำหน้า หรือคีย์หายไปหรือไม่ถูกต้อง | กรอกข้อมูลในการ์ด Receiving account และ Webhook authentication ให้ครบถ้วน |
แบนเนอร์ "USD/VND rate blocked" (fx_unavailable) | ไม่มีการจัดเก็บอัตราแลกเปลี่ยน | ไปที่ Exchange rates › Update exchange rates. |
prefix: 2–5 capital letters, no ORD | คำนำหน้าไม่ถูกต้อง | ใช้ตัวอักษรพิมพ์ใหญ่ 2–5 ตัวโดยไม่มี ORD |
ข้อผิดพลาด account_name | มีอักษรมีเครื่องหมายกำกับหรือตัวพิมพ์เล็ก | ใช้ตัวอักษรพิมพ์ใหญ่ภาษาอังกฤษที่ไม่มีเครื่องหมายกำกับ, ตัวเลข, ช่องว่าง, จุด หรือยัติภังค์ |
webhook_secret: 8–200 characters | คีย์สั้นเกินไป | ใช้อักขระที่พิมพ์ได้3อย่างน้อย 8 ตัว |
| ลูกค้ามองไม่เห็นตัวเลือก | ไม่พบในอินเทอร์เฟซภาษาเวียดนาม ปิดใช้งาน หรือไม่มีเรท | ตรวจสอบภาษา สวิตช์ และเรท |
| ลูกค้าชำระเงินแล้วแต่ยอดเงินไม่เข้า | เว็บฮุกไม่มา เมโมเปลี่ยน หรือยอดเงินไม่ถูกต้อง | ตรวจสอบบันทึกเว็บฮุกของ Sepay; การโอนเงินจะอยู่ใต้ Unmatched transactions หากใส่เมโมผิด |
| เว็บฮุกคืนค่า 401 หรือ 403 | วิธีการยืนยันตัวตนหรือคีย์ไม่ตรงกัน | ใช้วิธีการและคีย์เดียวกันใน Sepay และ NexCMP |
| ลูกค้าเห็นข้อความ "คำขอรอดำเนินการมากเกินไป" | ถึงขีดจำกัดคำสั่งซื้อที่รอดำเนินการแล้ว | รอให้เสร็จสิ้นหรือรอจนกว่าจะหมดอายุ |