如何通过SP-API实现亚马逊卖家订单自动同步与OAuth授权对接?
亚马逊卖家账号OAuth授权对接全流程(订单导出+发货同步)
一、前期开发者准备
- 注册亚马逊开发者账号,创建SP-API应用:选择对应运营区域(北美/欧洲/亚太等),申请订单读取权限(Orders Read)和发货操作权限(Orders Write/Feed)——这两个是实现需求的核心权限。
- 配置回调URL:在应用后台填写HTTPS协议的回调地址,用于用户授权完成后跳转回你的应用,亚马逊会验证该地址的合法性。
- 获取核心凭证:记录LWA(Login with Amazon)的
Client ID、Client Secret,以及SP-API的Role ARN(用于后续获取临时API访问凭证)。
二、用户授权流程(替换手动密钥的核心环节)
- 引导用户进入亚马逊授权页:构造授权URL,携带参数:
client_id:你的LWA Client IDscope:sellingpartnerapi::orders(对应申请的订单权限)response_type=coderedirect_uri:你配置的回调URLstate:随机生成的字符串(用于防CSRF攻击,需与后续返回的state校验一致)
用户点击链接后,将跳转至亚马逊官方卖家登录页面,完成账号验证与授权确认。
- 接收授权码:用户授权成功后,亚马逊会跳转至你的回调URL,携带
code(10分钟有效期的授权码)和state参数。先校验state的一致性,再留存code。 - 换取长期刷新令牌:调用LWA令牌接口,传入
client_id、client_secret、code、grant_type=authorization_code、redirect_uri,获取refresh_token(长期有效,除非用户主动取消授权)和临时access_token(1小时有效期)。将refresh_token加密后关联用户账号存入数据库。
三、业务功能实现
- 导出未发货订单:
每次调用API前,用refresh_token调用LWA接口换取最新的access_token,然后调用SP-API的ListOrders接口,设置过滤条件OrderStatus=Unshipped,获取所有未发货订单的完整信息(含订单ID、买家信息等)。 - 同步追踪号并标记发货:
当后台录入追踪号后,可通过两种方式实现同步:- 单订单调用:使用SP-API的
CreateFulfillmentOrder接口,传入订单ID、合规的承运商代码(如USPS、DHL的官方代码)、追踪号; - 批量操作:使用Feed接口上传批量发货数据,效率更高。
调用成功后,亚马逊会自动将订单标记为已发货,并同步物流追踪信息至卖家后台与买家端。
- 单订单调用:使用SP-API的
四、安全与维护注意事项
- 凭证加密存储:
Client Secret、refresh_token必须加密后存储,禁止明文落地。 - 权限校验:定期检查
refresh_token有效性,若用户取消授权,需引导用户重新完成授权流程。 - 权限最小化:仅申请需求必需的权限,避免过度授权降低用户信任。
内容的提问来源于stack exchange,提问作者Cornelius Wilson
相关产品推荐
相关产品推荐

