เช็กลิสต์ก่อนเปิดใช้จริง
Test กับ live แยกกันอย่างสมบูรณ์ — ทั้ง key, webhook และเชน การเปิดใช้จริงคือการสลับห้าอย่างอย่างตั้งใจ ไม่ใช่การ redeploy
เช็กลิสต์#
ยืนยันกระเป๋ารับเงิน
กระเป๋ารับเงินบนโปรเจกต์ live ต้องยืนยันด้วยการเซ็นด้วยกระเป๋านั้น เมื่อยืนยันแล้ว จะ เปลี่ยนได้ผ่านขั้นตอนเซ็นเดียวกันเท่านั้น — การถูกขโมย login แดชบอร์ดอย่างเดียวเปลี่ยน ปลายทางเงินไม่ได้
สร้าง live API key
สร้าง key
dp_live_…ในแดชบอร์ด live key แสดงเพียงครั้งเดียว — เก็บ key ลง secret manager ทันที (test key ยังดูซ้ำได้ ตามการออกแบบ)สลับ chain ID เป็น mainnet
live key ปฏิเสธเชน testnet ดังนั้นนี่คือการบังคับ ไม่ใช่แค่คำแนะนำ บน Polygon mainnet โทเคนเริ่มต้นคือ USDT ดู เชนและโทเคน ว่าอะไรใช้ได้แล้ว
const charge = await duckypay.charges.create({ - chainId: 80002, // Polygon Amoy testnet + chainId: 137, // Polygon mainnet fiat: { currency: 'USD', amount: '25' }, paymentMode: 'both', reference: order.id, });ลงทะเบียน webhook endpoint แบบ live
webhook endpoint แยกตามโหมด: invoice บน testnet ส่งไป test endpoint เท่านั้น invoice บน mainnet ส่งไป live เท่านั้น ลงทะเบียน URL โปรดักชันของคุณเป็น endpoint แบบ live และยืนยันลายเซ็นด้วย secret ของมันเอง — ดู Webhooks
ลองจ่ายเงินจริงหนึ่งครั้งเล็ก ๆ
ก่อนประกาศอะไร ลองรัน charge จริงครบวงจร: สร้าง → จ่าย → รับ webhook
invoice.paid→ ยืนยันว่าเงินเข้ากระเป๋ารับเงินของคุณบน block explorer ขั้นสุดท้ายนี้คือหัวใจของ non-custodial: คุณตรวจสอบทุกการชำระเงินได้ด้วยตัวเอง
Test กับ live แยกกันคนละโลก#
| โหมด test | โหมด live | |
|---|---|---|
| คำนำหน้า API key | dp_test_ | dp_live_ |
| เชนที่อนุญาต | testnet เท่านั้น (Amoy) | mainnet เท่านั้น |
| การส่ง webhook | test endpoint เท่านั้น | live endpoint เท่านั้น |
| การมองเห็น key | ดูซ้ำได้ในแดชบอร์ด | แสดงครั้งเดียวตอนสร้าง |
หมายเหตุความปลอดภัย#
- เก็บ API key ไว้ฝั่งเซิร์ฟเวอร์ อย่าใส่ key ในโค้ดฝั่งหน้าเว็บ — เบราว์เซอร์ต้องการแค่
checkoutUrl/invoiceId - ยืนยันลายเซ็น webhook เสมอ ทำตามคำสั่งซื้อจาก event
invoice.paidที่ยืนยันแล้ว ไม่ใช่จาก redirect หรือ callback ฝั่ง client - callback ฝั่ง client คือ UX ไม่ใช่ความจริง ใช้
onSuccessใน@duckypay/reactเป็นสัญญาณอัปเดต UI; webhook (หรือ event บนเชน) คือแหล่งความจริงสำหรับการส่งมอบสินค้า