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

เอกสารอ้างอิง API คำสั่งซื้อ

สรุป

หน้านี้รวบรวมสถานะ, endpoint, พารามิเตอร์ และรหัสข้อผิดพลาดของโมดูลคำสั่งซื้อ สำหรับขั้นตอนแบบครบวงจร ดู คู่มือการสั่งซื้อและชำระเงินคำสั่งซื้อ Taobao/1688 วิธีรับอัปเดตคำสั่งซื้อผ่าน webhook มี หน้าอ้างอิงแยกต่างหาก

ขอบเขต: รองรับหลายตลาดแล้ว การชำระเงินถูกรวมเป็น VND, USD หรือ RMB (CNY) — กระเป๋าเงินสำหรับสั่งซื้อเติมเงินด้วยหนึ่งในสามสกุลเงินนี้ ยอดคงเหลือและมูลค่าคำสั่งซื้อใน API ถูกปรับให้เป็นหน่วยกลาง (*_cny)

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

ทุก endpoint ต้องมีการยืนยันตัวตน JWT (Authorization: Bearer <token>) หรือ API Key (x-api-key) ดู การยืนยันตัวตนคำขอ API

สถานะแพลตฟอร์ม (status)

ความคืบหน้าในการประมวลผลคำสั่งซื้อฝั่ง Taobao / 1688

ค่าคำอธิบาย
creatingเพิ่งสร้างคำสั่งซื้อ กำลังรอแพลตฟอร์มยืนยัน
pending_paymentแพลตฟอร์มสร้างคำสั่งซื้อแล้ว รอการชำระเงิน
paidคำสั่งซื้อชำระเงินแล้วฝั่งแพลตฟอร์ม
shippedสินค้าออกจากคลังแล้ว อยู่ระหว่างขนส่ง
completedคำสั่งซื้อเสร็จสมบูรณ์ ยืนยันการรับสินค้าแล้ว
cancelledคำสั่งซื้อถูกยกเลิก
unknownอ่านสถานะจากแพลตฟอร์มไม่ได้
creating → pending_payment → paid → shipped → completed
                                            ↘ cancelled

สถานะการชำระเงิน Elim (payment_status)

ความคืบหน้าการชำระเงินระหว่างผู้ใช้กับ Elim เป็นอิสระ จาก status

ค่าคำอธิบายเงินในกระเป๋า
unpaidค่าเริ่มต้นเมื่อสร้างคำสั่งซื้อ — ยังไม่ได้ส่งคำขอชำระเงินยังไม่ถูกกระทบ
requestedผู้ใช้ส่งคำขอชำระเงินแล้วถูกกันไว้ (frozen_balance)
approvedElim อนุมัติคำขอแล้ว กำลังชำระเงินกับแพลตฟอร์มยังคงถูกกันไว้
paidชำระเงินเสร็จสมบูรณ์ถูกหัก ออกจาก balance
rejectedElim ปฏิเสธคำขอ (rejection_reason ระบุเหตุผล)ถูกปลดคืน
refundedคำสั่งซื้อที่ชำระแล้วได้รับการคืนเงินเข้ากระเป๋าถูกคืนเข้า balance
unpaid → requested → approved → paid → refunded
   ↑         ↓
   └──── rejected

จาก requested ผู้ใช้สามารถถอนคำขอของตนเองเพื่อกลับสู่ unpaid ได้ (ดู cancel-payment-request) หลังจาก approved แล้ว ย้อนกลับได้ด้วยการคืนเงินเท่านั้น

ผลการชำระเงินแพลตฟอร์ม (platform_payment_status)

มีค่าเฉพาะหลังจาก Elim ดำเนินการชำระเงินกับแพลตฟอร์มแล้วเท่านั้น

ค่าคำอธิบาย
pendingกำลังส่งคำสั่งชำระเงินไปยังแพลตฟอร์ม
successแพลตฟอร์มบันทึกการชำระเงินแล้ว
failedแพลตฟอร์มแจ้งข้อผิดพลาด — Elim จะจัดการด้วยตนเอง
unknownยังระบุผลไม่ได้

แสดงทั้ง status และ payment_status ในอินเทอร์เฟซเสมอ platform_payment_status ใช้เพื่อวินิจฉัยเมื่อเกิดปัญหาเป็นหลัก

Endpoint คำสั่งซื้อ

Prefix /v1/orders Rate limit นับตามกรอบเวลาวินาที

EndpointMethodคำอธิบายRate limit
/v1/orders/previewPOSTดูตัวอย่างคำสั่งซื้อ: ยอดรวมโดยประมาณ, ตรวจสอบสต็อก — ไม่สร้างคำสั่งซื้อ ไม่หักเงิน20 / 60s
/v1/ordersPOSTสร้างคำสั่งซื้อจริงบนแพลตฟอร์ม10 / 60s
/v1/ordersGETรายการคำสั่งซื้อของผู้ใช้ปัจจุบัน (แบ่งหน้า)30 / 60s
/v1/orders/statsGETสถิติสรุปคำสั่งซื้อตามช่วงเวลา / สถานะ30 / 60s
/v1/orders/:idGETรายละเอียดคำสั่งซื้อ — ซิงค์สถานะล่าสุดจากแพลตฟอร์มอัตโนมัติทุกครั้งที่เรียก30 / 60s
/v1/orders/:id/cancelPOSTยกเลิกคำสั่งซื้อขณะยังอยู่ในสถานะที่ยกเลิกได้10 / 60s
/v1/orders/:id/logistic-detail?package_id=<int>GETติดตามการขนส่งภายในประเทศจีน (Taobao เท่านั้น)20 / 60s

ดูตัวอย่างและสร้างคำสั่งซื้อ — body

{
  "platform": "alibaba",
  "receiver_address": {
    "name": "Nguyen Van A",
    "phone": "02812345678",
    "mobile": "13800138000",
    "address": "广州市天河区体育西路123号",
    "province": "广东省",
    "city": "广州市",
    "area": "天河区",
    "town": "天河南街道"
  },
  "line_items": [
    { "product_ref": "734467086498", "sku_ref": "5578084256927", "quantity": 2, "price": 15.5 }
  ],
  "preview_token": "c5f75ec1-9f8d-4bf6-9de2-048d50fef349",
  "idempotency_key": "checkout-2026-08-25-001",
  "remark": "หมายเหตุถึงผู้ขาย",
  "promotion_id": "PROMO123"
}
ฟิลด์ชนิดจำเป็นคำอธิบาย
platformstringใช่taobao หรือ alibaba (1688)
receiver_addressAddressใช่ที่อยู่จัดส่งที่ถูกต้องในประเทศจีน
warehouse_addressAddressไม่ที่อยู่คลังต้นทางจัดส่ง
line_itemsLineItem[]ใช่รายการสินค้า (ดูด้านล่าง)
preview_tokenstringไม่token จากการดูตัวอย่าง ใช้ครั้งเดียว หมดอายุใน 10 นาที ส่งมาพร้อมตอนสร้างคำสั่งซื้อเพื่อล็อกราคาที่ดูไว้
idempotency_keystringแนะนำคีย์กันสร้างซ้ำต่อการชำระเงินแต่ละครั้ง คำขอซ้ำด้วยคีย์เดิมจะคืนคำสั่งซื้อเดิม
client_order_idstringไม่รหัสคำสั่งซื้อจากระบบของคุณ (สร้างอัตโนมัติหากเว้นว่าง)
promotion_idstringไม่รหัสโปรโมชัน
remarkstringไม่หมายเหตุถึงผู้ขาย

line_items[]

แต่ละรายการระบุสินค้าด้วยคู่ product_ref + sku_ref ซึ่งนำมาจาก การค้นหา / รายละเอียดสินค้า โดยตรง

ฟิลด์ชนิดจำเป็นคำอธิบาย
product_refstringใช่ID หรือลิงก์สินค้าจาก response การค้นหาสินค้า
sku_refstringใช่ID SKU ที่ตรงกัน — Taobao: skus[].id · 1688: skus[].spec_id
quantitynumberใช่จำนวน
pricenumberไม่ราคาต่อหน่วย CNY — แนะนำให้ระบุเพื่อให้การดูตัวอย่างคืนตัวเลขที่แม่นยำ

คู่ mp_id + mp_skuid (marketplace ID) ยังคงรองรับเพื่อความเข้ากันได้ย้อนหลัง

receiver_address

ฟิลด์จำเป็นคำอธิบาย
nameใช่ชื่อผู้รับ
phoneใช่หมายเลขโทรศัพท์บ้าน
mobileใช่หมายเลขมือถือ
addressใช่ที่อยู่โดยละเอียด (ภาษาจีน)
province / city / areaแนะนำมณฑล / เมือง / เขต-อำเภอ
townไม่ตำบล / แขวง

Response การดูตัวอย่าง

{
  "success": true,
  "preview_token": "c5f75ec1-9f8d-4bf6-9de2-048d50fef349",
  "currency": "CNY",
  "total_product_amount": 31.0,
  "total_post_fee": 8.0,
  "total_amount": 39.0,
  "shops": [
    {
      "seller_id": "b2b-2201234567",
      "seller_name": "广州某某贸易有限公司",
      "post_fee": 8.0,
      "shop_amount": 31.0,
      "items": [
        { "product_id": "734467086498", "sku_id": "5578084256927", "quantity": 2, "unit_price": 15.5, "total_price": 31.0 }
      ]
    }
  ],
  "unavailable_items": []
}
ฟิลด์คำอธิบาย
total_product_amountยอดรวมค่าสินค้า (CNY)
total_post_feeยอดรวมค่าขนส่งภายในประเทศจีน
total_amountยอดรวมที่ต้องจ่ายให้แพลตฟอร์ม = สินค้า + ค่าส่ง
unavailable_items[]สินค้าที่สั่งซื้อไม่ได้ (หมดสต็อก / SKU ผิด / เลิกขาย) อย่าสร้างคำสั่งซื้อหากอาร์เรย์นี้ไม่ว่าง

Response การสร้างคำสั่งซื้อ

{
  "status": "pending_payment",
  "data": {
    "id": "ORD0000000123",
    "order_list": [
      {
        "success": true,
        "amount": 39.0,
        "post_fee": 8.0,
        "lines": [
          { "sub_id": "E2101234567890", "product_id": "734467086498", "sku_id": "5578084256927", "quantity": 2, "amount": 31.0 }
        ]
      }
    ]
  }
}
ฟิลด์คำอธิบาย
data.idID คำสั่งซื้อภายในรูปแบบ ORD + ตัวเลข 10 หลัก — ใช้กับทุกการดำเนินการต่อจากนี้
statuspending_payment เมื่อสำเร็จ; unknown เมื่อระบุไม่ได้ — หยุดขั้นตอนการชำระเงิน แล้วตรวจสอบใหม่ด้วยรายละเอียดคำสั่งซื้อ
data.order_list[]รายละเอียดร้านค้า + รายการสินค้าจากแพลตฟอร์ม — ใช้สร้างใบเสร็จ

คำสั่งซื้อใหม่จะอยู่ที่ payment_status = unpaid เสมอ

รายการคำสั่งซื้อ — พารามิเตอร์กรอง

GET /v1/orders

พารามิเตอร์ชนิดคำอธิบาย
pagenumberหน้าปัจจุบัน (ค่าเริ่มต้น 1)
sizenumberจำนวนคำสั่งซื้อต่อหน้า (ค่าเริ่มต้น 20)
platformstringtaobao / alibaba — เว้นว่าง = ทั้งสอง
statusstringกรองตามสถานะแพลตฟอร์ม
payment_statusstringกรองตามสถานะการชำระเงิน Elim
client_order_idstringกรองตามรหัสคำสั่งซื้อฝั่งคุณ
created_from / created_toISO dateช่วงวันที่สร้าง

Response: { total, page, size, items: OrderListItem[] }

{
  "total": 1, "page": 1, "size": 20,
  "items": [
    {
      "id": "ORD0000000123",
      "platform": "alibaba",
      "status": "paid",
      "payment_status": "paid",
      "total_amount_cny": 39.0,
      "total_amount": 39.0,
      "products": [
        { "id": "734467086498", "name": "某某商品", "price": 15.5, "quantity": 2, "img_urls": ["https://..."] }
      ],
      "created_at": "2026-04-09T10:30:00.000Z"
    }
  ]
}

line_items / products ในรายการเป็นสแนปช็อตตอนสร้างคำสั่งซื้อ หากต้องการข้อมูลล่าสุด ให้เรียก GET /v1/orders/:id

รายละเอียดคำสั่งซื้อ — ความแตกต่างตามแพลตฟอร์ม

GET /v1/orders/:id — ซิงค์สถานะจากแพลตฟอร์มอัตโนมัติก่อนตอบกลับ

แพลตฟอร์มรายการสินค้าการขนส่ง
1688products[]logistics.logistics_info[] ฝังอยู่ใน response
Taobaoline_items[]เรียก GET /v1/orders/:id/logistic-detail?package_id=<int> แยกต่างหาก

ฟิลด์ platform มีอยู่แล้วใน response รายการ — เก็บไว้เพื่อเลือกวิธีแสดงผลก่อนเรียกรายละเอียด

package_id เป็น จำนวนเต็ม ที่ได้จาก response รายละเอียดคำสั่งซื้อ Taobao ไม่ใช่ ID ORD...

ยกเลิกคำสั่งซื้อ — เงื่อนไข

POST /v1/orders/:id/cancel — เฉพาะเมื่อ status เป็น creating หรือ pending_payment

หากคำสั่งซื้อยังไม่มีรหัสคำสั่งซื้อของแพลตฟอร์ม: { "success": true, "message": "Internal order cancelled, no external order to cancel" }

Endpoint กระเป๋าเงินสำหรับสั่งซื้อ

Prefix /v1/purchasing

EndpointMethodคำอธิบาย
/v1/purchasing/walletGETยอดคงเหลือในกระเป๋า
/v1/purchasing/wallet/transactionsGETประวัติธุรกรรม (แบ่งหน้า)
/v1/purchasing/exchange-ratesGETอัตราแลกเปลี่ยนที่ใช้อยู่

GET /v1/purchasing/wallet

{
  "balance": 1670.30,
  "frozen_balance": 286.50,
  "available_balance": 1383.80,
  "total_deposited": 5000.00,
  "total_spent": 3329.70,
  "updated_at": "2026-06-19T00:00:00.000Z"
}
ฟิลด์คำอธิบาย
balanceยอดคงเหลือรวมเป็น CNY
frozen_balanceถูกกันไว้สำหรับคำสั่งซื้อที่ requested / approved
available_balancebalance − frozen_balance — จำนวนที่ใช้ได้จริง เทียบค่านี้กับมูลค่าคำสั่งซื้อ
total_deposited / total_spentตัวเลขสะสม

GET /v1/purchasing/wallet/transactions

พารามิเตอร์: page, size, type, date_from, date_to Response: { total, page, size, items }

typeความหมาย
depositเติมเงินเข้ากระเป๋า
order_freezeกันเงินเมื่อส่งคำขอชำระเงิน
order_unfreezeปลดเงินเมื่อถอนคำขอหรือถูกปฏิเสธ
order_deductionหักเงินเมื่อการชำระคำสั่งซื้อเสร็จสมบูรณ์
order_refundคืนเงินคำสั่งซื้อเข้ากระเป๋า
admin_adjustmentElim ปรับยอดคงเหลือด้วยตนเอง

GET /v1/purchasing/exchange-rates

อาร์เรย์อัตราแลกเปลี่ยนที่ใช้งานอยู่ต่อคู่สกุลเงิน (VND→CNY, USD→CNY): source_currency, target_currency, rate (อัตราตลาด), markup_percent, effective_rate (อัตราที่ Elim ใช้จริงหลังบวก markup)

Endpoint การชำระเงินคำสั่งซื้อ

Prefix /v1/purchasing/orders/:id :id รับรูปแบบ ORD...

EndpointMethodจากสถานะสู่สถานะคำอธิบาย
/request-paymentPOSTunpaidrequestedยืนยันคำสั่งซื้อและส่งคำขอชำระเงิน — กัน เงินในกระเป๋า
/cancel-payment-requestPOSTrequestedunpaidถอนคำขอ — ปลด เงินที่กันไว้
/confirmPOSTunpaidpaidชำระเงินโดยตรง (ที่ที่เปิดใช้) — หัก เงินทันที ไม่ผ่านขั้นตอนอนุมัติ
/paymentGETรายละเอียดบันทึกการชำระเงินของคำสั่งซื้อ

POST …/request-payment

{
  "success": true,
  "order_id": "ORD0000000123",
  "frozen_amount": 286.50,
  "goods_amount_cny": 281.50,
  "shipping_fee_cny": 0,
  "service_fee_cny": 5.00
}

ข้อผิดพลาดกระเป๋าเงินไม่พอ — 400:

{
  "error": "insufficient_balance",
  "current_balance": 120.00,
  "available_balance": 90.00,
  "required": 286.50,
  "deficit": 196.50
}

POST …/confirm

{
  "order_id": "ORD0000000123",
  "goods_amount_cny": 281.50,
  "shipping_fee_cny": 0,
  "service_fee_cny": 5.00,
  "total_amount_cny": 286.50,
  "payment_status": "paid",
  "wallet_balance_after": 1383.80
}

ใช้ wallet_balance_after เพื่ออัปเดตยอดคงเหลือที่แสดงโดยไม่ต้องเรียก GET /v1/purchasing/wallet อีกครั้ง

การเปลี่ยนสถานะที่ Elim ดำเนินการ

ผู้ใช้ ไม่ เรียกการดำเนินการเหล่านี้ รายการนี้มีไว้เพื่ออธิบายว่า payment_status จะเปลี่ยนอย่างไร และเมื่อใดที่คุณจะได้รับ payment.updated

การดำเนินการของ Elimจากสู่ผลต่อกระเป๋า
อนุมัติคำขอrequestedapprovedเงินยังถูกกันไว้
ปฏิเสธคำขอrequestedrejectedปลดเงินที่กันไว้; rejection_reason ระบุเหตุผล
ชำระเงินแพลตฟอร์มสำเร็จapprovedpaidหักเงินที่กันไว้; platform_payment_status = success
ชำระเงินแพลตฟอร์มล้มเหลวapprovedunpaidplatform_payment_status = failed; Elim จะติดต่อเพื่อจัดการ
คืนเงินpaidrefundedคืนเข้า balance; สร้างธุรกรรม order_refund

รับอัปเดตคำสั่งซื้อผ่าน webhook

ลงทะเบียน webhook เพื่อให้ Elim เรียกเข้าระบบของคุณทุกครั้งที่ status หรือ payment_status ของคำสั่งซื้อเปลี่ยน — แทนการถามสถานะซ้ำ ๆ มีสองเหตุการณ์ที่เกี่ยวกับโมดูลคำสั่งซื้อ:

เหตุการณ์ส่งเมื่อใด
order.updatedstatus ของคำสั่งซื้อเปลี่ยน: ซิงค์จากแพลตฟอร์ม, ซิงค์ตามรอบ, หรือยกเลิกคำสั่งซื้อ
payment.updatedpayment_status เปลี่ยน: ส่งคำขอ, ถอนคำขอ, อนุมัติ, ปฏิเสธ, แพลตฟอร์มชำระเงินเสร็จ/ล้มเหลว, หรือคืนเงิน

Payload บรรจุสแนปช็อตของคำสั่งซื้อ: data.order.id, status, payment_status, platform_payment_status, total_amount_cny, updated_at เมื่อประมวลผลเสร็จให้ตอบกลับ HTTP 2xx

endpoint การลงทะเบียน, โครงสร้าง payload ฉบับเต็ม, header, การตรวจสอบลายเซ็น HMAC และนโยบายลองใหม่: ดู เอกสารอ้างอิง Webhook

รหัสข้อผิดพลาด

HTTPสถานการณ์สิ่งที่ควรทำฝั่งคุณ
400insufficient_balanceเติมเงิน CNY เพิ่มอีก deficit แล้วส่งคำขอใหม่
400Cannot request payment: current status is "..."คำสั่งซื้อไม่ได้อยู่ที่ unpaid แล้ว
400รูปแบบ ID แพลตฟอร์มไม่ถูกต้องตรวจสอบ product_ref / sku_ref
401JWT หมดอายุขอ token ใหม่
403เข้าถึงคำสั่งซื้อที่ไม่ใช่ของบัญชีดำเนินการเฉพาะกับคำสั่งซื้อของตนเอง
404ไม่พบคำสั่งซื้อ / บันทึกการชำระเงินตรวจสอบ ID ORD... อีกครั้ง
422LINE_ITEM_SKU_NOT_RESOLVABLE / LINE_ITEM_PRODUCT_NOT_RESOLVABLE (Taobao)sku_ref / product_ref ผิด — ดึงใหม่จากรายละเอียดสินค้า
429เกิน rate limitรอประมาณ 60 วินาที แล้วปรับจังหวะการเรียก
502แพลตฟอร์ม Taobao/1688 ไม่ตอบสนองลองใหม่ อย่าสร้างคำสั่งซื้อซ้ำ

Response ข้อผิดพลาดเป็นรูปแบบ { statusCode, message, error } message บางครั้งเป็นภาษาเวียดนามและแสดงต่อผู้ใช้ได้โดยตรง

ข้อกำหนดเรื่อง ID

  • ID คำสั่งซื้อภายใน: ORD + ตัวเลข 10 หลัก เช่น ORD0000000123 ใช้กับทุก endpoint
  • รหัสคำสั่งซื้อแพลตฟอร์ม (order_id): ออกโดย Taobao/1688 มีเฉพาะหลังสร้างคำสั่งซื้อสำเร็จ
  • package_id: จำนวนเต็ม ใช้สำหรับติดตามการขนส่ง Taobao

ลิงก์ที่เกี่ยวข้อง