การผสานการทำงานของคำสั่งซื้อ

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

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

การไม่รับทราบ/ให้การสนับสนุนหลังการขายอย่างทันท่วงทีในกรณีที่มีการคืนเงิน/คืนสินค้าอาจส่งผลให้ฝ่ายบริการต้องเป็นผู้ดำเนินการคืนเงิน โดยค่าใช้จ่ายจะตกอยู่กับผู้ค้า

ประสบการณ์การจัดการคำสั่งซื้อที่ดีเยี่ยมสำหรับผู้ขาย คือการที่ผู้ขายสามารถดำเนินงานที่ต้องทำ (JTBD) ดังต่อไปนี้ให้เสร็จสมบูรณ์ได้ในระบบการจัดการคำสั่งซื้อ (OMS) ที่ผู้ขายใช้งานอยู่แล้ว

  • ประมวลผลและดำเนินการตามคำสั่งซื้อใหม่
  • ยกเลิกคำสั่งซื้อบางส่วนหรือทั้งหมด เพื่อแจ้งให้ลูกค้าทราบถึงปัญหาในการดำเนินการตามคำสั่งซื้อ
  • คืนเงินสำหรับคำสั่งซื้อเป็นบางส่วนหรือทั้งหมดให้กับลูกค้า

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

  • เปิดเว็บไซต์การคืนสินค้าของผู้ขาย หากมีการกำหนดค่า Returns URL ในการตั้งค่าการคืนสินค้าของร้านค้า
  • ส่งอีเมลไปยังที่อยู่ติดต่อของฝ่ายบริการลูกค้าของผู้ขายที่ลงทะเบียนไว้ในการตั้งค่าร้านค้า

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

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

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

ข้อกำหนด

คุณจะต้องดำเนินการดังต่อไปนี้เพื่อให้เป็นไปตามเกณฑ์ด้านคุณภาพในการผสานการทำงานสำหรับร้านค้าของเรา

ข้อกำหนดที่ 1: รับและรับทราบคำสั่งซื้อต่างๆ จาก Meta

ข้อกำหนดที่ 2: ซิงค์สถานะคำสั่งซื้อจาก OMS ไปยัง Meta

ก่อนเริ่มต้น

แอพของคุณต้องมีสิทธิ์การอนุญาตต่อไปนี้

ข้อกำหนดที่ 1: รับและรับทราบคำสั่งซื้อต่างๆ จาก Meta มายัง OMS

ขั้นตอนที่ 1: รับคำสั่งซื้อใหม่ๆ

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

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

ตัวอย่างคำขอ

curl -X POST \
  -F 'access_token=<ACCESS_TOKEN>' \
  https://graph.facebook.com/{api-version}/{cms-id}/order_management_apps

ตัวอย่างการตอบกลับ

{
    "success": true
}

คำสั่งซื้อที่เกิดขึ้นบน Facebook หรือ Instagram จะถูกระงับไว้ขณะที่ระบบภายในของเรากำลังประมวลผลอยู่ นอกจากนี้ เราตั้งใจให้เกิดความล่าช้าเช่นนี้เพื่อเปิดโอกาสให้ผู้ซื้อสามารถยกเลิกคำสั่งซื้อได้ในกรณีที่เปลี่ยนใจ หลังจาก Meta ได้ตรวจสอบยืนยันแล้วว่าธุรกรรมชอบด้วยกฎหมาย คำสั่งซื้อของธุรกรรมนั้นก็จะพร้อมสำหรับขั้นตอนการดำเนินการตามคำสั่งซื้อ เมื่อผู้ขายดำเนินการตามคำสั่งซื้อ ระบบจะเก็บบันทึกจำนวนเงินของการดำเนินการตามคำสั่งซื้อนั้นๆ และเริ่มกระบวนการชำระเงินให้กับผู้ขาย

ใช้ API ทำรายการคำสั่งซื้อสำหรับค้นหาคำสั่งซื้อใหม่ ซึ่งเป็นกลไกแบบพุชที่คุณจะตรวจสอบสถานะของ API อยู่เสมอเพื่อค้นหาคำสั่งซื้อใหม่ๆ ที่ต้องดำเนินการ เราขอแนะนำให้เว้นช่วง 5-15 นาที ระหว่างการตรวจสอบสถานะแต่ละครั้ง โดยค่าเริ่มต้นแล้ว API นี้จะแสดงรายการคำสั่งซื้อทางการค้าทั้งหมดที่เชื่อมโยงกับร้านค้า โดยส่งคืนเฉพาะคำสั่งซื้อที่มีสถานะเป็น CREATED

ตัวอย่างคำขอ

curl -X GET -G \
  -d 'state=CREATED' \
  -d 'fields=id,buyer_details,channel,merchant_order_id,order_status' \
  -d 'access_token=<ACCESS_TOKEN>' \
  https://graph.facebook.com/{api-version}/{cms-id}/commerce_orders

ตัวอย่างการตอบกลับ

{
  "data": [
    {
      "id": "3565497390177110",
      "buyer_details": {
        "name": "John Doe",
        "email": "7dvra5wfy2@commerce.facebook.com",
        "email_remarketing_option": false
      },
      "channel": "facebook",
      "order_status": {
        "state": "CREATED"
      }
    }
  ],
  "paging": {
    "cursors": {
      "before": "--SANITIZED--",
      "after": "--SANITIZED--"
    }
  }
}

การตอบกลับจะมีตัวแปร ORDER_ID ในช่อง data[].id ซึ่งจะนำมาใช้กับคำขอหลังจากนั้นเพื่อระบุการดำเนินการของคำสั่งซื้อนี้โดยเฉพาะ ทั้งนี้อาจมีคำสั่งซื้อใหม่ๆ เพิ่มเติมปรากฏในการตอบกลับได้ หากต้องการให้แน่ใจว่าคุณได้รับคำสั่งซื้อใหม่ครบทั้งหมด ให้ใช้เคอร์เซอร์การแบ่งหน้า โปรดเรียนรู้เพิ่มเติมเกี่ยวกับ API คำสั่งซื้อ

ขั้นตอนที่ 2: รับทราบคำสั่งซื้อ

เมื่อคำสั่งซื้อได้รับการประมวลผลบนแพลตฟอร์มการค้าของ Meta (การตรวจสอบการฉ้อโกง และอื่นๆ) เรียบร้อยแล้ว ระบบจะเปลี่ยนสถานะของคำสั่งซื้อนั้นๆ เป็น CREATED โดยอัตโนมัติ โปรดเรียนรู้เพิ่มเติมเกี่ยวกับสถานะคำสั่งซื้อ

การรับทราบคำสั่งซื้อจะเป็นการยืนยันว่าคุณได้ย้ายคำสั่งซื้อนั้นไปไว้ในระบบการจัดการคำสั่งซื้อ (OMS) และพร้อมให้ผู้ขายดำเนินการตามคำสั่งซื้อนั้นๆ แล้ว คุณควรตรวจสอบให้แน่ใจว่าผู้ขายมีสินค้าคงคลังเพียงพอ และมีการกันสินค้าคงคลังดังกล่าวไว้ในขณะที่คุณรับทราบคำสั่งซื้อ การรับทราบคำสั่งซื้อจะเป็นการเปลี่ยนสถานะของคำสั่งซื้อนั้นๆ เป็น IN_PROGRESS

อย่าเริ่มประมวลผลคำสั่งซื้อที่ยังไม่มีการรับทราบเป็นที่สำเร็จในระบบของคุณ

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

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

ตัวอย่างคำขอ

curl -X POST \
  -F '{
    "idempotency_key": "<UUID>"
  }' \
  -F 'access_token=<ACCESS_TOKEN>' \
  https://graph.facebook.com/{api-version}/{order-id]/acknowledge_order

ตัวอย่างคำขอ (แบบไม่ใช่แบตช์)

{
  "id": "3565497390177110",
  "state": "IN_PROGRESS"
}

ตัวอย่างคำขอ (แบบแบตช์)

{
  "idempotency_key": "cb090e84-e75a-9a34-45d3-5163bec88b65",
  "orders": [
    {
      "id": "64000841790004"
    },
    {
      "id": "10100677592885259"
    }
  ]
}

หากมีคำสั่งซื้อที่มีสถานะ FB_PROCESSING ไม่มาก คุณจะไม่สามารถใช้คำสั่ง ACK กับคำสั่งซื้อเหล่านั้นได้ และจะได้รับข้อยกเว้นแบบโค้ด การส่งคำขอซ้ำๆ โดยใช้คีย์นิจพล (Idempotency) แบบเดิมก็จะให้ผลลัพธ์ไม่ต่างกัน เมื่อคุณได้รับข้อยกเว้นแบบโค้ด เราขอแนะนำให้คุณใช้คีย์นิจพล (Idempotency) แบบใหม่และลองอีกครั้ง

ตัวอย่างการตอบกลับ (แบบแบตช์)

{
  "orders": [
    {
      "id": "64000841790004",
      "state": "IN_PROGRESS"
    },
    {
      "id": "10100677592885259",
      "error": {
        "error_code": 2361003,
        "error_message": "Invalid Order ID"
      }
    }
  ]
}

โปรดเรียนรู้เพิ่มเติมเกี่ยวกับ API การรับทราบ

ข้อกำหนดที่ 2: ซิงค์สถานะคำสั่งซื้อจาก OMS ไปยัง Meta

ขั้นตอนที่ 1: ซิงค์การยกเลิกคำสั่งซื้อ

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

ตัวอย่างคำขอ

curl -X POST \
  -F 'access_token=<ACCESS_TOKEN>' \
  https://graph.facebook.com/{api-version}/{order-id}/cancellations

ตัวอย่างคำขอ (คำสั่งซื้อทั้งหมด)

  "cancel_reason": {
    "reason_code": "CUSTOMER_REQUESTED",
    "reason_description": "Buyer did not need it anymore"
  },
  "restock_items": true,
  "idempotency_key": "cb090e84-e75a-9a34-45d3-5153bec88b65"
}

ตัวอย่างคำขอ (คำสั่งซื้อบางส่วน)

{
  "cancel_reason": {
    "reason_code": "OUT_OF_STOCK",
    "reason_description": "Ran out of item"
  },
  "restock_items": false,
  "items": [
    {
      "retailer_id": "FB_product_1234",
      "quantity": 1
    }
  ],
  "idempotency_key": "cb090e84-e75a-9a34-45d3-5153bec88b65"
}

ตัวอย่างการตอบกลับ

{
  "success": true
}

โปรดเรียนรู้เพิ่มเติมเกี่ยวกับ API การยกเลิก

สิ่งสำคัญที่คุณควรทราบคือ เมื่อคำสั่งซื้อพร้อมสำหรับการดำเนินการแล้ว ผู้ขายจะต้องปฏิบัติตาม SLA ในการดำเนินการตามคำสั่งซื้อ หากผู้ขายไม่ดำเนินการตามคำสั่งซื้อภายในกรอบเวลาที่เหมาะสม Meta อาจยกเลิกสินค้าที่ยังไม่ได้ดำเนินการภายในคำสั่งซื้อโดยอัตโนมัติ

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

ขั้นตอนที่ 2: ซิงค์การดำเนินการตามคำสั่งซื้อ

เมื่อผู้ขายเริ่มดำเนินการตามคำสั่งซื้อ ให้ซิงค์สถานะการดำเนินการตามคำสั่งซื้อของคำสั่งซื้อนั้นๆ จาก OMS ของคุณไปยัง Meta โดยเรียกใช้ API การจัดส่งโดยใช้ ORDER_ID ที่เชื่อมโยงกับรหัสผู้ให้บริการขนส่งและหมายเลขติดตามพัสดุ

ผู้ขายสามารถเลือกดำเนินการตามคำสั่งซื้อโดยใช้การจัดส่ง 1 รายการหรือมากกว่านั้นได้ ให้ใช้ช่อง items เพื่อระบุรายการ retailer_id และ quantity ที่แสดงว่าการจัดส่งแต่ละรายการมีสินค้าอะไรบ้างและมีจำนวนกี่ชิ้น ให้ตั้งค่าช่องคำขอ external_shipment_id เป็นตัวระบุ (แบบมีตัวอักษรคละกับตัวเลข และ “_”) ใน OMS ของคุณเพื่ออ้างอิงถึงการจัดส่งนี้ในภายหลัง เมื่อการจัดส่งแนบอยู่กับคำสั่งซื้อบน Meta แล้ว ระบบก็จะเรียกเก็บเงินกับผู้ซื้อ

ตัวอย่างคำขอ

curl -X POST \
  -F '{
    "external_shipment_id": "shipment_1",
    "items": [
      {
        "retailer_id": "FB_T_Shirt_001",
        "quantity": 1
      }
    ],
    "tracking_info": {
      "tracking_number": "1Z204E380338943508",
      "carrier": "UPS",
    },
    "idempotency_key": "<UUID>"
  }' \
  -F 'access_token=<ACCESS_TOKEN>' \
  https://graph.facebook.com/{api-version]/{order-id}/shipments

ตัวอย่างการตอบกลับ

{
  "success": true
}

โปรดเรียนรู้เพิ่มเติมเกี่ยวกับ API การดำเนินการตามคำสั่งซื้อ

ขั้นตอนที่ 3: ซิงค์การคืนเงินสำหรับคำสั่งซื้อ

ผู้ขายสามารถเริ่มการคืนเงินแบบบางส่วนหรือเต็มจำนวนได้ (ตามจำนวนหรือราคา) โดยมักเกิดขึ้นหลังจากผู้ซื้อรายงานว่าสินค้ามีปัญหา เมื่อผู้ขายเริ่มดำเนินการคืนเงิน ให้ซิงค์สถานะคำสั่งซื้อที่มีการคืนเงินจาก OMS ของคุณไปยัง Meta โดยเรียกใช้ API คืนเงินคำสั่งซื้อพร้อมระบุ ORDER_ID และโค้ดเหตุผล (ดูรายการเหตุผลในการคืนเงินที่สามารถใช้ได้ที่ Enum refund_reason_code) การทำเช่นนี้จะส่งผลให้ Meta ดำเนินธุรกรรมการชำระเงินแบบย้อนกลับไปยังผู้ซื้อ และจะหักเงินในจำนวนเดียวกันออกจากยอดเงินคงเหลือของผู้ขาย

ตัวอย่างคำขอ

curl -X POST \
  -F '{
   "reason_code": "WRONG_ITEM",
   "idempotency_key": "<UUID>"
}' \
  -F 'access_token=<ACCESS_TOKEN>' \
  https://graph.facebook.com/{api-version}/{order-id}/refunds

ตัวอย่างคำขอ (คำสั่งซื้อทั้งหมด)

{
    "reason_code": "WRONG_ITEM",
    "idempotency_key": "cb090e84-e75a-9a34-45d3-5153bec88b65"
}

ตัวอย่างคำขอ (คำสั่งซื้อบางส่วน)

{
  "items": [
    {
      "item_id": "1234",
      "item_refund_quantity": 1
    },
    {
      "item_id": "38383838",
      "item_refund_amount": {
        "amount": "2.5",
        "currency": "USD"
      }
    }
  ],
  "shipping": {
    "shipping_refund": {
      "amount": "2.4",
      "currency": "USD"
    }
  },
  "deductions": [
    {
      "deduction_type": "RETURN_SHIPPING",
      "deduction_amount": {
        "amount": "5.5",
        "currency": "USD"
      }
    }
  ],
  "reason_code": "WRONG_ITEM",
  "idempotency_key": "cb090e84-e75a-9a34-45d3-5153bec88b65"
}

ตัวอย่างการตอบกลับ

{
  "success": true
}

โปรดเรียนรู้เพิ่มเติมเกี่ยวกับ API การคืนเงิน