สรุปโดยย่อ
API ของ eBay ช่วยให้คุณจัดการสินค้าคงคลัง รายการสินค้า คำสั่งซื้อ และการชำระเงินในตลาดออนไลน์ระดับโลก คุณจะต้องยืนยันตัวตนด้วย OAuth 2.0 เรียกใช้ endpoint api.ebay.com/sell และจัดการกับ rate limits อย่างรอบคอบ สำหรับการทดสอบ ให้ใช้ Apidog เพื่อตรวจสอบข้อมูลรายการสินค้า ทดสอบกระบวนการจัดการคำสั่งซื้อ และตรวจสอบให้แน่ใจว่าการเชื่อมต่อของคุณรองรับข้อจำกัดของ API ได้อย่างไม่มีสะดุด
บทนำ
eBay เชื่อมโยงผู้ซื้อและผู้ขายทั่วโลก API ช่วยให้ผู้ขายสามารถจัดการสินค้าคงคลังโดยอัตโนมัติ สร้างรายการสินค้าจำนวนมาก ประมวลผลคำสั่งซื้อ จัดการการจัดส่ง และการคืนสินค้า เหมาะทั้งผู้ขายรายเล็กและองค์กรขนาดใหญ่
ส่วนหลักของ API:
- Inventory API - จัดการสินค้าคงคลัง
- Listing API - สร้างและจัดการรายการสินค้า
- Order API - ประมวลผลคำสั่งซื้อและการจัดส่ง
- Fulfillment API - จัดการการจัดส่งและการติดตาม
- Analytics API - ดึงรายงานการขาย
💡 หากคุณกำลังสร้างการผสานรวมกับ eBay, Apidog ช่วยทดสอบการสร้างรายการสินค้า ตรวจสอบความถูกต้องของข้อมูลคำสั่งซื้อ และช่วยให้แน่ใจว่าระบบของคุณรับมือกับ rate limits และข้อผิดพลาดได้ถูกต้อง
ทดสอบ API ของ eBay ด้วย Apidog - ฟรี
เมื่อจบคู่มือนี้ คุณจะสามารถ:
- ยืนยันตัวตนด้วย eBay OAuth 2.0
- สร้างและจัดการสินค้าคงคลัง
- เผยแพร่รายการสินค้า
- ประมวลผลคำสั่งซื้อและการจัดส่ง
- จัดการการคืนสินค้าและการคืนเงิน
- ทดสอบด้วย Apidog
การยืนยันตัวตนด้วย OAuth 2.0
eBay ใช้ OAuth 2.0 สำหรับการยืนยันตัวตน API ต้องสร้างแอปใน eBay Developers Program
สร้างแอปพลิเคชัน
- ไปที่ developers.ebay.com
- สมัครบัญชีนักพัฒนา
- สร้างแอปใน Developer Console
- รับ App ID (client ID) และ Cert ID (client secret)
ขั้นตอน OAuth
ขั้นตอนที่ 1: ขออนุญาตจากผู้ใช้
https://auth.ebay.com/oauth2/authorize?
client_id=YOUR_APP_ID&
response_type=code&
redirect_uri=YOUR_SIGNIN_REDIRECT_URI&
scope=https://api.ebay.com/oauth/api_scope/sell.inventory
ขั้นตอนที่ 2: รับรหัสการอนุญาต
ผู้ใช้อนุญาตแล้วจะ redirect กลับมาพร้อม authorization code
ขั้นตอนที่ 3: แลก code เป็น access token
const response = await fetch('https://api.ebay.com/identity/v1/oauth2/token', {
method: 'POST',
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
'Authorization': 'Basic ' + Buffer.from(APP_ID + ':' + CERT_ID).toString('base64')
},
body: new URLSearchParams({
grant_type: 'authorization_code',
code: AUTHORIZATION_CODE,
redirect_uri: 'YOUR_SIGNIN_REDIRECT_URI'
})
})
const { access_token, refresh_token, expires_in } = await response.json()
สโคปที่จำเป็น
-
https://api.ebay.com/oauth/api_scope/sell.inventory- จัดการสินค้าคงคลัง -
https://api.ebay.com/oauth/api_scope/sell.listings- รายการสินค้า -
https://api.ebay.com/oauth/api_scope/sell.orders- คำสั่งซื้อ -
https://api.ebay.com/oauth/api_scope/sell.fulfillment- การดำเนินการจัดส่ง -
https://api.ebay.com/oauth/api_scope/sell.account- การจัดการบัญชี
การจัดการสินค้าคงคลัง
สินค้าคงคลังคือตัวแทนของสินค้าที่คุณขาย
สร้างสถานที่เก็บสินค้าคงคลัง
curl -X POST "https://api.ebay.com/sell/inventory/v1/location_inventory_location" \
-H "Authorization: Bearer ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"locationId": "WAREHOUSE_1",
"name": "Main Warehouse",
"address": {
"addressLine1": "123 Main St",
"city": "San Jose",
"stateOrProvince": "CA",
"postalCode": "95101",
"countryCode": "US"
}
}'
สร้างรายการสินค้าคงคลัง
curl -X POST "https://api.ebay.com/sell/inventory/v1/inventory_item" \
-H "Authorization: Bearer ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"product": {
"title": "Vintage Leather Messenger Bag",
"description": "Genuine leather messenger bag, perfect for work or school.",
"aspects": {
"Brand": ["Vintage"],
"Material": ["Leather"],
"Color": ["Brown"]
},
"imageUrls": [
"https://example.com/images/bag1.jpg",
"https://example.com/images/bag2.jpg"
]
},
"condition": "USED_GOOD",
"conditionNotes": "Minor wear on corners",
"availability": {
"shipToLocationAvailability": {
"quantity": 25
}
}
}'
อัปเดตสินค้าคงคลัง
curl -X PUT "https://api.ebay.com/sell/inventory/v1/inventory_item/SKU123" \
-H "Authorization: Bearer ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"availability": {
"shipToLocationAvailability": {
"quantity": 30
}
}
}'
รับรายการสินค้าคงคลัง
curl -X GET "https://api.ebay.com/sell/inventory/v1/inventory_item/SKU123" \
-H "Authorization: Bearer ACCESS_TOKEN"
การลงรายการสินค้า
สร้างข้อเสนอ
curl -X POST "https://api.ebay.com/sell/inventory/v1/offer" \
-H "Authorization: Bearer ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"sku": "SKU123",
"marketplaceId": "EBAY_US",
"format": "FIXED_PRICE",
"product": {
"title": "Vintage Leather Messenger Bag"
},
"pricingSummary": {
"price": {
"currency": "USD",
"value": "89.99"
}
},
"listing": {
"listingDuration": "GTC",
"listingType": "CLASSIC"
},
" fulfillment": {
"shippingProfileId": "SHIPPING_PROFILE_ID",
" fulfillmentPolicyId": "FULFILLMENT_POLICY_ID",
"paymentPolicyId": "PAYMENT_POLICY_ID"
}
}'
ฟิลด์สำคัญ:
-
sku- SKU สินค้าคงคลัง -
marketplaceId- EBAY_US, EBAY_UK, EBAY_DE, ฯลฯ -
format- FIXED_PRICE หรือ AUCTION -
listingDuration- ระยะเวลา (GTC = ดีจนกว่าจะยกเลิก) -
price- ราคาขาย
เผยแพร่ข้อเสนอ
curl -X POST "https://api.ebay.com/sell/inventory/v1/offer/OFFER_ID/publish" \
-H "Authorization: Bearer ACCESS_TOKEN"
ถอนรายการสินค้า
curl -X POST "https://api.ebay.com/sell/inventory/v1/offer/OFFER_ID/withdraw" \
-H "Authorization: Bearer ACCESS_TOKEN"
การจัดการคำสั่งซื้อ
รับคำสั่งซื้อ
curl -X GET "https://api.ebay.com/sell/fulfillment/v1/order?orderIds=ORDER_ID_1,ORDER_ID_2" \
-H "Authorization: Bearer ACCESS_TOKEN"
กรองตามวันที่:
curl -X GET "https://api.ebay.com/sell/fulfillment/v1/order?filter=creation_date_range:from:2026-01-01T00:00:00Z,to:2026-03-24T00:00:00Z" \
-H "Authorization: Bearer ACCESS_TOKEN"
รับรายละเอียดคำสั่งซื้อ
curl -X GET "https://api.ebay.com/sell/fulfillment/v1/order/ORDER_ID" \
-H "Authorization: Bearer ACCESS_TOKEN"
ตัวอย่างคำตอบ:
{
"orderId": "12-34567-89012",
"orderPaymentStatus": "PAID",
"pricingSummary": {
"total": {
"currency": "USD",
"value": "94.99"
}
},
"fulfillmentStartInstructions": [
{
"shippingStep": {
"shipTo": {
"fullName": "John Doe",
"contactAddress": {
"addressLine1": "123 Main St",
"city": "Anytown",
"stateOrProvince": "CA",
"postalCode": "12345",
"countryCode": "US"
}
}
"lineItems": [
{
"lineItemId": "LINE_ITEM_ID",
"sku": "SKU123",
"quantity": 1,
"title": "Vintage Leather Messenger Bag",
"lineItemCost": {
"currency": "USD",
"value": "89.99"
}
}
]
}
]
}
การจัดส่งและการดำเนินการจัดส่ง
สร้างฉลากการจัดส่ง
curl -X POST "https://api.ebay.com/sell/fulfillment/v1/order/ORDER_ID/shipping_fulfillment" \
-H "Authorization: Bearer ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"lineItems": [
{
"lineItemId": "LINE_ITEM_ID",
"quantity": 1
}
],
"shippingStep": {
"shipFrom": {
"fullName": "Your Name",
"companyName": "Your Company",
"contactAddress": {
"addressLine1": "456 Warehouse Rd",
"city": "San Jose",
"stateOrProvince": "CA",
"postalCode": "95101",
"countryCode": "US"
}
}
},
"shippingCarrierCode": "USPS",
"shippingMethodCode": "PRIORITY_MAIL",
"trackingNumber": "9400111899223056789012"
}'
ผู้ให้บริการขนส่งที่รองรับ: USPS, UPS, FedEx, DHL
การจัดการการคืนสินค้า
รับรายละเอียดการคืนสินค้า
curl -X GET "https://api.ebay.com/sell/fulfillment/v1/return/RETURN_ID" \
-H "Authorization: Bearer ACCESS_TOKEN"
ดำเนินการคืนสินค้า
curl -X POST "https://api.ebay.com/sell/fulfillment/v1/return/RETURN_ID/decide" \
-H "Authorization: Bearer ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"decision": "ACCEPT",
"shipment": {
"carrierId": "CARRIER_ID",
"trackingNumber": "TRACKING_NUMBER"
}
}'
ข้อจำกัดอัตรา (Rate limits) และการจัดการ
eBay จำกัดการเรียก API ต่อช่วงเวลา ป้องกันการใช้งานเกินกำหนด ตรวจสอบ headers:
-
X-RateLimit-Limit- จำนวนคำขอสูงสุด -
X-RateLimit-Remaining- คำขอที่เหลือในช่วงเวลา -
X-RateLimit-Reset- Unix timestamp เมื่อ reset
ตัวอย่างโค้ด handle rate limit:
async function makeEbayRequest(url, options, retries = 3) {
for (let i = 0; i < retries; i++) {
const response = await fetch(url, options)
const remaining = response.headers.get('X-RateLimit-Remaining')
if (remaining && parseInt(remaining) < 10) {
console.warn('Rate limit low:', remaining)
}
if (response.status === 429) {
const resetTime = response.headers.get('X-RateLimit-Reset')
const waitTime = (parseInt(resetTime) - Date.now() / 1000) * 1000
await sleep(waitTime)
continue
}
return response
}
throw new Error('Rate limited')
}
การทดสอบด้วย Apidog
API ของ eBay มีความสำคัญต่อการใช้งานจริง ควรทดสอบให้ครอบคลุมก่อนใช้งานจริง
1. การตั้งค่าสภาพแวดล้อม
EBAY_APP_ID: your_app_id
EBAY_CERT_ID: your_cert_id
EBAY_ACCESS_TOKEN: stored_token
EBAY_REFRESH_TOKEN: stored_refresh
EBAY_MARKETPLACE_ID: EBAY_US
BASE_URL: https://api.ebay.com
2. ตรวจสอบความถูกต้องของข้อมูลรายการสินค้า
pm.test('Listing has required fields', () => {
const requestBody = JSON.parse(pm.request.body.raw)
pm.expect(requestBody).to.have.property('sku')
pm.expect(requestBody).to.have.property('marketplaceId')
pm.expect(requestBody.pricingSummary).to.have.property('price')
})
pm.test('Price is valid', () => {
const requestBody = JSON.parse(pm.request.body.raw)
const price = parseFloat(requestBody.pricingSummary.price.value)
pm.expect(price).to.be.above(0)
})
3. ทดสอบกระบวนการจัดการคำสั่งซื้อ
pm.test('Order response is valid', () => {
const response = pm.response.json()
pm.expect(response).to.have.property('orderId')
pm.expect(response.orderPaymentStatus).to.eql('PAID')
pm.expect(response.lineItems).to.be.an('array')
})
ทดสอบ API ของ eBay ด้วย Apidog - ฟรี
ข้อผิดพลาดทั่วไปและการแก้ไข
401 ไม่ได้รับอนุญาต (Unauthorized)
สาเหตุ: โทเค็นหมดอายุหรือไม่ถูกต้อง
วิธีแก้ไข: ใช้ refresh token เพื่อขอ access token ใหม่
const response = await fetch('https://api.ebay.com/identity/v1/oauth2/token', {
method: 'POST',
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
'Authorization': 'Basic ' + Buffer.from(APP_ID + ':' + CERT_ID).toString('base64')
},
body: new URLSearchParams({
grant_type: 'refresh_token',
refresh_token: storedRefreshToken
})
})
10002: Access token ไม่ถูกต้อง
สาเหตุ: Access token หมดอายุ
วิธีแก้ไข: รีเฟรชโทเค็นทันที
21916684: รายการสินค้าไม่มีอยู่จริง
สาเหตุ: อัปเดต SKU ที่ยังไม่ได้สร้าง
วิธีแก้ไข: สร้างสินค้าคงคลังก่อน แล้วค่อยสร้างข้อเสนอ
10003: SKU ไม่ถูกต้อง
สาเหตุ: รูปแบบ SKU ไม่ถูกต้อง
วิธีแก้ไข: SKU ต้องไม่ซ้ำกัน ใช้อักษร/ตัวเลข ขีดกลาง หรือขีดล่างเท่านั้น
ข้อจำกัดอัตรา (Rate limit) (429)
สาเหตุ: ส่งคำขอเกินกำหนด
วิธีแก้ไข: ใช้วิธี backoff rate limit ของ eBay แตกต่างกันแต่ละ endpoint
ทางเลือกและการเปรียบเทียบ
| คุณสมบัติ | eBay | Amazon SP-API | Etsy |
|---|---|---|---|
| API สินค้าคงคลัง | ✓ | ✓ | จำกัด |
| API รายการสินค้า | ✓ | ✓ | ✓ |
| API คำสั่งซื้อ | ✓ | ✓ | ✓ |
| API การดำเนินการจัดส่ง | ✓ | ✓ | จำกัด |
| แผนฟรี | โปรแกรมสำหรับนักพัฒนา | จำกัด | จำกัด |
| ความซับซ้อนของ API | ปานกลาง | สูง | ต่ำ |
API ของ eBay ใช้งานง่ายกว่า Amazon แต่ฟีเจอร์น้อยกว่า Etsy เหมาะกับผู้ขายทุกระดับ
กรณีใช้งานจริง
การขายแบบหลายช่องทาง (Multi-channel selling): ขายสินค้าบน eBay, Amazon และเว็บตัวเอง สินค้าคงคลังซิงค์ทุกช่องทางแบบอัตโนมัติ
การปรับราคาอัตโนมัติ (Automated repricing): ดึงราคาคู่แข่งทาง API เมื่อคู่แข่งลดราคา ระบบปรับราคาของคุณอัตโนมัติให้แข่งขันได้
การลงรายการสินค้าจำนวนมาก (Bulk listing): อัปโหลดไฟล์ CSV เพื่อสร้างรายการสินค้าหลายพันรายการในครั้งเดียว
บทสรุป
สิ่งที่ควรนำไปใช้:
- ยืนยันตัวตน OAuth 2.0 ด้วยข้อมูลแอป
- จัดการสินค้าคงคลังด้วย SKU
- สร้าง/เผยแพร่รายการสินค้า
- ประมวลผลคำสั่งซื้อและจัดส่ง
- จัดการการคืนสินค้า
- ทดสอบด้วย Apidog ก่อนใช้งานจริง
ขั้นตอนถัดไป:
- สมัคร eBay Developers Program
- สร้างแอปและรับข้อมูลรับรอง
- ดำเนินการตามขั้นตอน OAuth
- สร้างสินค้าคงคลังแรกของคุณ
- เผยแพร่รายการทดสอบ
ทดสอบ API ของ eBay ด้วย Apidog - ฟรี
คำถามที่พบบ่อย
ฉันจำเป็นต้องมีบัญชีธุรกิจเพื่อใช้ API หรือไม่?
ใช่ ต้องลงทะเบียนบัญชีผู้ขายและยืนยันตัวตน
สินค้าคงคลัง (inventory) กับข้อเสนอ (offers) ต่างกันอย่างไร?
สินค้าคงคลัง = ข้อมูลผลิตภัณฑ์ (ชื่อ, รายละเอียด, รูปภาพ)
ข้อเสนอ = เชื่อมสินค้าคงคลังเข้าตลาด พร้อมราคา/การจัดส่ง ข้อเสนอหลายรายการอ้างถึงสินค้าคงคลังเดียวกันได้
รายการสินค้าจะยังคงใช้งานได้นานแค่ไหน?
ถ้า GTC (ดีจนกว่าจะยกเลิก) จะอยู่จนกว่าจะถอนหรือสินค้าหมด
สามารถขายสินค้าระหว่างประเทศผ่าน API ได้หรือไม่?
ได้ ตั้งค่า marketplaceId ตามประเทศ (เช่น EBAY_US, EBAY_UK ฯลฯ)
ข้อจำกัดอัตรา (rate limit) ของ API คือ?
แตกต่างกันแต่ละ endpoint และระดับบัญชี ตรวจสอบ response headers
จะรับฉลากการจัดส่งได้อย่างไร?
eBay มีฉลากขนส่งราคาพิเศษผ่าน Fulfillment API สร้างการจัดส่งแล้วรับฉลากได้ทันที


Top comments (0)