快工助手跨境电商知识与商机助手

API调用

Shopee 官方资料 · Shopee Open Platform 开发者指南 · 适合开发者

stable本次发布有变化全部展示

来自 Shopee 官方资料快照 ·

打开官方原文 ↗
  1. 当前资料结构化阅读页
  2. 固定快照已留存,可追溯
  3. 官方原文可核对
查看技术与溯源信息
平台 / profile
Shopee / profile.shopee.developer_guide
语言
zh-Hans
发布版本
cn-20260909-2
标签
zhuge/sourceplatform/shopeeaudience/developercategory/api_doctopic/apitopic/developertopic/getting-started

资料正文

§1 API调用

请注意本文章只针对V2.0接口调用进行讲述。

#

§2 请求域名

正式环境和测试环境我们都提供两种域名:

正式环境:

https://openplatform.shopee.cn/ —服务部署地近中国大陆的开发者使用

https://openplatform.shopee.com.br/ —服务部署地近美国的开发者使用

https://partner.shopeemobile.com/ —服务部署地近新加坡的开发者使用

沙箱环境:

https://openplatform.sandbox.test-stable.shopee.sg/ —所有开发者都可以使用

https://openplatform.sandbox.test-stable.shopee.cn/ —中国大陆的开发者使用

请您根据调用Open API服务器所在地,选择正确的域名。

#

§3 请求方法

目前Open API 只提供两种请求方法:Get和Post。

#

§4 接口协议

大多数API使用HTTP/JSON协议。 某些API,例如上传文件的 API,使用的 HTTP/FORM。

#

§5 请求参数

在API文档中,您将会看到两种请求参数,一种是公共请求参数(Common Parameter),一种是业务请求参数(Request Parameter),对于Get类型的接口,可能两种参数同时存在,也可能只存在公共请求参数,Post类型接口,两种参数同时存在。

下面是关于公共参数的说明:

参数说明
partner_id所有接口调用都需要合作伙伴ID, 您可以通过在控制台创建App获取到partner id, Test partner_id只能用于测试环境,Live partner_id只能用于生产环境
timestamp所有接口调用都需要时间戳,时间戳样例:1610000000,每次的接口请求都需要用最近5分钟内的时间戳请求,点击这里了解时间戳
sign所有接口调用都需要签名,签名需要用SHA256算法生成,不同接口类型签名生成方法不同,详细参考本文章中<签名的计算>部分
access_token获取和修改卖家数据相关接口都需要访问令牌,访问令牌4个小时有效,可在有效期内重复使用,访问令牌需要定期刷新,获取和刷新方法可以参考授权文章
shop_idShopee商店的唯一标识ID,可以通过店铺授权后获取到,获取方法参考授权文章
merchant_idShopee商家的唯一标识ID,Open API只支持跨境卖家使用merchant id,可以通过店铺授权后获取到,获取方法参考授权文章
#

§6 Open API 的三种类型

在API文档中,根据公共参数的不同,我们分为三种API类型,这三种类型包含的公共参数如下:

  • Shop API: partner_id、 timestamp、sign、access_token、shop_id
  • Merchant API: partner_id、 timestamp、sign、access_token、merchant_id
  • Public API: partner_id、 timestamp、sign

可以看到,Public类型接口不需要access token, Shop类型和Merchant类型接口都需要access_token, 这意味着Shop类型和Merchant类型接口需要完成店铺授权之后才能调用,Public类型接口不需要。

*目前只有Shopee跨境商家需要使用Merchant类型接口,本土卖家不需要使用。

#

§7 签名的计算

第一步: 创建基本字符串(Base string):

不同类型的API,Base string包含的元素不一样,请严格按照下列先后次序,将api path(不带host) 和下列公共参数拼接为单一字符串,即为base string:

*api path 样例:/api/v2/auth/token/get

Shop API: partner_id, api path, timestamp, access_token, shop_id

*样例:

partner_id: 2001887

api path: /api/v2/shop/get_shop_info

timestamp: 1655714431

access_token: 59777174636562737266615546704c6d

shop id: 14701711

Base string=2001887/api/v2/shop/get_shop_info165571443159777174636562737266615546704c6d14701711

Merchant API:partner_id, api path, timestamp, access_token, merchant_id

*样例:

partner_id: 2001887

api path: /api/v2/global_product/get_category

timestamp: 1655714431

access_token: 09777174636962737266615546704c6d

merchant_id: 1000000

Base string=2001887/api/v2/global_product/get_category165571443109777174636962737266615546704c6d1000000

Public API:partner_id, api path, timestamp

*样例:

partner_id:2001887

api path: /api/v2/public/get_shops_by_partner

timestamp:1655714431

Base string=2001887/api/v2/public/get_shops_by_partner1655714431

第二步: 采用HMAC-SHA256算法计算签名(sign)

将基本字符串(Base string)和partner Key( 通过控制台获取)用HMAC-SHA256散列算法来计算签名。 散列函数的输出是一个十六进制编码的字符串。

*样例:

sign=56f31d01aeda9d08bf456b37f6f6640ef8614b4d6ad49baafe30b39a061f0e26

*如果您在调用过程中遇到Wrong sign的报错,可以点击这里查看解决方案

生成签名代码样例:

#!/usr/bin/envpython

# encoding:utf-8



import hmac 

import time

import requests

import hashlib

timest=int(time.time())

host="https://partner.shopeemobile.com 

access_token = "random string"



partner id =80001

partner key = "test....."



#### call shop level api 

shop id =209920

base string ="%s%s%s%s%s"%(partner id, path timest access token, shop id) 

sign = hmac.new( partner key,base string,hashlib.sha256)hexdigest() 

path ="/api/v2/example/shop level/get"



url = host + path + "?partner_id=%s&shop_id=%s&timestamp=%s&access_token=%s&sign=%s"%(partner_id, shop_id, timest, access_token, sign) 

headers={"Content-Type":"application/ison"? 

resp=requests.post(urlheaders=headers)



#### call merchant level api 

merchant id =1234567

base string ="%s%s%s%s%s"%(partner id, path timest, access token, merchant id) 

sign =hmac.new( partner key,base string,hashlib.sha256).hexdigest() 

path ="/api/v2/example/merchant_level/get"



url = host+ path +"?partner id=%s&merchant id=%s&timestamp=%s&access token=%s&sign=%s"%(partnerid, merchant id, timest, access token, sign) 

headers ={"Content-Type":"application/ison"? resp =requests.eet(urlheaders=headers)



#### call public api

base string ="%s%s%5%s"%(partner idpathtimestaccess token)

sign= hmac.new( partner keybase stringhashlib.sha256)hexdigest() 

path ="/api/v2/auth merchant/access token/get"



url = host+path+"?partner id=%s&timestamp=%s&sign=%s%(partner idtimest, sign)

body ={"partner id":partner id, "merchant id": merchant id,"refresh token":"testingtoken") 

headers =["Content-Type":"application/ison"?

resp =requests.post(url,json=bodyheaders=headers)
#

§8 API请求样例

对于Get请求,您需要将公共参数和业务参数都放在url中

例如v2.product.get_category

请求URL样例:

https://partner.shopeemobile.com/api/v2/product/get_category?partner_id=851249&timestamp=1654673582&shop_id=1001094&access_token=367a0a8eb9d1837cbf7c43b587a0faa4&sign=a40fc50a08c382eeee08e2eb00deb8464c6fdcbe4f1c271e033cdbca3ded4d5b&language=zh-hans

*此接口中,partner_id、timestamp、access_token、shop_id、sign都是公共参数,language是业务参数

对于Post请求,您需要将公共参数放在请求url中,业务参数放在request body中

例如v2.shop.update_profile

请求URL样例:

https://partner.shopeemobile.com/api/v2/shop/update_profile?partner_id=851249&timestamp=1654673582&shop_id=1001094&access_token=367a0a8eb9d1837cbf7c43b587a0faa4&sign=80cbce8da907d5a1237711409920fc16908a9f9e01b1254ff9cc44aaf0836122

Request body:

{

"shop_logo": "https://cf.shopee.sg/file/8424390be4677b0b3c37ce6499ce261a",

"description": "TTest",

"shop_name": "123"

}

*此接口中,partner_id、timestamp、access_token、shop_id、sign都是公共参数,shop_log、description、shop_name是业务参数

#

§9 API返回参数

字段名是否必返说明
request id每个 API 请求都有一个唯一的request id相关联,当您遇到API问题时请提供这个ID和对应的接口,以保证您可以获得更快的回复
error错误码。当请求成功时,error将返回空,如果请求失败,将会返回对应error code
message错误提示信息,当请求成功时,message将返回空,如果请求失败,这个字段将返回更加详细的错误信息
warning接口调用成功,但部分数据没有返回或者批量请求有部分失败,将通过此字段返回信息
response当请求成功时,这个字段将返回具体的数据
#

§10 API功能

API 模块功能说明
Product获取商品相关的类目树,属性和品牌等信息,获取店铺商品数据,创建/删除/更新店铺商品信息,获取商品参与活动信息,置顶商品,获取置顶商品列表,评论商品,获取评论列表,获取商品推荐类目和推荐属性,注册商品品牌。
Shop获取店铺名称,店铺所属市场,店铺类型等,更新店铺信息
Merchant*该模块只有跨境卖家需要获取商家信息(商家名称/地区/币种以及),获取商家下已授权所有的店铺列表
GlobalProduct*该模块只有跨境卖家需要获取相关的类目树,属性和品牌等信息,获取全球商品数据,创建/删除/更新全球商品,获取可发布市场,发布全球商品,设置全球商品信息同步开关,获取已发布市场商品,获取市场商品对应的全球商品ID,获取全球商品推荐类目和推荐属性
MediaSpace上传视频,上传图片
Order获取店铺订单列表,获取订单详情,拆单,解除拆单,取消订单,处理卖家取消订单申请,设置订单备注,添加/上传发票,获取待上传发票订单列表,下载发票,获取发票信息
Logistics获取发货参数,订单发货,获取订单物流跟踪号,获取面单支持格式,获取面单,获取订单物流轨迹,获取店铺地址列表,删除店铺地址,设置店铺地址标识,获取店铺渠道信息,更新店铺渠道状态,批量发货
FirstMile*该模块只有跨境卖家需要获取未绑定订单,生成批次号,获取批次号详情,绑定首公里订单,获取批次号列表,获取首公里面单,获取首公里渠道
Returns获取退货退款的列表,获取退款详情,获取退货退款方案,确认退款,提交争议,退款议价,上传争议图片证据
Payment获取订单收入,获取放款数据,获取钱包数据,获取结算订单列表,分期付款店铺设置和商品列表
Discount折扣的增删改查
Bundle Deal捆绑销售的增删改查
Add-On Deal加购活动的增删改查
Voucher优惠券的增删改查
Follow Prize关注礼的增删改查
TopPicks店长推荐的增删改查
ShopCategory商店分类的增删改查
AccountHealth获取店铺表现数据,获取店铺罚分
Public获取已授权店铺,获取已授权商家,重发code获取令牌,升级code获取令牌,获取令牌,刷新令牌
Push获取push设置/更新push设置
Chat*此模块只开放给白名单用户,有需要请先查看如何申请FAQ获取会话列表,获取会话详情,获取会话信息,删除会话,标记会话未读,置顶/解除置顶会话,上传聊天图片,发送人工回复信息,发送自动回复信息,获取/设置议价状态
#

§11 API限频

每个API都有调用频率限制,如果超出限制您会收到HttpCode429的错误。当您收到此错误时,请适当降低调用频率,以便在接口限流的情况下保持稳定的调用,避免频繁的重试操作,因为这会进一步增加接口的负载压力。如果您未及时进行调整并且持续产生此错误,我们会限制您的API调用,这可能会对您的业务产生不利影响。

#

§12 API问题

如果您在API集成过程中,遇到问题,可以先查询FAQ模块,如果仍不能解决,可以提报工单

#