Skip to main content

คำถามที่พบบ่อย

การเชื่อมต่อ & API​

ต้องมีอะไรบ้างเพื่อเริ่มต้น?​

คุณต้องมี API Key (จากหน้าจัดการ ในส่วน Store) และ callback URL (endpoint POST สาธารณะ) เพื่อรับ webhook จากนั้นเรียก POST https://api.payerscan.com/payment/crypto เพื่อสร้างใบแจ้งหนี้และเปลี่ยนเส้นทางลูกค้าไปที่ url_payment ดู เริ่มต้นใช้งาน

Base URL ของ API คืออะไร?​

Base URL อย่างเป็นทางการของ API คือ https://api.payerscan.com คำขอ API ทั้งหมดต้องใช้ HTTPS

สร้างใบแจ้งหนี้ได้โดยไม่ส่ง callback_url ไหม?​

ได้ แต่คุณจะไม่ได้รับ webhook completed/expired คุณสามารถตรวจสอบสถานะผ่าน GET https://api.payerscan.com/invoice/:trans_id (polling) เท่านั้น

ขีดจำกัดอัตราการเรียกคือเท่าไร?​

  • POST /payment/crypto: 5 คำขอ/วินาที, สูงสุด 60 คำขอ/นาที (ต่อ API Key, fallback เป็น IP)
  • GET /invoice/:trans_id: 20 คำขอ/วินาที, สูงสุด 200 คำขอ/นาที

เกินขีดจำกัด → HTTP 429 พร้อม retry_after_seconds ใน body ดู ขีดจำกัดอัตราการเรียก

request_id คืออะไร และ idempotency ทำงานอย่างไร?​

request_id เป็นฟิลด์ทางเลือกที่คุณแนบเมื่อสร้างใบแจ้งหนี้ — โดยปกติคือ ID คำสั่งซื้อภายในของคุณ (เช่น "ORDER-12345") หรือ สตริงสุ่มที่ไม่ซ้ำ ที่มีเพียง backend ของคุณและ PayerScan เท่านั้นที่รู้

ทำไมต้องใช้? ถ้าเซิร์ฟเวอร์ของคุณล่มหรือ timeout ระหว่างส่ง request คุณสามารถ retry ได้อย่างปลอดภัยด้วย request_id เดิม API รับประกันไม่สร้างใบแจ้งหนี้ซ้ำ — จะส่งคืนใบแจ้งหนี้ที่มีอยู่พร้อม "idempotent": true ใน response

จับคู่ webhook กับคำสั่งซื้อ: request_id จะถูกส่งกลับมาใน webhook callback (completed / expired) ด้วย ทำให้ backend ของคุณสามารถระบุได้ว่าการชำระเงินนั้นเป็นของใบแจ้งหนี้ (ธุรกรรม, คำสั่งซื้อ) รายการใด

ไม่ใช้ request_id: ทุกครั้งที่ POST จะสร้างใบแจ้งหนี้ใหม่ แม้ body จะเหมือนกัน คุณเสี่ยงสร้างใบแจ้งหนี้ซ้ำสำหรับคำสั่งซื้อเดียวกันถ้า retry

amount ใช้สกุลเงินอะไร?​

amount เป็น USD (ดอลลาร์สหรัฐ) เสมอ ระบบจะแปลงเป็นจำนวนเงินคริปโตที่สอดคล้องกันโดยอัตโนมัติตามอัตราแลกเปลี่ยนแบบเรียลไทม์ ณ เวลาที่ชำระเงิน

หมายเหตุ: อัตราแลกเปลี่ยนมาจากหนึ่งในสี่แหล่ง — Binance, Coinbase, CoinGecko หรือ CoinMarketCap — ที่ลูกค้าเลือกบนหน้าชำระเงิน

ขีดจำกัดของ amount คือเท่าไร?​

amount ของใบแจ้งหนี้ (USD) ต้องเป็นจำนวนบวกและไม่เกิน 1,000,000 สามารถส่งเป็น string หรือ number ได้

completed_url และ expired_url คืออะไร?​

เป็น URL เปลี่ยนเส้นทางทางเลือกสำหรับเบราว์เซอร์ของลูกค้า:

  • completed_url — ลูกค้าจะถูกเปลี่ยนเส้นทางมาที่นี่หลังชำระเงินสำเร็จ
  • expired_url — ลูกค้าจะถูกเปลี่ยนเส้นทางมาที่นี่หากใบแจ้งหนี้หมดอายุ

ใช้สำหรับการเปลี่ยนเส้นทาง frontend เท่านั้น ไม่ได้แทนที่ webhook callback_url


การชำระเงิน & การยืนยัน​

เกิดอะไรขึ้นถ้าลูกค้าส่งจำนวนเงินไม่ถูกต้อง?​

ระบบยืนยันเมื่อธุรกรรมบล็อกเชนตรงกันพอดีกับจำนวนเงิน (token_amount) ที่อยู่ถูกต้อง และอยู่ในกรอบเวลา การส่งน้อยเกินไปหรือมากเกินไปจะไม่ถือว่าชำระสำเร็จ ใบแจ้งหนี้อาจหมดอายุหรือลูกค้าต้องสร้างใบแจ้งหนี้ใหม่

การยืนยันใช้เวลานานเท่าไร?​

โดยปกติไม่กี่วินาทีถึงไม่กี่นาที ขึ้นอยู่กับเครือข่ายและวิธีการ:

  • EVM (BSC, ETH, Polygon, ...): 3-15 วินาที
  • Tron (TRC20): 3-5 วินาที
  • ฝากผ่านตลาด (Binance, OKX, Bybit, ...): เกือบจะทันที
  • Binance Pay: เกือบจะทันที

เมื่อพบธุรกรรมที่ตรงกัน ระบบจะอัปเดตใบแจ้งหนี้และส่ง webhook ทันที

ใบแจ้งหนี้หมดอายุเมื่อไร?​

ตามค่าเริ่มต้นของการตั้งค่า Store (เช่น 15 นาที) เมื่อสร้างใบแจ้งหนี้ response จะมี expires_in_minutes หลังจากเวลานั้น ใบแจ้งหนี้จะเปลี่ยนเป็น expired และ (ถ้ามี callback_url) คุณจะได้รับ webhook ที่มี status: "expired"

สถานะใบแจ้งหนี้ที่เป็นไปได้มีอะไรบ้าง?​

สถานะคำอธิบาย
waitingใบแจ้งหนี้ถูกสร้างแล้ว รอลูกค้าชำระเงิน
completedการชำระเงินได้รับการยืนยันบนบล็อกเชน
expiredใบแจ้งหนี้หมดอายุโดยไม่ได้รับการชำระเงิน

สามารถยกเลิกใบแจ้งหนี้ได้ไหม?​

ไม่ได้ ใบแจ้งหนี้ไม่สามารถยกเลิกผ่าน API ได้ จะหมดอายุอัตโนมัติหลังเวลาที่กำหนด (expires_in_minutes) ถ้าลูกค้าไม่ชำระเงิน ให้ปล่อยให้หมดอายุ


Webhook​

เหตุการณ์ใดที่เรียก webhook?​

ระบบส่ง webhook สำหรับสองเหตุการณ์:

  • completed — เมื่อการชำระเงินที่ตรงกันได้รับการยืนยันบนบล็อกเชน
  • expired — เมื่อใบแจ้งหนี้หมดอายุโดยไม่ได้รับการชำระเงิน

Webhook timeout คือเท่าไร?​

10 วินาที ถ้าเซิร์ฟเวอร์ร้านค้าไม่ส่ง HTTP 2xx กลับภายในเวลานี้ คำขอถือว่าล้มเหลวและจะถูก retry

ต้องส่ง body เฉพาะกลับมาไหม?​

ไม่ต้อง แค่ส่ง HTTP 2xx (เช่น 200 OK) body เป็นอะไรก็ได้ (ว่างหรือ "OK")

Webhook มีการ retry เมื่อล้มเหลวไหม?​

มี เมื่อคุณส่งข้อผิดพลาดหรือ timeout กลับมา ระบบ retry ตามกำหนดการ: 10s → 30s → 30s → 60s → 60s (สูงสุด 5 ครั้ง) ให้แน่ใจว่า endpoint จัดการแบบ idempotent (เรียกด้วย trans_id เดียวกันหลายครั้งปลอดภัย)


ข้อผิดพลาด & การแก้ไขปัญหา​

NO_PAYMENT_METHOD หมายความว่าอะไร?​

Store ของคุณยังไม่ได้กำหนดวิธีการชำระเงิน ไปที่การจัดการ Store → เพิ่มอย่างน้อยหนึ่งที่อยู่กระเป๋าเงินหรือเชื่อมต่อแพลตฟอร์มแลกเปลี่ยนก่อนสร้างใบแจ้งหนี้

INSUFFICIENT_BALANCE หมายความว่าอะไร?​

ยอดเงินในบัญชีไม่เพียงพอที่จะจ่ายค่าบริการสำหรับใบแจ้งหนี้นั้น ค่าธรรมเนียมคำนวณจาก amount (USD) ของใบแจ้งหนี้ตามอัตราค่าธรรมเนียมของบัญชี (ส่วนลดอาจลดอัตรา) เติมเงินบน Dashboard แล้วลองใหม่ ตรวจสอบฟิลด์ details ใน response ข้อผิดพลาดสำหรับจำนวนเงินที่ขาดที่แน่นอน

หมายเหตุ: ในช่วงทดลองใช้ฟรี (7 วันแรก) INSUFFICIENT_BALANCE จะไม่ปรากฏ — ค่าบริการทั้งหมดจะได้รับการยกเว้น

INVALID_MERCHANT_ID คืออะไร?​

merchant_id ใน body ไม่ตรงกับ Store ของ API Key ที่ใช้อยู่ ตรวจสอบ merchant_id ในการจัดการ Store แล้วส่งค่าที่ถูกต้องในคำขอ

ค้นหาใบแจ้งหนี้ได้ 404?​

สาเหตุที่เป็นไปได้: (1) trans_id ผิด (2) ใบแจ้งหนี้เป็นของ Store อื่น (API Key ต่างกัน) หรือ (3) ไม่มีอยู่ ตรวจสอบ trans_id และ API Key


วิธีการชำระเงิน​

ระบบรองรับวิธีการชำระเงินอะไรบ้าง?​

PayerScan รองรับหลายวิธีการชำระเงิน:

  • กระเป๋าเงิน on-chain: EVM (BSC, Ethereum, Polygon, Base, Arbitrum), Tron (TRC20), Solana
  • แพลตฟอร์มแลกเปลี่ยน: Binance Pay, Binance Deposit, OKX, Bybit, MEXC, Gate.io, Bitget, Upbit, Bitkub

ดู เครือข่าย & โทเค็น สำหรับรายการเต็ม

Binance Pay ทำงานอย่างไร?​

Binance Pay ให้ลูกค้าชำระเงินผ่าน Binance — ไม่มีค่า gas ยืนยันทันที ร้านค้าต้องกำหนด Binance API Key และ Secret Key ในหน้าจัดการ

ต้องกำหนดอะไรบ้างสำหรับแพลตฟอร์มแลกเปลี่ยน?​

  1. สร้าง API Key บนตลาด (เปิดสิทธิ์ที่จำเป็น)
  2. ในหน้าจัดการ → กำหนด API Key, Secret Key และ ID แพลตฟอร์ม สำหรับ Store

รายละเอียด: ตั้งค่า Binance Pay


ความปลอดภัย​

ควรส่ง API Key จาก frontend ไหม?​

ไม่ API Key ควรใช้บนเซิร์ฟเวอร์ (backend ของร้านค้า) เท่านั้น เรียก POST /payment/crypto และ GET /invoice จากเซิร์ฟเวอร์ frontend รับเฉพาะ url_payment สำหรับเปลี่ยนเส้นทาง ไม่ต้องใช้ API Key

Callback URL ต้องมีการยืนยันตัวตนไหม?​

แนะนำ: ตรวจสอบ merchant_id หรือ trans_id กับข้อมูลภายในเพื่อให้แน่ใจว่าคำขอถูกต้อง ใช้ HTTPS เพื่อป้องกันการดักฟัง

สามารถมีหลาย Store ได้ไหม?​

ได้ แต่ละ Store มี API Key, merchant_id, วิธีการชำระเงิน และการตั้งค่าของตัวเอง คุณสามารถสร้างหลาย Store เพื่อแยกธุรกิจหรือสภาพแวดล้อมที่แตกต่างกัน (เช่น production vs. testing)