目標:串接蝦皮訂單、標籤資訊,目前串接蝦皮 OpenAPI 2.0 版本,串接手冊
串接步驟:
前面幾篇已經取得 access token,接下來就可以來嘗試串接蝦皮資料了
這次會嘗試蝦皮訂單,在取得訂單資料之前,可以先參考一下蝦皮的 API Call Flows
看過 API Call Flows 會更了解蝦皮資料處理的順序跟邏輯
橘色底是訂單的狀態,每個訂單狀態產生的原因都有在旁邊加以說明
其中幾個步驟的內容
1.訂單在確認付款後訂單狀態會由 UNPAID 轉成 READY_TO_SHIP
2.賣家或消費者刪除訂單後訂單狀態會變成 CANCELED; 消費者可以在訂單狀態變成 SHIPPED 之前取消訂單
4.在賣家安排物流後訂單狀態會變成 PROCESSED
5.物流單(託運單)被掃瞄後訂單狀態變成 SHIPPED
6.消費者要求退貨後訂單狀態變成 TO_RETURN
然後正常流程會是經過 1、4、5 這幾步驟,其他的話則是不一定
這個 API 可以讓你帶入需要的參數後取得你想要的訂單單號
格式 | HTTP/JSON |
---|---|
URL | • 正式區:https://partner.shopeemobile.com/api/v2/order/get_order_list |
• 測試區:https://partner.test-stable.shopeemobile.com/api/v2/order/get_order_list | |
請求方式 | GET |
ps:
公共參數:
參數 | 類型 | 說明 |
---|---|---|
sign | string | partner_id、api path、timestamp HMAC-SHA256 編碼,並用 partner key 當作加密 Key (可參授權商店那一篇) |
partner_id | int | Create App 產生的 partner_id (可參Create App 那一篇) |
timestamp | int | 時間戳,期限 5 min |
access_token | string | 期限 4 小時(可參取得 access token 那一篇) |
shop_id | int | 商店 ID(可參授權商店那一篇) |
業務參數:(因為是 GET,所以要帶到 url 的 query)
參數 | 類型 | 說明 |
---|---|---|
time_range_field | string | 時間類別:create_time 或 update_time. |
time_from | int | 起始時間,起始到結束不能超過 15 天 |
time_to | int | 結束時間,起始到結束不能超過 15 天 |
page_size | int | 一次 response 的筆數,最多 100 |
cursor | string | 超過 1 頁的,下一頁的數 |
order_status | string | 訂單狀態:UNPAID/READY_TO_SHIP/PROCESSED/SHIPPED/COMPLETED/IN_CANCEL/CANCELLED/INVOICE_PENDING |
response_optional_fields | string | 回應的欄位,不填的話只會回應主要的欄位,其餘的欄位就不會有 |
以 PHP 為範例
// 取得訂單清單
function getOrderList(
$host,
$partnerId,
$partnerKey,
$timestamp,
$access_token,
$shop_id,
$cursor,
$page_size,
$order_status
){
$path='/api/v2/order/get_order_list';
$base_string=strval($partnerId.$path.$timestamp.$access_token.$shop_id);
$sign=hash_hmac('sha256',$base_string,$partnerKey,false);
$time_from=strtotime('2022-05-01 11:00:00');
$time_to=strtotime('2022-05-12 23:00:00');
$paremeter='&time_range_field=create_time&time_from='.$time_from.'&time_to='.$time_to.'&page_size='.$page_size.'&order_status='.$order_status;
$url=$host.$path.'?partner_id='.$partnerId.'×tamp='.$timestamp.'&sign='.$sign.'&access_token='.$access_token.'&shop_id='.$shop_id.$paremeter;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Content-Type: application/json'
]);
$res = curl_exec($ch);
return $res;
}
串接完後會有清單的 order_sn,這樣就可以進一步去打 get_order_detail 來取得訂單詳細資料
小提醒:如果 response_optional_fields 沒有帶 order_status 就不會有喔
一開始想說怎麼不給完整的資料,但後來串接 get_order_detail 的時候,發現蠻不錯的耶,只會給你必要的資訊,需要的資訊再自己取得就好,不需要的就可以不用給,就不用接收一大坨的資料
經過前面商店授權、 access token 後就這次串接就相對簡單了,另外我覺得很棒的是蝦皮有提供 API Call Flows 這我覺得蠻不錯的,讓開發者可以很清楚知道實際操作跟 api 之間的關聯性!
參考資料:
API Call Flows
get_order_list