order_details ข้อความ order_details คือข้อความ interactive ประเภทใหม่ ซึ่งมีองค์ประกอบหลัก 4 อย่างที่เหมือนกัน ได้แก่ ส่วนหัว, เนื้อความ, ส่วนท้าย และการดำเนินการ ภายในองค์ประกอบ action ธุรกิจจะต้องระบุข้อมูลทั้งหมดที่ลูกค้าจำเป็นต้องใช้ในการดำเนินการชำระเงินให้เสร็จสมบูรณ์order_details แต่ละรายการจะมี ID reference_id ที่ไม่ซ้ำกันซึ่งธุรกิจเป็นผู้จัดเตรียมให้ และหมายเลขนั้นจะใช้ตลอดทั้งขั้นตอนในการติดตามคำสั่งซื้อorder_details ไปยังผู้ใช้ เมื่อผู้ใช้แตะ "ตรวจสอบและชำระเงิน" ผู้ใช้จะเห็นรายละเอียดเกี่ยวกับคำสั่งซื้อและยอดรวมที่ต้องชำระ

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

order_details ธุรกิจต้องรวบรวมอ็อบเจ็กต์แบบอินเทอร์แอคทีฟที่มีประเภทเป็น order_details พร้อมองค์ประกอบต่อไปนี้| อ็อบเจ็กต์ | คำอธิบาย |
|---|---|
typeอ็อบเจ็กต์ | จำเป็นต้องระบุ ต้องเป็น "order_details" |
headerอ็อบเจ็กต์ | ระบุหรือไม่ก็ได้ เนื้อหาส่วนหัวที่แสดงอยู่ด้านบนข้อความ หากไม่ได้ระบุส่วนหัวไว้ API จะใช้รูปภาพของสินค้ารายการแรกที่มีอยู่เป็นส่วนหัว |
bodyอ็อบเจ็กต์ | จำเป็นต้องระบุ อ็อบเจ็กต์ที่มีเนื้อหาของข้อความ อ็อบเจ็กต์นี้ประกอบด้วยช่องต่อไปนี้ สตริง text
|
footerอ็อบเจ็กต์ | ระบุหรือไม่ก็ได้ อ็อบเจ็กต์ที่มีส่วนท้ายของข้อความ อ็อบเจ็กต์นี้ประกอบด้วยช่องต่อไปนี้ สตริง text
|
actionอ็อบเจ็กต์ | จำเป็นต้องระบุ อ็อบเจ็กต์การดำเนินการที่คุณต้องการให้ผู้ใช้ทำหลังจากอ่านข้อความ อ็อบเจ็กต์การดำเนินการนี้ประกอบด้วยช่องต่อไปนี้ สตริง name
อ็อบเจ็กต์ parameters
|
| อ็อบเจ็กต์ | คำอธิบาย |
|---|---|
reference_idสตริง | จำเป็นต้องระบุ ตัวระบุที่ไม่ซ้ำกันสำหรับคำสั่งซื้อหรือใบเรียกเก็บเงินที่ธุรกิจระบุ โดยจะต้องตรงตามตัวพิมพ์เล็กหรือพิมพ์ใหญ่และไม่สามารถเว้นว่างได้ และมีได้เฉพาะตัวอักษรภาษาอังกฤษ, ตัวเลข, ขีดล่าง, ขีดกลาง หรือจุดเท่านั้น และควรมีตัวอักษรไม่เกิน 35 ตัว reference_id ต้องไม่ซ้ำกันสำหรับแต่ละข้อความ order_details ของธุรกิจนั้นๆ หากจำเป็นต้องส่งข้อความ order_details หลายรายการสำหรับคำสั่งซื้อเดียวกัน ขอแนะนำให้ใส่หมายเลขลำดับใน reference_id (ตัวอย่างเช่น "BM345A-12") เพื่อให้แน่ใจว่า reference_id นั้นไม่ซ้ำกัน |
typeอ็อบเจ็กต์ | จำเป็นต้องระบุ ประเภทสินค้าที่ชำระเงินในคำสั่งซื้อนี้ ตัวเลือกที่รองรับในปัจจุบันคือ digital-goods และ physical-goods |
beneficiariesอาร์เรย์ | ต้องระบุสำหรับสินค้าที่จับต้องได้ที่มีการจัดส่ง อาร์เรย์ของผู้รับผลประโยชน์สำหรับคำสั่งซื้อนี้ ผู้รับผลประโยชน์คือผู้รับที่กำหนดไว้สำหรับการจัดส่งสินค้าที่จับต้องได้ตามคำสั่งซื้อนั้นๆ ซึ่งประกอบด้วยช่องต่อไปนี้ หมายเหตุ: ข้อมูลผู้รับผลประโยชน์จะไม่แสดงให้ผู้ใช้เห็น แต่ต้องระบุเนื่องด้วยเหตุผลทางกฎหมายและการปฏิบัติตามข้อกำหนด สตริง name
สตริง address_line1
สตริง address_line2
สตริง city
สตริง state
สตริง country
สตริง postal_code
|
currency | จำเป็นต้องระบุ สกุลเงินสำหรับคำสั่งซื้อนี้ ขณะนี้รองรับเฉพาะค่า INR เท่านั้น |
total_amountอ็อบเจ็กต์ | จำเป็นต้องระบุ อ็อบเจ็กต์ total_amount ประกอบด้วยช่องต่อไปนี้จำนวนเต็ม offset
จำนวนเต็ม value
total_amount.value ต้องเท่ากับ order.subtotal.value + order.tax.value + order.shipping.value - order.discount.valueธุรกรรม UPI มีขีดจำกัดอยู่ที่ ₹5,00,000 สำหรับจำนวนเงินที่สูงกว่านั้น ให้ตั้งค่า enabled_payment_options เป็น ["web"] โปรดดูการจำกัดตัวเลือกการชำระเงินที่มี |
payment_settingsอ็อบเจ็กต์ | จำเป็นต้องระบุ ดูข้อมูลเพิ่มเติมที่อ็อบเจ็กต์การตั้งค่าการชำระเงิน |
orderอ็อบเจ็กต์ | จำเป็นต้องระบุ ดูข้อมูลเพิ่มเติมที่อ็อบเจ็กต์คำสั่งซื้อ |
| อ็อบเจ็กต์ | คำอธิบาย |
|---|---|
typeสตริง | จำเป็นต้องระบุ ต้องตั้งค่าเป็น "payment_gateway" |
payment_gatewayอ็อบเจ็กต์ | จำเป็นต้องระบุ อ็อบเจ็กต์ที่อธิบายข้อมูลบัญชีการชำระเงิน: สตริง type
สตริง configuration_name
เมื่อ configuration_name ไม่ถูกต้อง ลูกค้าจะไม่สามารถชำระเงินสำหรับคำสั่งซื้อของตนได้ เราขอแนะนำเป็นอย่างยิ่งให้ธุรกิจทำการทดสอบการตั้งค่านี้อย่างทั่วถึงในระหว่างขั้นตอนการผสานการทำงานอ็อบเจ็กต์ billdesk/razorpay/payu/zaakpay
โปรดดูข้อมูลเพิ่มเติมที่อ็อบเจ็กต์ UDF เฉพาะเกตเวย์การชำระเงิน |
notes, receipt และ udf ในข้อความรายละเอียดคำสั่งซื้อ และรับข้อมูลนี้กลับไปยังสัญญาณการชำระเงินแล้ว เราจะมาดูผู้ขายที่สามารถส่งผ่านช่อง additional_info สำหรับ BillDesk, ช่อง notes และ receipt สำหรับ Razorpay, ช่อง udf สำหรับ PayU, ช่อง extra สำหรับ Zaakpay PG ได้กัน| อ็อบเจ็กต์ | คำอธิบาย |
|---|---|
notesอ็อบเจ็กต์ | ระบุหรือไม่ก็ได้
อ็อบเจ็กต์สามารถเป็นคู่คีย์-ค่าได้ โดยมีคีย์ได้สูงสุด 15 รายการและแต่ละค่ามีตัวอักษรได้ไม่เกิน 256 ตัว |
receiptสตริง | ระบุหรือไม่ก็ได้
หมายเลขใบเสร็จที่สอดคล้องกับคำสั่งซื้อนี้ ซึ่งตั้งไว้สำหรับการอ้างอิงภายในของคุณ รองรับความยาวไม่เกิน 40 ตัวอักษรและต้องมีตัวอักษรมากกว่า 0 ตัว |
udf1-4สตริง | ระบุหรือไม่ก็ได้
ช่องที่ผู้ใช้กำหนด (udf) ใช้เพื่อจัดเก็บข้อมูลใดๆ ที่เกี่ยวข้องกับคำสั่งซื้อบางรายการ ช่อง UDF แต่ละช่องมีจำนวนตัวอักษรได้สูงสุด 255 ตัว |
extra1-2สตริง | ระบุหรือไม่ก็ได้
ช่องที่ผู้ใช้กำหนด (เพิ่มเติม) ใช้เพื่อจัดเก็บข้อมูลใดๆ ที่เกี่ยวข้องกับคำสั่งซื้อบางรายการ ช่องเพิ่มเติมแต่ละช่องมีจำนวนตัวอักษรได้สูงสุด 180 ตัว |
additional_info1-7สตริง | ระบุหรือไม่ก็ได้
ช่องที่ผู้ใช้กำหนด (เพิ่มเติม) ใช้เพื่อจัดเก็บข้อมูลใดๆ ที่เกี่ยวข้องกับคำสั่งซื้อบางรายการ ช่องเพิ่มเติมแต่ละช่องมีจำนวนตัวอักษรได้สูงสุด 120 ตัว |
| อ็อบเจ็กต์ | คำอธิบาย |
|---|---|
statusสตริง | จำเป็นต้องระบุ ค่าที่รองรับในข้อความ order_details คือ pending เท่านั้นในข้อความ order_statusstatus อาจเป็น pending, captured หรือ failed |
สตริง type | ระบุหรือไม่ก็ได้ รองรับเฉพาะค่า quick_pay เท่านั้น เมื่อส่งช่องนี้ เราจะซ่อนปุ่ม "ตรวจสอบและชำระเงิน" และแสดงเฉพาะปุ่ม "ชำระเงินเลย" ในบับเบิลรายละเอียดคำสั่งซื้อเท่านั้น |
itemsอ็อบเจ็กต์ | จำเป็นต้องระบุ อ็อบเจ็กต์ที่มีรายการสินค้าสำหรับคำสั่งซื้อนี้ โดยมีช่องต่อไปนี้ สตริง retailer_id
สตริง name
อ็อบเจ็กต์ image
การใช้ช่องรูปภาพนี้จะจำกัดอาร์เรย์สินค้าให้มีสินค้าได้สูงสุด 10 รายการ และไม่สามารถใช้กับ retailer_id หรือ catalog_id ได้อ็อบเจ็กต์จำนวน amount ที่มีค่าและจำนวนชดเชย ดูช่องจำนวนทั้งหมดด้านบน
อ็อบเจ็กต์จำนวน sale_amount
จำนวนเต็ม quantity
สตริง country_of_origin
สตริง importer_name
สตริง importer_adress
|
subtotalอ็อบเจ็กต์ | จำเป็นต้องระบุ ค่าต้องเท่ากับผลรวมของ order.amount.value * order.amount.quantity โปรดอ่านคำอธิบายของช่อง offset และ value ในคำอธิบายของ total_amountช่องต่อไปนี้เป็นส่วนหนึ่งของอ็อบเจ็กต์ subtotalจำนวนเต็ม offset
จำนวนเต็ม value
|
taxอ็อบเจ็กต์ | จำเป็นต้องระบุ ข้อมูลภาษีสำหรับคำสั่งซื้อนี้ ซึ่งประกอบด้วยช่องต่อไปนี้ จำนวนเต็ม offset
จำนวนเต็ม value
สตริง description
|
shippingอ็อบเจ็กต์ | ระบุหรือไม่ก็ได้ ค่าจัดส่งของคำสั่งซื้อ อ็อบเจ็กต์นี้ประกอบด้วยช่องต่อไปนี้ จำนวนเต็ม offset
จำนวนเต็ม value
สตริง description
|
discountอ็อบเจ็กต์ | ระบุหรือไม่ก็ได้ ส่วนลดสำหรับคำสั่งซื้อ อ็อบเจ็กต์นี้ประกอบด้วยช่องต่อไปนี้ จำนวนเต็ม offset
จำนวนเต็ม value
สตริง description
สตริง discount_program_name
|
catalog_idอ็อบเจ็กต์ | ระบุหรือไม่ก็ได้ ตัวระบุที่ไม่ซ้ำกันของแค็ตตาล็อก Facebook ที่ธุรกิจใช้งานอยู่ หากคุณไม่ได้ระบุช่องนี้ คุณต้องระบุช่องต่อไปนี้ภายในอ็อบเจ็กต์สินค้า: country_of_origin, importer_name และ importer_address |
expirationอ็อบเจ็กต์ | ระบุหรือไม่ก็ได้ วันหมดอายุสำหรับคำสั่งซื้อนั้น ธุรกิจต้องกำหนดช่องต่อไปนี้ภายในอ็อบเจ็กต์นี้ สตริง timestamp คือประทับเวลา UTC ในหน่วยวินาทีของเวลาที่คำสั่งซื้อควรหมดอายุ เกณฑ์ขั้นต่ำคือ 300 วินาทีสตริง description คือข้อความอธิบายการหมดอายุ มีความยาวได้สูงสุด 120 ตัวอักษร |
| อ็อบเจ็กต์ | คำอธิบาย |
|---|---|
สตริง link | จำเป็นต้องระบุ ลิงก์ไปยังรูปภาพที่จะแสดงให้ผู้ใช้เห็น ต้องเป็น image/jpeg หรือ image/png และ 8 บิต, RGB หรือ RGBA เป็นไปตามข้อกำหนดเดียวกันกับรูปภาพในสื่อ |
parameters เป็นอ็อบเจ็กต์ JSON ที่แปลงเป็นสตริง{ "interactive": { "type": "order_details", "header": { "type": "image", "image": { "link": "http(s)://the-url", "provider": { "name": "provider-name" } } }, "body": { "text": "your-text-body-content" }, "footer": { "text": "your-text-footer-content" }, "action": { "name": "review_and_pay", "parameters": { "reference_id": "reference-id-value", "type": "digital-goods", "payment_settings": [ { "type": "payment_gateway", "payment_gateway": { "type": "billdesk", "configuration_name": "payment-config-id", "billdesk": { "additional_info1": "additional_info1-value", "additional_info2": "additional_info2-value", "additional_info3": "additional_info3-value", "additional_info4": "additional_info4-value", "additional_info5": "additional_info5-value", "additional_info6": "additional_info6-value", "additional_info7": "additional_info7-value" } } } ], "currency": "INR", "total_amount": { "value": 21000, "offset": 100 }, "order": { "status": "pending", "catalog_id": "the-catalog_id", "expiration": { "timestamp": "utc_timestamp_in_seconds", "description": "cancellation-explanation" }, "items": [ { "retailer_id": "1234567", "name": "Product name, for example bread", "amount": { "value": 10000, "offset": 100 }, "quantity": 1, "sale_amount": { "value": 100, "offset": 100 } } ], "subtotal": { "value": 20000, "offset": 100 }, "tax": { "value": 1000, "offset": 100, "description": "optional_text" }, "shipping": { "value": 1000, "offset": 100, "description": "optional_text" }, "discount": { "value": 1000, "offset": 100, "description": "optional_text", "discount_program_name": "optional_text" } } } } } }
parameters เป็นอ็อบเจ็กต์ JSON ที่แปลงเป็นสตริง{ "interactive": { "type": "order_details", "header": { "type": "image", "image": { "link": "http(s)://the-url", "provider": { "name": "provider-name" } } }, "body": { "text": "your-text-body-content" }, "footer": { "text": "your-text-footer-content" }, "action": { "name": "review_and_pay", "parameters": { "reference_id": "reference-id-value", "type": "digital-goods", "payment_settings": [ { "type": "payment_gateway", "payment_gateway": { "type": "razorpay", "configuration_name": "payment-config-id", "razorpay": { "receipt": "receipt-value", "notes": { "key1": "value1" } } } } ], "currency": "INR", "total_amount": { "value": 21000, "offset": 100 }, "order": { "status": "pending", "catalog_id": "the-catalog_id", "expiration": { "timestamp": "utc_timestamp_in_seconds", "description": "cancellation-explanation" }, "items": [ { "retailer_id": "1234567", "name": "Product name, for example bread", "amount": { "value": 10000, "offset": 100 }, "quantity": 1, "sale_amount": { "value": 100, "offset": 100 } } ], "subtotal": { "value": 20000, "offset": 100 }, "tax": { "value": 1000, "offset": 100, "description": "optional_text" }, "shipping": { "value": 1000, "offset": 100, "description": "optional_text" }, "discount": { "value": 1000, "offset": 100, "description": "optional_text", "discount_program_name": "optional_text" } } } } } }
parameters เป็นอ็อบเจ็กต์ JSON ที่แปลงเป็นสตริง{ "interactive": { "type": "order_details", "header": { "type": "image", "image": { "link": "your-media-url-link" } }, "body": { "text": "your-text-body-content" }, "footer": { "text": "your-text-footer-content" }, "action": { "name": "review_and_pay", "parameters": { "reference_id": "reference-id-value", "type": "digital-goods", "payment_settings": [ { "type": "payment_gateway", "payment_gateway": { "type": "payu", "configuration_name": "payment-config-id", "payu": { "udf1": "value1", "udf2": "value2", "udf3": "value3", "udf4": "value4" } } } ], "currency": "INR", "total_amount": { "value": 21000, "offset": 100 }, "order": { "status": "pending", "expiration": { "timestamp": "utc_timestamp_in_seconds", "description": "cancellation-explanation" }, "items": [ { "name": "Product name, for example bread", "amount": { "value": 10000, "offset": 100 }, "quantity": 1, "sale_amount": { "value": 100, "offset": 100 }, "country_of_origin": "country-of-origin", "importer_name": "name-of-importer-business", "importer_address": { "address_line1": "B8/733 nand nagri", "address_line2": "police station", "city": "East Delhi", "zone_code": "DL", "postal_code": "110093", "country_code": "IN" } }, { "name": "Product name, for example bread", "amount": { "value": 10000, "offset": 100 }, "quantity": 1, "sale_amount": { "value": 100, "offset": 100 }, "country_of_origin": "country-of-origin", "importer_name": "name-of-importer-business", "importer_address": { "address_line1": "B8/733 nand nagri", "address_line2": "police station", "city": "East Delhi", "zone_code": "DL", "postal_code": "110093", "country_code": "IN" } } ], "subtotal": { "value": 20000, "offset": 100 }, "tax": { "value": 1000, "offset": 100, "description": "optional_text" }, "shipping": { "value": 1000, "offset": 100, "description": "optional_text" }, "discount": { "value": 1000, "offset": 100, "description": "optional_text", "discount_program_name": "optional_text" } } } } } }
{ "interactive": { "type": "order_details", "header": { "type": "image", "image": { "link": "your-media-url-link" } }, "body": { "text": "your-text-body-content" }, "footer": { "text": "your-text-footer-content" }, "action": { "name": "review_and_pay", "parameters": { "reference_id": "reference-id-value", "type": "digital-goods", "payment_settings": [ { "type": "payment_gateway", "payment_gateway": { "type": "zaakpay", "configuration_name": "payment-config-id", "zaakpay": { "extra1": "value1", "extra2": "value2" } } } ], "currency": "INR", "total_amount": { "value": 21000, "offset": 100 }, "order": { "status": "pending", "expiration": { "timestamp": "utc_timestamp_in_seconds", "description": "cancellation-explanation" }, "items": [ { "name": "Product name, for example bread", "amount": { "value": 10000, "offset": 100 }, "quantity": 1, "sale_amount": { "value": 100, "offset": 100 }, "country_of_origin": "country-of-origin", "importer_name": "name-of-importer-business", "importer_address": { "address_line1": "B8/733 nand nagri", "address_line2": "police station", "city": "East Delhi", "zone_code": "DL", "postal_code": "110093", "country_code": "IN" } }, { "name": "Product name, for example bread", "amount": { "value": 10000, "offset": 100 }, "quantity": 1, "sale_amount": { "value": 100, "offset": 100 }, "country_of_origin": "country-of-origin", "importer_name": "name-of-importer-business", "importer_address": { "address_line1": "B8/733 nand nagri", "address_line2": "police station", "city": "East Delhi", "zone_code": "DL", "postal_code": "110093", "country_code": "IN" } } ], "subtotal": { "value": 20000, "offset": 100 }, "tax": { "value": 1000, "offset": 100, "description": "optional_text" }, "shipping": { "value": 1000, "offset": 100, "description": "optional_text" }, "discount": { "value": 1000, "offset": 100, "description": "optional_text", "discount_program_name": "optional_text" } } } } } }
recipient_type, to และ type มาต่อท้าย โปรดอย่าลืมตั้งค่า type เป็น interactive{ "messaging_product": "whatsapp", "recipient_type": "individual", "to": "PHONE_NUMBER", "type": "interactive", "interactive": { // interactive object here } }
/[PHONE_NUMBER_ID]/messages พร้อมอ็อบเจ็กต์ JSON ที่คุณรวบรวมไว้ หากส่งข้อความสำเร็จ คุณจะได้รับการตอบกลับต่อไปนี้{ "messaging_product": "whatsapp", "contacts": [ { "input": "[PHONE_NUMBER_ID]", "wa_id": "[PHONE_NUMBER_ID]" } ], "messages": [ { "id": "wamid.HBgLMTY1MDUwNzY1MjAVAgARGBI5QTNDQTVCM0Q0Q0Q2RTY3RTcA" } ] }
order_details ที่คล้ายกับข้อความด้านล่าง (ด้านซ้าย) เมื่อลูกค้าคลิกที่ "ตรวจสอบและชำระเงิน" หน้าจอรายละเอียดคำสั่งซื้อจะเปิดขึ้นมา ดังที่แสดงไว้ด้านล่าง (ตรงกลาง) จากนั้น ลูกค้าจะสามารถชำระเงินสำหรับคำสั่งซื้อของตนได้โดยใช้ปุ่ม "ดำเนินการต่อ" ซึ่งจะเปิดชีตด้านล่างที่มีตัวเลือกการชำระเงิน (ด้านขวา)


| อ็อบเจ็กต์ | คำอธิบาย |
|---|---|
idสตริง | จำเป็นต้องระบุ ID Webhook สำหรับการแจ้งเตือน |
recipient_id สตริง | จำเป็นต้องระบุ ID WhatsApp ของลูกค้า |
typeสตริง | จำเป็นต้องระบุ สำหรับ Webhooks การอัพเดตสถานะการชำระเงิน ประเภทจะเป็น “payment” |
statusสตริง | จำเป็นต้องระบุ captured/pending: captured แสดงเมื่อการชำระเงินเสร็จสมบูรณ์แล้ว ส่วน pending จะแสดงเมื่อผู้ใช้พยายามชำระเงินแต่ยังไม่ได้รับสัญญาณการทำธุรกรรมที่สำเร็จ |
paymentอ็อบเจ็กต์ | จำเป็นต้องระบุ ประกอบด้วยช่องต่อไปนี้
สตริง reference_id
สตริง extra1-2ระบุหรือไม่ก็ได้
รายการการคืนเงินสำหรับคำสั่งซื้อนี้ อ็อบเจ็กต์การคืนเงินแต่ละรายการจะมีช่องต่อไปนี้
|
timestampสตริง | จำเป็นต้องระบุ ประทับเวลาสำหรับ Webhook |
payment:{ "object": "whatsapp_business_account", "entry": [{ "id": "WHATSAPP-BUSINESS-ACCOUNT-ID", "changes": [{ "value": { "messaging_product": "whatsapp", "metadata": { "display_phone_number": "[PHONE_NUMBER]", "phone_number_id": "[PHONE_NUMBER_ID]" }, "contacts": [{...}], "errors": [{...}], "messages": [{...}], "statuses": [{ "id": "gBGGFlB5YjhvAgnhuF1qIUvCo7A", "recipient_id": "[PHONE_NUMBER]", "type": "payment", "status": "[TRANSACTION_STATUS]", "payment": { "reference_id": "[REFERENCE_ID]", "amount": { "value": 21000, "offset": 100 }, "transaction": { "id": "[PG-ORDER-ID]", "pg_transaction_id": "[PG-PAYMENT-ID]", "type": "billdesk/razorpay/payu/zaakpay", "status": "success/failed", "created_timestamp": "CREATED_TIMESTAMP", "updated_timestamp": "UPDATED_TIMESTAMP", "method": { "type": "upi/card/netbanking/wallet" }, "error": { "code": "pg-generated-error-code", "reason": "pg-generated-descriptive-reason" } }, "currency": "INR", "receipt": "receipt-value", "notes": { "key1": "value1", "key2": "value2" }, "udf1": "udf1-value", "udf2": "udf2-value", "udf3": "udf3-value", "udf4": "udf4-value", "additional_info1": "additional_info1-value", "additional_info2": "additional_info2-value", "additional_info3": "additional_info3-value", "additional_info4": "additional_info4-value", "additional_info5": "additional_info5-value", "additional_info6": "additional_info6-value", "additional_info7": "additional_info7-value", "refunds": [{ "id": "[REFUND-ID]", "amount": { "value": 100, "offset": 100 }, "speed_processed": "instant/normal", "status": "success", "created_timestamp": "CREATED_TIMESTAMP", "updated_timestamp": "UPDATED_TIMESTAMP" }] }, "timestamp": "notification_timestamp" }] }, "field": "messages" }] }] }
GET <PHONE_NUMBER_ID>/payments/<PAYMENT_CONFIGURATION>/<REFERENCE_ID>configuration_name และ reference_id เป็นแบบเดียวกับที่ส่งไปในข้อความ order_details| ช่อง | คำอธิบาย |
|---|---|
reference_idสตริง | จำเป็นต้องระบุ ID ที่ธุรกิจส่งมาในข้อความ order_details |
statusสตริง | จำเป็นต้องระบุ สถานะการชำระเงินสำหรับคำสั่งซื้อ อาจเป็น pending หรือ captured อย่างใดอย่างหนึ่ง โปรดดูความหมายของสถานะเหล่านี้จากตารางด้านล่าง |
currencyสตริง | จำเป็นต้องระบุ สกุลเงินสำหรับการชำระเงินนี้ ขณะนี้รองรับเฉพาะค่า INR เท่านั้น |
amountอ็อบเจ็กต์ | จำเป็นต้องระบุ ยอดรวมสำหรับการชำระเงินนี้ ซึ่งประกอบด้วยช่องต่อไปนี้ จำนวนเต็ม offset
จำนวนเต็ม value
|
transactionsอาร์เรย์ | ระบุหรือไม่ก็ได้ รายการธุรกรรมสำหรับการชำระเงินนี้ ช่องนี้จะปรากฏเฉพาะเมื่อมีการชำระเงินอย่างน้อย 1 ครั้ง หากสถานะการชำระเงินเป็น pending และไม่มีการชำระเงินเกิดขึ้น ระบบจะไม่ส่งคืนช่องนี้ อ็อบเจ็กต์ธุรกรรมแต่ละรายการจะมีช่องต่อไปนี้สตริง id
สตริง pg_transaction_id
สตริง type
สตริง status
ธุรกรรมที่มีสถานะ success จะมีได้เพียงรายการเดียวเท่านั้นจำนวนเต็ม created_timestamp
จำนวนเต็ม updated_timestamp
อ็อบเจ็กต์ methodระบุหรือไม่ก็ได้ ข้อมูลวิธีการชำระเงินอาจไม่พร้อมใช้งานสำหรับการชำระเงินที่ไม่สำเร็จ
อ็อบเจ็กต์ errorระบุหรือไม่ก็ได้ รายละเอียดข้อผิดพลาดเกี่ยวกับการชำระเงินอาจไม่พร้อมใช้งานสำหรับการพยายามชำระเงินทุกครั้ง
อาร์เรย์ refundsระบุหรือไม่ก็ได้ รายการการคืนเงินสำหรับคำสั่งซื้อนี้ อ็อบเจ็กต์การคืนเงินแต่ละรายการจะมีช่องต่อไปนี้
|
additional_info1-7สตริง | ระบุหรือไม่ก็ได้ รองรับเฉพาะ BillDesk PG ซึ่งมีค่าสตริงที่ส่งเป็นส่วนหนึ่งของข้อความรายละเอียดคำสั่งซื้อ |
receiptสตริง | ระบุหรือไม่ก็ได้ ระบบรองรับเฉพาะ Razorpay PG ซึ่งมีค่าใบเสร็จที่ส่งเป็นส่วนหนึ่งของข้อความรายละเอียดคำสั่งซื้อ |
notesอ็อบเจ็กต์ | ระบุหรือไม่ก็ได้ ระบบรองรับเฉพาะ Razorpay PG ซึ่งมีคู่คีย์-ค่าที่ส่งเป็นส่วนหนึ่งของข้อความรายละเอียดคำสั่งซื้อ |
udf1-4สตริง | ระบุหรือไม่ก็ได้ รองรับเฉพาะ PayU PG ซึ่งมีค่าสตริงที่ส่งเป็นส่วนหนึ่งของข้อความรายละเอียดคำสั่งซื้อ |
extra1-2สตริง | ระบุหรือไม่ก็ได้ รองรับเฉพาะ Zaakpay PG ซึ่งมีค่าสตริงที่ส่งเป็นส่วนหนึ่งของข้อความรายละเอียดคำสั่งซื้อ |
| สถานะ | คำอธิบาย |
|---|---|
pending | คำสั่งซื้อถูกสร้างขึ้นแล้วแต่ยังไม่มีการบันทึกการชำระเงิน สถานะนี้จะครอบคลุม 2 สถานการณ์ดังต่อไปนี้
|
captured | บันทึกการชำระเงินสำเร็จแล้ว อาร์เรย์ transactions จะมีรายการหนึ่งที่ตั้งค่า status เป็น success |
{ "payments": [{ "reference_id": "reference-id-value", "status": "status-of-payment", "currency": "INR", "amount": { "value": 21000, "offset": 100 }, "transactions": [ { "id": "[PG-ORDER-ID]", "pg_transaction_id": "[PG-TXN-ID]", "type": "billdesk/razorpay/payu/zaakpay", "status": "success/failed", "created_timestamp": "CREATED_TIMESTAMP", "updated_timestamp": "UPDATED_TIMESTAMP", "method": { "type": "upi/card/netbanking/wallet" }, "error": { "code": "pg-generated-error-code", "reason": "pg-generated-descriptive-reason" }, "refunds": [ { "id": "[REFUND-ID]", "amount": { "value": 100, "offset": 100 }, "speed_processed": "instant/normal", "status": "success", "created_timestamp": "CREATED_TIMESTAMP", "updated_timestamp": "UPDATED_TIMESATMP" } ] } ], "receipt": "receipt-value", "notes": { "key1": "value1", "key2": "value2" }, "udf1": "udf1-value", "udf2": "udf2-value", "udf3": "udf3-value", "udf4": "udf4-value", "additional_info1": "additional_info1-value", "additional_info2": "additional_info2-value", "additional_info3": "additional_info3-value", "additional_info4": "additional_info4-value", "additional_info5": "additional_info5-value", "additional_info6": "additional_info6-value", "additional_info7": "additional_info7-value" }] }
{ "errors": [{ "code": 500, "title": "Generic error", "details": "System error. Please try again." }] }
transactions{
"payments": [
{
"reference_id": "<your_reference_id>",
"status": "pending",
"amount": {
"offset": 100,
"value": 1000
},
"currency": "INR"
}
]
}
transactions ประกอบด้วยธุรกรรมที่สำเร็จพร้อมรายละเอียดวิธีการชำระเงิน{
"payments": [
{
"reference_id": "<your_reference_id>",
"status": "captured",
"amount": {
"offset": 100,
"value": 1000
},
"currency": "INR",
"transactions": [
{
"id": "<order_id>",
"pg_transaction_id": "<payment_id>",
"type": "razorpay",
"status": "success",
"created_timestamp": 1772129215,
"updated_timestamp": 1772129215,
"amount": {
"offset": 100,
"value": 1000
},
"order_amount": {
"offset": 100,
"value": 1000
},
"currency": "INR",
"method": {
"type": "upi"
}
}
]
}
]
}
pending (คำสั่งซื้อยังคงรอการชำระเงินให้สำเร็จ) แต่อาร์เรย์ transactions จะมีความพยายามที่ล้มเหลวพร้อมรายละเอียดข้อผิดพลาด{
"payments": [
{
"reference_id": "<your_reference_id>",
"status": "pending",
"amount": {
"offset": 100,
"value": 1000
},
"currency": "INR",
"transactions": [
{
"id": "<order_id>",
"pg_transaction_id": "<payment_id>",
"type": "razorpay",
"status": "failed",
"created_timestamp": 1772129329,
"updated_timestamp": 1772129329,
"amount": {
"offset": 100,
"value": 1000
},
"order_amount": {
"offset": 100,
"value": 1000
},
"currency": "INR",
"method": {
"type": "upi"
},
"error": {
"code": "BAD_REQUEST_ERROR",
"reason": "incorrect_pin"
}
}
]
}
]
}
order_status แทนข้อความ SMS เนื่องจากสถานะล่าสุดของคำสั่งซื้อที่แสดงในหน้ารายละเอียดคำสั่งซื้ออิงตาม order_status ข้อความเท่านั้นinteractive ที่มีประเภทเป็น order_status ได้ตามที่แสดงด้านล่าง{ "recipient_type": "individual", "to": "whatsapp-id", "type": "interactive", "interactive": { "type": "order_status", "body": { "text": "your-text-body-content" }, "action": { "name": "review_order", "parameters": { "reference_id": "reference-id-value", "order": { "status": "processing | partially_shipped | shipped | completed | canceled", "description": "optional-text" } } } } }
order_status| อ็อบเจ็กต์ | คำอธิบาย |
|---|---|
typeสตริง | จำเป็นต้องระบุ ต้องเป็น “order_status” |
bodyอ็อบเจ็กต์ | จำเป็นต้องระบุ อ็อบเจ็กต์ที่มีเนื้อหาของข้อความ อ็อบเจ็กต์นี้ประกอบด้วยช่องต่อไปนี้ สตริง text
|
footerอ็อบเจ็กต์ | ระบุหรือไม่ก็ได้ อ็อบเจ็กต์ที่มีส่วนท้ายของข้อความ อ็อบเจ็กต์นี้ประกอบด้วยช่องต่อไปนี้ สตริง text
|
actionอ็อบเจ็กต์ | จำเป็นต้องระบุ อ็อบเจ็กต์การดำเนินการที่คุณต้องการให้ผู้ใช้ทำหลังจากอ่านข้อความ อ็อบเจ็กต์การดำเนินการนี้ประกอบด้วยช่องต่อไปนี้ สตริง name
อ็อบเจ็กต์ parameters
|
parameters ประกอบด้วยช่องต่อไปนี้| ค่า | คำอธิบาย |
|---|---|
reference_idสตริง | จำเป็นต้องระบุ ID ที่ธุรกิจส่งมาในข้อความ order_details |
orderอ็อบเจ็กต์ | จำเป็นต้องระบุ อ็อบเจ็กต์นี้ประกอบด้วยช่องต่อไปนี้ สตริง status
สตริง description
|
order_status จะมีข้อผิดพลาดใหม่ 2 รายการซึ่งสรุปไว้ด้านล่าง| รหัสข้อผิดพลาด | คำอธิบาย |
|---|---|
2046 - การเปลี่ยนสถานะไม่ถูกต้อง | ไม่อนุญาตให้เปลี่ยนสถานะคำสั่งซื้อ |
2047 - ไม่สามารถยกเลิกคำสั่งซื้อได้ | ไม่สามารถยกเลิกคำสั่งซื้อได้เนื่องจากผู้ใช้ได้ชำระเงินแล้ว |
order_status เป็นข้อความแยกในเธรดแชท ซึ่งอ้างอิงถึงข้อความ order_details ต้นฉบับดังที่แสดงด้านล่าง (ด้านซ้าย) หน้ารายละเอียดคำสั่งซื้อจะแสดงสถานะที่ถูกต้องล่าสุดที่แจ้งให้ลูกค้าทราบโดยใช้ข้อความ order_status เหมือนในตัวอย่างด้านล่าง (ด้านขวา)

| ค่า | คำอธิบาย |
|---|---|
pending | ผู้ใช้ยังไม่ได้ชำระเงินสำเร็จ |
processing | การชำระเงินของผู้ใช้ได้รับอนุญาตแล้ว ผู้ค้า/พาร์ทเนอร์กำลังดำเนินการตามคำสั่งซื้อ ให้บริการ ฯลฯ |
partially-shipped | ผู้ค้าได้จัดส่งสินค้าตามคำสั่งซื้อแล้วเป็นบางส่วน |
shipped | ผู้ค้าได้จัดส่งสินค้าทั้งหมดตามคำสั่งซื้อนี้แล้ว |
completed | คำสั่งซื้อเสร็จสมบูรณ์แล้ว และผู้ใช้หรือพาร์ทเนอร์/ผู้ค้าไม่จำเป็นต้องดำเนินการใดๆ เพิ่มเติม |
canceled | พาร์ทเนอร์/ผู้ค้าต้องการยกเลิกข้อความ order_details สำหรับคำสั่งซื้อ/ใบเรียกเก็บเงิน การอัพเดตสถานะจะล้มเหลวหากมีการชำระเงิน successful หรือ pending สำหรับข้อความ order_details นี้แล้ว |
pending เสมอ ซึ่งส่งมาในข้อความ order_detailscanceled และ completed เป็นสถานะปลายทางและไม่สามารถอัพเดตเป็นสถานะอื่นได้pending สามารถเปลี่ยนเป็นสถานะอื่นๆ ได้ รวมถึง processing, shipped, partially-shippedprocessing, shipped และ partially-shipped เป็นสถานะที่เท่ากันและสามารถเปลี่ยนไปมาระหว่างกันหรือเปลี่ยนเป็นหนึ่งในสถานะปลายทางได้
order_status ที่มีการเปลี่ยนสถานะที่ไม่ถูกต้อง คุณจะได้รับ Webhook ข้อผิดพลาดที่มีรหัสข้อผิดพลาด 2046 และข้อความว่า “สถานะคำสั่งซื้อใหม่เปลี่ยนผิดพลาด”canceled ได้โดยส่งข้อความ order_status ที่มีสถานะ canceled ลูกค้าไม่สามารถชำระเงินสำหรับคำสั่งซื้อที่ถูกยกเลิกได้ ลูกค้าจะได้รับข้อความ order_status และหน้ารายละเอียดคำสั่งซื้อจะอัพเดตเพื่อแสดงให้เห็นว่าคำสั่งซื้อถูกยกเลิกแล้วและลบปุ่ม "ดำเนินการต่อ" ออกแล้ว คุณสามารถระบุหรือไม่ก็ได้ข้อความที่แสดงอยู่ด้านล่าง "ยกเลิกคำสั่งซื้อแล้ว" ในหน้ารายละเอียดคำสั่งซื้อโดยใช้ช่อง description ในข้อความ order_statusorder_status ที่มีสถานะ canceled คุณจะได้รับ Webhook ข้อผิดพลาดที่มีรหัสข้อผิดพลาด 2047 และข้อความ "ไม่สามารถเปลี่ยนสถานะคำสั่งซื้อเป็น 'ยกเลิกแล้ว' ได้"reference_id ที่ระบุไว้ในข้อความ order_details และ id ของธุรกรรมที่ส่งคืนมาเป็นส่วนหนึ่งของการสืบค้นการค้นหาการชำระเงิน/[PHONE_NUMBER_ID]/payments_refund พร้อมอ็อบเจ็กต์ JSON ต่อไปนี้{ "reference_id": "reference-id-value", "speed": "normal", "payment_config_id": "payment-config-id", "amount": { "currency": "INR", "value": "100", "offset": "100" } }
| ช่อง | คำอธิบาย |
|---|---|
reference_idสตริง | จำเป็นต้องระบุ ID อ้างอิงที่ไม่ซ้ำกันสำหรับคำสั่งซื้อที่ส่งไปในข้อความ order_details |
speedสตริง | ระบุหรือไม่ก็ได้ ความเร็วในการประมวลผลการคืนเงิน โดยอาจเป็น instant หรือ normal อย่างใดอย่างหนึ่ง |
payment_config_idสตริง | จำเป็นต้องระบุ การกำหนดค่าการชำระเงินสำหรับคำสั่งซื้อที่ส่งในข้อความ order_details |
amountอ็อบเจ็กต์ | จำเป็นต้องระบุ อ็อบเจ็กต์ amount ประกอบด้วยช่องต่อไปนี้สตริง offset
สตริง value
สตริง currency
|
| ช่อง | คำอธิบาย |
|---|---|
idสตริง | จำเป็นต้องระบุ ID ที่ไม่ซ้ำกันซึ่งแสดงถึงการคืนเงินที่เริ่มต้น |
statusสตริง | จำเป็นต้องระบุ สถานะของการคืนเงิน อาจเป็น pendingfailed หรือ completed อย่างใดอย่างหนึ่ง |
speed_processedสตริง | จำเป็นต้องระบุ ความเร็วในการประมวลผลการคืนเงิน โดยอาจเป็น instant หรือ normal อย่างใดอย่างหนึ่ง PG เป็นผู้ตัดสินขั้นสูงสุดว่าจะคืนเงินโหมดความเร็วใด ซึ่งอาจไม่ตรงกับพารามิเตอร์ที่มีในคำขอเสมอไป |
{ "id": "refund-id", "status": "pending", "speed_processed": "normal" }
{ "messaging_product": "whatsapp", "interactive": { "action": { "name": "review_and_pay", "parameters": { "payment_settings": [ { "type": "payment_gateway", "payment_gateway": { "preferred_payment_methods": [ { "method": "Application-ID" } ] } } ], "order": .. } } } }
| แอพพลิเคชั่น UPI | ID แอพพลิเคชั่นที่จะส่งต่อในเพย์โหลดรายละเอียดคำสั่งซื้อ |
|---|---|
Google Pay | gpay |
PhonePe | phonepe |
PayTm | paytm |
BHIM | bhim |
Amazon Pay | amazonpay |
CRED | cred |
Mobikwik | mobikwik |
enabled_payment_options เป็น ["web"] เพื่อใช้การชำระเงินผ่านเว็บของเกตเวย์การชำระเงินของคุณ การชำระเงินที่เปิดใช้งาน UPI ที่เกินขีดจำกัดนี้จะดำเนินการไม่สำเร็จ{ "messaging_product": "whatsapp", "interactive": { "action": { "name": "review_and_pay", "parameters": { "payment_settings": [ { "type": "payment_gateway", "payment_gateway": { "enabled_payment_options": ["upi"/"web"] } } ], "order": ... } } } }
| ตัวเลือกที่เปิดใช้งาน | ประสบการณ์ในขั้นตอนการชำระเงิน |
|---|---|
upi | เฉพาะแอพ UPI เท่านั้นที่จะแสดงในขั้นตอนการชำระเงิน |
เว็บ | โหลดเว็บเพจเกตเวย์การชำระเงินแล้ว และตัวเลือกการชำระเงินที่กำหนดค่าไว้ในบัญชีเกตเวย์การชำระเงินของผู้ขายจะแสดงขึ้นในขั้นตอนการชำระเงิน |
{ "messaging_product": "whatsapp", "interactive": { "action": { "name": "review_and_pay", "parameters": { "payment_settings": [ { "type": "razorpay", "razorpay": { "encrypted_payment_gateway_data": "encrypted-data" } } ], "order": {} } } } }
{ "bank_account": { "account_number": "account-no", "name": "consumer-cbs-name", "ifsc": "ifsc-code" } }
{ "messaging_product": "whatsapp", "interactive": { "action": { "name": "review_and_pay", "parameters": { "payment_settings": [ { "type": "payu", "payu": { "encrypted_payment_gateway_data": "encrypted-data" } } ], "order": {} } } } }
{ "beneficiaryDetail" : { "beneficiaryAccountNumber" : "account_number1|account_number2", "ifscCode" : "ifsc1|ifsc2" } }
order_status ถึงผู้บริโภคเพื่อแจ้งให้ทราบเกี่ยวกับการอัพเดตคำสั่งซื้อหลังจากได้รับการอัพเดตธุรกรรมสำหรับคำสั่งซื้อ