ข้ามไปยังเนื้อหา

ภาพรวม Partner API

Partner API ให้ระบบของคุณสร้างรายการรับเงิน (pay-in) และจ่ายเงิน (payout) ดูยอดคงเหลือ ถอนเงิน และตรวจสลิปได้โดยตรงจากเซิร์ฟเวอร์ของคุณ

https://api.example.com/v1
งานEndpointหน้า
รับเงินจากผู้จ่าย/v1/payinsPay-ins
จ่ายเงินให้ผู้รับ/v1/payoutsPayouts
จัดการบัญชีธนาคารของผู้ใช้ปลายทาง/v1/payers, /v1/banksPayers
ดูบัญชี ยอดคงเหลือ และสรุปยอด/v1/account, /v1/reportsบัญชีและรายงาน
ถอนยอดคงเหลือออกไปยังบัญชีของคุณ/v1/withdrawalsการถอนเงิน
ตรวจสอบสลิปโอนเงิน/v1/slips/verifyตรวจสลิป
รับแจ้งผลเมื่อสถานะเปลี่ยน(เราเรียก URL ของคุณ)Webhooks

ทุกคีย์ใช้ base URL เดียวกัน ความต่างอยู่ที่ประเภทของ API key

คีย์รูปแบบใช้เมื่อ
Live keypk_live_ + 24 ตัวอักษรใช้งานจริง
Test keypk_test_...ทดสอบการเชื่อมต่อ ใช้ได้เฉพาะตอนที่บัญชีของคุณเปิดโหมดทดสอบอยู่ ขอได้จากทีมซัพพอร์ต
  • พาร์ทเนอร์ที่มีคีย์รูปแบบเดิม (ตัวอักษร hex 32 ตัว) ใช้คีย์เดิมต่อได้ วิธีเซ็นเหมือนกันทุกอย่าง
  • ด้วย test key มีเพียง POST /v1/slips/verify ที่ตอบผลจำลอง (ดูตรวจสลิป) endpoint อื่นทำงานตามปกติ รายการ pay-in และ payout ที่สร้างจึงเป็นรายการจริง ควรทดสอบด้วยยอดเล็กและบัญชีของคุณเอง
  • ดูวิธีรับคีย์และ secret ได้ที่เริ่มต้นใช้งาน API
  • JSON และ UTF-8 ทั้งขาเข้าและขาออก ส่ง header Content-Type: application/json เมื่อมี body
  • ชื่อฟิลด์เป็น camelCase เช่น payerId, webhookUrl, createdAt
  • จำนวนเงินเป็นสตริงทศนิยม เช่น "150.00" ทศนิยม 2 ตำแหน่ง (USDT ใช้ 6 ตำแหน่ง) ตอนส่งก็ต้องส่งเป็นสตริง ห้ามส่งเป็นตัวเลข
  • สกุลเงินเป็นตัวพิมพ์ใหญ่: THB, USD, USDT, LAK
  • เวลาเป็น ISO-8601 แบบ UTC เช่น 2026-01-01T00:00:00.000Z ส่วนวันที่ของรายงานเป็น YYYY-MM-DD ตามเวลาประเทศไทย (UTC+7)
  • ID มี prefix บอกชนิด ตามด้วยตัวอักษร hex ตัวเล็ก 32 ตัว ให้เก็บเป็นสตริงทึบ (opaque) ไม่ต้องแยกส่วน
Prefixชนิด
pin_pay-in
pout_payout
payer_payer
wd_withdrawal
evt_webhook event
  • ฟิลด์ที่ไม่มีค่าจะเป็น null (ไม่ใช่สตริงว่าง)
  • ฟิลด์หรือ query parameter ที่ API ไม่รู้จักจะถูกปฏิเสธด้วย 400 parameter_unknown จึงควรส่งเฉพาะฟิลด์ที่ระบุในเอกสาร

สำเร็จ:

{
"data": { "object": "payin", "id": "pin_3f2b1c0d9e8f4a7b8c6d5e4f3a2b1c0d", "...": "..." },
"requestId": "req_Z3k9QmP2xR7tLw4NbV8cYh1s"
}

ผิดพลาด:

{
"error": {
"type": "invalid_request_error",
"code": "payer_not_found",
"message": "No such payer.",
"param": "payerId"
},
"requestId": "req_Z3k9QmP2xR7tLw4NbV8cYh1s"
}
  • ทุก response มี header X-Request-Id ค่าเดียวกับ requestId ให้บันทึกไว้ใน log และแจ้งค่านี้ทุกครั้งที่ติดต่อซัพพอร์ต
  • ให้เขียนโค้ดตาม error.code ส่วน error.message มีไว้ให้คนอ่านและอาจเปลี่ยนได้ ดูรายการทั้งหมดที่รหัสข้อผิดพลาด
  • ทุก object มีฟิลด์ object บอกชนิด เช่น "payin", "payout", "payer"
  • response ที่สำเร็จอาจมี warnings ด้วย เป็นคำเตือนที่ไม่เปลี่ยนผลของคำขอ (เช่น payer_name_differs) ดูรหัสข้อผิดพลาด

endpoint ที่คืนรายการ (GET /v1/payins, GET /v1/payouts, GET /v1/payers, GET /v1/payers/{id}/payments) รองรับ

พารามิเตอร์ค่า
limit1-100 ค่าเริ่มต้น 20
cursorค่า nextCursor จากหน้าก่อนหน้า
{
"data": [ { "object": "payin", "...": "..." } ],
"pagination": { "limit": 20, "hasMore": true, "nextCursor": "eyJvIjoyMH0" },
"requestId": "req_..."
}
  • รายการเรียงจากใหม่ไปเก่า
  • ถ้า hasMore เป็น true ให้เรียกซ้ำด้วย query เดิมและเพิ่ม cursor=<nextCursor> จนกว่า hasMore เป็น false
  • cursor เป็นค่าทึบ ห้ามสร้างหรือแก้เอง (ค่าที่ไม่ถูกต้องได้ 400 invalid_cursor)

คุณเห็นได้เฉพาะข้อมูลของบัญชีตัวเอง ID ของบัญชีอื่น หรือ ID ที่รูปแบบผิด จะได้ 404 resource_not_found เสมอ

  1. การยืนยันตัวตนและการเซ็น request
  2. เริ่มต้นใช้งาน API
  3. เอกสารอ้างอิง API ที่รวมทุก endpoint