การให้ประสบการณ์ในการสั่งซื้อและประสบการณ์หลังการขายที่มีคุณภาพสูงมีความสำคัญอย่างยิ่ง เพื่อให้ลูกค้าไว้วางใจและเกิดคอนเวอร์ชั่น/การรักษาลูกค้าไว้ การรับรองว่าคำสั่งซื้อได้รับการประมวลผลและซิงค์ให้ตรงกันระหว่างระบบของ Meta กับระบบของผู้ค้าจะทำให้ลูกค้าได้รับประสบการณ์ที่ถูกต้องและเชื่อถือได้ ซึ่งช่วยลดปัญหาทั้งในฝั่งของลูกค้าและผู้ค้า
การไม่รับทราบ/ให้การสนับสนุนหลังการขายอย่างทันท่วงทีในกรณีที่มีการคืนเงิน/คืนสินค้าอาจส่งผลให้ฝ่ายบริการต้องเป็นผู้ดำเนินการคืนเงิน โดยค่าใช้จ่ายจะตกอยู่กับผู้ค้า
ประสบการณ์การจัดการคำสั่งซื้อที่ดีเยี่ยมสำหรับผู้ขาย คือการที่ผู้ขายสามารถดำเนินงานที่ต้องทำ (JTBD) ดังต่อไปนี้ให้เสร็จสมบูรณ์ได้ในระบบการจัดการคำสั่งซื้อ (OMS) ที่ผู้ขายใช้งานอยู่แล้ว
คุณจะต้องช่วยเหลือลูกค้าในการส่งคืนสินค้า ยกเว้นในกรณีที่มีการทำเครื่องหมายสินค้าเป็น final sale
ตามค่าเริ่มต้นแล้ว ผู้ซื้อมีเวลา 30 วันในการเริ่มต้นการคืนสินค้า แต่ผู้ขายก็สามารถกำหนดค่านโยบายการคืนสินค้าในระดับสินค้าได้ด้วยเช่นกัน ผู้ซื้อสามารถไปที่สรุปคำสั่งซื้อของตนเองเพื่อขอคืนสินค้าได้ ซึ่งจะเริ่มต้นขั้นตอนใดขั้นตอนหนึ่งต่อไปนี้
Returns URL
ในการตั้งค่าการคืนสินค้าของร้านค้า หากมีติดป้ายการคืนสินค้าไว้ในแพ็คเกจ ลูกค้าสามารถคืนสินค้าได้โดยตรงโดยไม่ต้องใช้แอพ Facebook หรือ Instagram เมื่อผู้ขายได้รับสินค้าที่ส่งคืนแล้ว ผู้ขายควรจะเริ่มทำการคืนเงิน
หากต้องการทำความเข้าใจแบบองค์รวมถึงสถานะ การเปลี่ยนผ่าน และการทำงานต่างๆ ของคำสั่งซื้อที่เกี่ยวกับคำสั่งซื้อบนแพลตฟอร์มการค้าของ Meta โปรดดูที่วงจรของคำสั่งซื้อ แม้ภาพรวมนี้จะอธิบายจากมุมมองการผสานการทำงานกับผู้ขาย (หรือผู้ค้า) โดยตรง แต่ก็สามารถใช้กับการผสานการทำงานแบบใช้พาร์ทเนอร์ได้เป็นอย่างดี ซึ่งในกรณีนี้ แพลตฟอร์มของพาร์ทเนอร์จะทำหน้าที่แทนผู้ขาย
หากผู้ขายเริ่มต้นใช้งานสำเร็จและอัพโหลดสินค้าคงคลังไปยัง Meta แล้ว สินค้าของผู้ขายก็จะพร้อมให้ลูกค้าเข้ามาเลือกซื้อได้ คุณสามารถใช้ API การจัดการคำสั่งซื้อจากแพลตฟอร์มการค้าได้ เพื่อย้ายคำสั่งซื้อต่างๆ ของผู้ขายที่คุณสนับสนุนอยู่ไปจัดการในระบบของคุณ
คุณจะต้องดำเนินการดังต่อไปนี้เพื่อให้เป็นไปตามเกณฑ์ด้านคุณภาพในการผสานการทำงานสำหรับร้านค้าของเรา
ข้อกำหนดที่ 1: รับและรับทราบคำสั่งซื้อต่างๆ จาก Meta
ข้อกำหนดที่ 2: ซิงค์สถานะคำสั่งซื้อจาก OMS ไปยัง Meta
แอพของคุณต้องมีสิทธิ์การอนุญาตต่อไปนี้
หากต้องการจัดการคำสั่งซื้อผ่าน 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 คำสั่งซื้อ
เมื่อคำสั่งซื้อได้รับการประมวลผลบนแพลตฟอร์มการค้าของ 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 การรับทราบ
ผู้ขายสามารถยกเลิกคำสั่งซื้อหรือรายการสินค้าบางส่วนในคำสั่งซื้อที่มีสถานะเป็น 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 รายการที่มีการยกเลิก
เมื่อผู้ขายเริ่มดำเนินการตามคำสั่งซื้อ ให้ซิงค์สถานะการดำเนินการตามคำสั่งซื้อของคำสั่งซื้อนั้นๆ จาก 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 การดำเนินการตามคำสั่งซื้อ
ผู้ขายสามารถเริ่มการคืนเงินแบบบางส่วนหรือเต็มจำนวนได้ (ตามจำนวนหรือราคา) โดยมักเกิดขึ้นหลังจากผู้ซื้อรายงานว่าสินค้ามีปัญหา เมื่อผู้ขายเริ่มดำเนินการคืนเงิน ให้ซิงค์สถานะคำสั่งซื้อที่มีการคืนเงินจาก 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 การคืนเงิน