寫完登入的授權之後,想說要來取訂單資料
結果竟然出現sign錯誤!
奇怪了,原本授權不是也是這樣寫,怎麼會出錯呢???
object(stdClass)[2]
public 'request_id' => string '465ae0710eakkkkkkkk130a264d5320' (length=32)
public 'error' => string 'error_sign' (length=10)
public 'message' => string 'Wrong sign.' (length=11)
這時候也是拜請了Google大神!
登愣!!看來應該也是很多人遇到這個問題啊!!
看了官方的QA
6. 為什麼請求API後返回”Wrong Sign”?
請先檢查以下幾點:
a. 請先檢查partner id與partner key所屬的環境與API請求的環境是否一致。
b. 計算簽名(sign)的時間戳(timestamp)與請求API的時間戳是否相同。
c. 建立基本字串的順序與方式是否正確 。
基本字串的順序請參考附件說明或平台文件Creating the sign base string。
參考來源:
https://seller.shopee.tw/edu/article/6716/openapi-v2-intro-faq
才發現,原來還有分呼叫的API不同,然後兜的字串有所差異,真的是搞死人了啊!!
解答:
建立 Sign 基礎字串
有 3 種類型的 API 需使用不同的參數來建立 Sign 基礎字串(其共同參數相同)。
依照以下順序將 API 路徑和下方的共同參數連接成一個基礎字串:
以 Shop APIs:Partner_id、API 路徑、Timestamp、Access_token、Shop_id
以 Merchant APIs:Partner_id、API 路徑、Timestamp、Access_token、Merchant_id
以 Public APIs:Partner_id、API 路徑、Timestamp
以取Shop APIs來看,就必須兜五個字串,PHP的程式碼如下:
$path = "/api/v2/order/get_order_list";
$timest = time();
$partner_id = 12345678;
$partnerKey = "oifjdslfjdsfiasjdfkkkkkkkkiasjdfpsdf'asdfkjadsjfpsadojfp";
$baseString = sprintf("%s%s%s%s%s", $partner_id, $path, $timest, $access_token, $shopid);
$sign = hash_hmac('sha256', $baseString, $partnerKey);
改好之後,果然正確了,然後又出現另一個錯誤…繼續除蟲吧!!
如果有什麼問題,也可以在下方留言處與我們分享,感謝您!!
手刀試用=>蝦皮對帳王
手刀試用=>康捷雲端ERP
相關文章
👉 蝦皮對帳王-蝦皮對帳結果一覽表-為什麼要對帳?無對應???
👉 蝦皮對帳王-對帳原理分析-有訂單,有撥款だいじょうぶ(大丈夫);有訂單,沒撥款 歐NO~~~~~!!!
[蝦皮服務] 訂單完成後什麼時候能夠收到款項呢?
期待您的留言

Comments