นักพัฒนา

POST/v3/rentnumber/{number_id}/{price_id}

ซื้อหมายเลขโทรศัพท์ที่เลือก

ส่งหมายเลขและราคาที่ได้รับอนุมัติหนึ่งรายการพร้อมเงื่อนไขตรวจสอบใบเสนอราคา แล้วตรวจสอบความเป็นเจ้าของและการเปิดใช้งานให้ตรงกันก่อนลองอีกครั้ง

ในหน้านี้
  1. เลือกหมายเลขและราคาควบคู่กัน
  2. ส่งคำขอซื้อพร้อมเงื่อนไขป้องกันด้วย POST
  3. การลงทะเบียนและการเปิดใช้งาน
  4. หลีกเลี่ยงการเปลี่ยนแพ็กเกจแทนโดยไม่แจ้งให้ทราบ
  5. ขั้นสูง: ค่าเริ่มต้นการกำหนดเส้นทางของบัญชี
  6. ผลตอบกลับ
  7. ข้อผิดพลาดและผลลัพธ์ที่ยังไม่แน่นอน
  8. ตรวจสอบข้อมูลให้ตรงกันก่อนลองอีกครั้ง

เลือกหมายเลขและราคาควบคู่กัน

ซื้อหมายเลขเฉพาะหนึ่งหมายเลขที่เลือกจากผลการค้นหาหมายเลขที่พร้อมให้บริการครั้งใหม่ ใช้ค่า info.uuid ของรายการที่เลือกเป็นรหัสหมายเลข และใช้ค่าหนึ่งจาก price[].uuid ของรายการเดียวกันนั้นเป็นรหัสราคา เส้นทางนี้ยังรับหมายเลขเต็มตามที่จัดเก็บไว้ด้วย แต่ไม่สามารถใช้รหัสประเทศ รหัสพื้นที่ หรือรหัสคำนำหน้าหมายเลขแทนการเลือกหมายเลขได้

การค้นหาหรืออ่านราคาที่บันทึกไว้ไม่ได้จองหมายเลขหรือตรึงราคา โปรดยืนยันค่าติดตั้ง ค่าบริการรายเดือน อัตราค่าโทรเข้าต่อนาที จำนวนนาทีและช่องสัญญาณที่รวมอยู่ของตัวเลือกที่เลือก รวมถึงสิทธิ์ในการซื้อของบัญชีและข้อกำหนดการลงทะเบียน ยอดพื้นฐานเริ่มต้นในฟังก์ชันช่วยที่ตรวจสอบแล้วคือค่าติดตั้งบวกค่าบริการรายเดือน โดยต้องยืนยันค่าบริการและเงื่อนไขเฉพาะของผู้ให้บริการทั้งหมดสำหรับแพ็กเกจที่เลือก

ส่งคำขอซื้อพร้อมเงื่อนไขป้องกันด้วย POST

ใช้บัญชี API ที่เปิดใช้งานแล้วผ่าน HTTPS จากที่อยู่ IP ต้นทางที่ได้รับอนุญาต คำสั่งต่อไปนี้เป็นการซื้อจริง ไม่ใช่การขอใบเสนอราคาหรือการทดลองโดยไม่ดำเนินการจริง กำหนดตัวแปรทุกตัวจากการเลือกหมายเลขและราคาครั้งใหม่รายการเดียวกัน ฟิลด์เพดานค่ายังคงใช้คำนำหน้าเดิมคือ restore_quote_ โดยพอร์ทัลปัจจุบันก็ใช้ฟิลด์เหล่านี้สำหรับการซื้อหมายเลขเฉพาะพร้อมเงื่อนไขป้องกันเช่นกัน

curl --silent --show-error --user "$API_USER:$API_PASSWORD" \
  --data-urlencode "restore_quote_price_id=$PRICE_ID" \
  --data-urlencode "restore_quote_setup=$SETUP_PRICE" \
  --data-urlencode "restore_quote_monthly=$MONTHLY_PRICE" \
  --data-urlencode "restore_quote_per_minute=$PER_MINUTE_PRICE" \
  --data-urlencode "restore_quote_channels=$CHANNELS" \
  "https://api.multitel.net/v3/rentnumber/$NUMBER_ID/$PRICE_ID"

ใช้ POST แบบฟอร์มตามที่แสดง ฟังก์ชันช่วยยังรองรับการแยกวิเคราะห์ JSON และตัวห่อหุ้มตัวเลือกด้วย แต่การตรวจสอบครั้งนี้ยังไม่ได้ยืนยันว่าทำงานเทียบเท่ากันอย่างครบถ้วนสำหรับทุกเส้นทางของใบเสนอราคาและผู้ให้บริการ ห้ามใช้ GET ในการซื้อ แม้ว่าส่วนประสานงานรุ่นเก่านี้จะไม่มีการตรวจสอบเพื่อจำกัดเมธอดอย่างชัดเจนก็ตาม

เส้นทางการซื้อและฟิลด์ใบเสนอราคา
ฟิลด์ความหมาย
NUMBER_IDUUID ของหมายเลขที่เลือกจากการค้นหา หรือหมายเลขเต็มตามที่จัดเก็บไว้ หนึ่งหมายเลขต่อคำขอ
PRICE_IDUUID ของราคาที่เชื่อมโยงกับหมายเลขที่เลือกนั้นและบัญชีของคุณ ต้องระบุค่านี้อย่างชัดเจนทุกครั้ง
restore_quote_price_idต้องตรงกับรหัสราคาที่ระบบระบุได้ การระบุฟิลด์นี้จะเปิดใช้การตรวจสอบใบเสนอราคา ฟิลด์นี้ไม่ใช่คีย์สำหรับป้องกันการดำเนินการซ้ำ
restore_quote_setupค่าติดตั้งสูงสุดที่ยอมรับ โดยเป็นค่าตัวเลขที่มีค่าจำกัดและไม่ติดลบ
restore_quote_monthlyค่าบริการรายเดือนสูงสุดที่ยอมรับ โดยเป็นค่าตัวเลขที่มีค่าจำกัดและไม่ติดลบ
restore_quote_per_minuteอัตราค่าโทรเข้าต่อนาทีสูงสุดที่ยอมรับ โดยเป็นค่าตัวเลขที่มีค่าจำกัดและไม่ติดลบ
restore_quote_channelsจำนวนช่องสัญญาณที่เป็นจำนวนเต็มและตรงตามตัวเลือกราคาที่เลือก ไม่ใช่คำขอเปลี่ยนเป็นแพ็กเกจที่มีจำนวนช่องสัญญาณต่างออกไป

ระบุฟิลด์ใบเสนอราคาที่เป็นตัวเลขทั้งหมดทุกครั้งที่ระบุรหัสราคาของใบเสนอราคา หากรหัสเปลี่ยนไป ราคาเกินเพดาน ไม่ได้ระบุเพดานหรือเพดานไม่ถูกต้อง จำนวนช่องสัญญาณเปลี่ยนไป หรือล็อกใบเสนอราคากำลังถูกใช้งาน ระบบจะส่งรหัส API 409 กลับมาก่อนส่งคำสั่งไปยังผู้ให้บริการเช่าที่เลือก การเปรียบเทียบยอมให้มีความคลาดเคลื่อนเล็กน้อยของเลขทศนิยมแบบลอยตัวได้ โปรดใช้ค่าของแพ็กเกจตามที่แสดงจริง แทนราคาที่ปัดเศษเอง

เงื่อนไขป้องกันเหล่านี้ไม่ได้ทำให้กระบวนการทั้งหมดเป็นการทดลองโดยไม่ดำเนินการจริงหรือเป็นธุรกรรมเดียว การค้นหาโปรไฟล์ลงทะเบียน การจัดเตรียมข้อมูลตัวตน หรืองานอื่นของฟังก์ชันช่วยอาจเกิดขึ้นก่อนการตรวจสอบเหล่านี้ และเงื่อนไขเหล่านี้ไม่ได้ตรึงรายการหมายเลขของผู้ให้บริการภายนอกหรือใช้แทนข้อจำกัดการซื้อระดับบัญชี

การลงทะเบียนและการเปิดใช้งาน

เมื่อจำเป็น ให้เพิ่มฟิลด์แบบฟอร์ม RegistrationID ที่มี UUID ของโปรไฟล์ลงทะเบียนที่ลูกค้าเป็นเจ้าของ ค่านี้ไม่ใช่รหัสหลักฐานที่อัปโหลด ที่อยู่ของผู้ให้บริการ หรือเอนทิตีข้อมูลตัวตนแยกต่างหาก ฟังก์ชันช่วยจะค้นหาโปรไฟล์โดยอ้างอิงบัญชีที่ผ่านการยืนยันตัวตน และปฏิเสธกรณีที่ไม่มีโปรไฟล์หรือโปรไฟล์ไม่พร้อมใช้งาน

หมายเลขที่รองรับบางกลุ่มอนุญาตให้ซื้อได้ก่อนลงทะเบียนเสร็จสมบูรณ์ ส่วนกลุ่มอื่นต้องมีโปรไฟล์ก่อนซื้อ ทั้งนี้อาจยังต้องผ่านการตรวจสอบหรือการจัดเตรียมบริการเฉพาะของผู้ให้บริการเครือข่าย อย่าตีความว่าการซื้อสำเร็จหรือการไม่มีการตรวจสอบล่วงหน้าหมายถึงได้รับการยกเว้นการลงทะเบียนหรือเปิดใช้งานได้ทันที

หากมีฟิลด์นี้ในผลตอบกลับ ค่า registration_requirements จะระบุข้อมูลสำหรับค้นหาข้อกำหนดแบบมีโครงสร้างตามประเทศและประเภทหมายเลข ใช้แค็ตตาล็อกการลงทะเบียนและกระบวนการส่งหลักฐานเพื่อดำเนินการตามข้อกำหนดที่เกี่ยวข้องให้ครบถ้วน ข้อความและข้อมูลเมตาที่ส่งกลับมาไม่ได้ถือเป็นการอนุมัติโปรไฟล์ด้วยตัวเอง

หลีกเลี่ยงการเปลี่ยนแพ็กเกจแทนโดยไม่แจ้งให้ทราบ

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

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

ไม่มีการรับประกันระยะเวลาจองหรืออายุแคชที่บังคับใช้เป็นมาตรฐานเดียวกันในทุกเส้นทาง กระบวนการจะตรวจสอบความพร้อมของหมายเลข ขีดจำกัดราคาของบัญชี และนโยบายการซื้ออีกครั้ง แต่พฤติกรรมเฉพาะของผู้ให้บริการทั้งหมดนั้นยังอยู่ระหว่างการตรวจสอบ

ขั้นสูง: ค่าเริ่มต้นการกำหนดเส้นทางของบัญชี

การซื้ออาจสืบทอดปลายทางสายโทรศัพท์ ปลายทางสำรองเมื่อเกิดความขัดข้อง ปลายทาง SMS และค่าทรังก์ต้นทางที่ต้องการซึ่งมีอยู่ในบัญชี ตรวจสอบค่าเริ่มต้นเหล่านี้ก่อนสั่งซื้อ การไม่ระบุตัวเลือกการกำหนดเส้นทางไม่ได้รับประกันว่าจะได้หมายเลขที่ยังไม่มีการกำหนดค่า ฟังก์ชันช่วยที่ตรวจสอบแล้วเปิดใช้การต่ออายุอัตโนมัติเป็นค่าเริ่มต้น

ตัวเลือกการกำหนดเส้นทางที่ฟังก์ชันช่วยส่วนกลางรองรับ
ตัวเลือกพฤติกรรมในการกำหนดค่าที่ใช้
uri, uri2, uri3ค่าที่ไม่ได้ระบุจะสืบทอดค่าเริ่มต้นของบัญชีที่ตรงกัน การระบุค่าว่างอย่างชัดเจนจะล้างค่าในฟังก์ชันช่วยแทนการสืบทอดค่า ใช้ปลายทางที่ถูกต้องและเหมาะสมกับโหมดการกำหนดเส้นทางที่เลือก
smsuriหากไม่ได้ระบุค่า จะสืบทอดปลายทาง SMS ของบัญชี การระบุค่าว่างอย่างชัดเจนจะล้างค่านั้นในฟังก์ชันช่วย
origintrunkรหัสทรังก์ที่ระบุอย่างชัดเจนและระบบรู้จักจะมีลำดับความสำคัญสูงกว่า หากไม่สามารถระบุทรังก์จากค่าได้ ระบบอาจใช้ค่าที่บัญชีกำหนดไว้หรือค่าเริ่มต้นรุ่นเก่าแทน โดยไม่ส่งข้อผิดพลาด
forward_destination, forwarding_destination, typeชื่อเรียกแทนสำหรับโหมดการกำหนดเส้นทางที่มีค่าไม่ว่าง โดยมีลำดับความสำคัญตามลำดับที่แสดง ใช้ค่าที่รองรับจากการกำหนดค่าเส้นทางของบัญชี ไม่ใช่รหัสโหมดตัวเลขที่คาดเดาเอง
RegistrationIDการค้นหาโปรไฟล์ลงทะเบียนที่จำกัดขอบเขตเฉพาะลูกค้ารายนั้น โดยแยกจากปลายทางการกำหนดเส้นทาง
autorenewค่าเริ่มต้นคือ 1 ฟังก์ชันช่วยใช้การตรวจสอบว่าค่าไม่ว่าง ดังนั้นค่า 0 จึงไม่ได้ปิดการต่ออายุผ่านฟิลด์การซื้อนี้อย่างแน่นอนเสมอไป ใช้วิธีจัดการการต่ออายุของบัญชีที่รองรับ และตรวจสอบการตั้งค่าที่บันทึกไว้

นี่คือความหมายและพฤติกรรมของฟังก์ชันช่วยส่วนกลาง ไม่ใช่การรับประกันว่าผู้ให้บริการทุกรายจะบันทึกการตั้งค่าทางเลือกทุกค่าในลักษณะเดียวกัน ยังมีฟิลด์รุ่นเก่าอื่นสำหรับเสียง ข้อความเสียง แฟกซ์ และ SMS แต่ยังต้องตรวจสอบเฉพาะผู้ให้บริการอย่างครบถ้วน ตรวจสอบการกำหนดค่าที่บันทึกไว้ของหมายเลขที่ซื้อผ่านกระบวนการของบัญชีก่อนนำไปใช้งานโทรศัพท์หรือข้อความ

ผลตอบกลับ

ตัวอย่างสมมติสำหรับการซื้อที่ไม่มีความซับซ้อน ค่าและความสามารถจะแตกต่างกันตามแพ็กเกจที่เลือก

{
  "status": {
    "code": 200,
    "msg": ""
  },
  "response": {
    "number": "12025550123",
    "price": {
      "per_minute": "0.0100",
      "free_minutes": "100",
      "setup_price": "2.00",
      "monthly_price": "4.00",
      "channels": "2",
      "overflow": "0"
    },
    "features": [
      "voice"
    ],
    "needs_registration": 0,
    "registration_requirements": null
  }
}

ส่วนประสานงานใช้ status.code/status.msg ของตัวเอง และโครงสร้างห่อหุ้ม response โดยไม่รับประกันว่าจะมีฟิลด์ status.results เมื่อเกิดข้อผิดพลาด โดยทั่วไปรายการผลตอบกลับจะว่าง เมื่อสำเร็จ ให้ตรวจสอบหมายเลขและราคาที่ส่งกลับมา จากนั้นตรวจสอบรายการหมายเลขของบัญชีและสถานะการลงทะเบียนให้ตรงกัน การที่ผู้ให้บริการยอมรับคำสั่งไม่ได้เป็นการทดสอบการโทร SMS หรือแฟกซ์จริง

ข้อผิดพลาดและผลลัพธ์ที่ยังไม่แน่นอน

รหัสผลลัพธ์หลักของส่วนประสานงาน
รหัส APIความหมาย
403ข้อจำกัดด้านราคาหรือการซื้อของบัญชี ตัวเลือกราคาที่ไม่พร้อมใช้งาน หรือโปรไฟล์ลงทะเบียนที่เข้าถึงไม่ได้ อาจขัดขวางการประมวลผล
404ไม่มีตัวเลือกหมายเลข ราคา หรือคำนำหน้าหมายเลขที่ระบุ หรือตัวเลือกนั้นไม่พร้อมใช้งาน
409หมายเลขเปิดใช้งานอยู่แล้ว เงื่อนไขตรวจสอบใบเสนอราคาไม่ตรงกันอีกต่อไป หรือการดำเนินการอื่นที่มีเงื่อนไขป้องกันกำลังถือล็อกอยู่
422จำเป็นต้องมีข้อมูลลงทะเบียน ข้อมูลไม่ครบถ้วน หรือไม่สามารถจัดเตรียมข้อมูลนั้นได้ในเส้นทางการลงทะเบียนที่ตรวจสอบแล้ว
500 และรหัสอื่นของผู้ให้บริการหรือบัญชีความล้มเหลวจากผู้ให้บริการ การประมวลผลภายในระบบ หรือนโยบาย รหัสเหล่านี้ไม่ใช่หลักฐานที่ยืนยันได้ในทุกกรณีว่าไม่มีการซื้อหรือการเรียกเก็บเงินเกิดขึ้น

อ่านเนื้อหาผลตอบกลับ API ที่ได้รับจริงควบคู่กับสถานะ HTTP ผู้ให้บริการภายนอกอาจยอมรับการเช่าแล้วก่อนที่การแจ้งเตือน การลงทะเบียน หรือการประมวลผลอื่นภายในระบบจะล้มเหลว การจัดสรรหมายเลขจากรายการภายในระบบบางกรณีใช้ธุรกรรมฐานข้อมูล แต่ไม่มีการย้อนกลับคำสั่งซื้อของผู้ให้บริการภายนอกที่ใช้ได้กับทุกกรณี ส่วนประสานงานนี้ไม่มีคีย์ฝั่งไคลเอนต์สำหรับป้องกันการดำเนินการซ้ำ

ตรวจสอบข้อมูลให้ตรงกันก่อนลองอีกครั้ง

  1. บันทึกหมายเลข ราคา และเพดานค่าของใบเสนอราคาที่ได้รับอนุมัติไว้ในบันทึกคำสั่งซื้อของแอปพลิเคชันก่อนส่งคำขอเพียงครั้งเดียว
  2. หลังส่งคำขอ ให้อ่านรายการหมายเลขที่ซื้อและรายละเอียดหมายเลขของบัญชีเดียวกัน รวมถึงกรณีที่หมดเวลารอหรือเกิดข้อผิดพลาด
  3. หากพบหมายเลขนั้น ให้ตรวจสอบราคา การต่ออายุ การกำหนดเส้นทาง และสถานะการลงทะเบียน แทนการส่งคำขอซื้ออีกครั้ง
  4. หากผลลัพธ์ยังไม่แน่นอน ให้ฝ่ายสนับสนุนตรวจสอบคำสั่งซื้อกับผู้ให้บริการและการเรียกเก็บเงินของบัญชีให้ตรงกันก่อนลองอีกครั้ง ข้อความแสดงข้อผิดพลาดหรือแฟล็กความสำเร็จในบันทึกระบบรุ่นเก่าเพียงอย่างเดียวไม่ใช่หลักฐานที่เพียงพอ
  5. หลังยืนยันความเป็นเจ้าของและการเปิดใช้งานแล้ว ให้ดำเนินการตรวจสอบการกำหนดเส้นทางและทดสอบบริการตามปกติของบัญชีให้ครบถ้วน