栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

JAVA对接亚马逊SPAPI

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

JAVA对接亚马逊SPAPI

亚马逊官方文档Amazon-Services-APIAmazon API Services for Selling Partners and Shippers.https://developer-docs.amazon.com/ 1注册AWS账号,填写个人信息,填写银行信息,手机验证(AWS网址)

 

2在AWS里面创建IAM用户,这里的用户将会用于亚马逊后台创建应用程序中使用

 

填写用户名后选择编程使用

策略是给用户开通权限,不同的策略代表了不同的权限,根据实际自行选择,这里为了简单选择直接使用现有策略,选择管理员访问AdministratorAccess

 

 

 审核之后创建账户,点击下载.csv,下载的文件一定要保存、保存、保存好,只会让下载一次,忘记了就需要重新添加账户

点击新创建的用户

 

复制出用户 ARN(亚马逊后台创建应用程序中使用此处的ARN)

注意亚马逊卖家后台应用程序可以使用用户ARN也可以使用角色ARN  3 亚马逊后台填写开发人员资料(注意防关联)

 点击转至"开发人员资料"

第一次进入这个页面会特别慢,需要等好久才可以显示,特别是使用内部的浏览器的时候,大概需要等个3分钟页面才会显示

 数据访问最好选用对外公开,亚马逊对2022年04月25日以后创建的私有开发者做出了限制,(无法进行网站授权)因为本人公司是18年注册的所以是选择的私人开发者,后续可能需要根据亚马逊政策做出调整(转成公共开发者)

 

  4创建新的app客户端(注意防关联)

 

 5授权

销售伙伴可以使用下列其中一个工作流程授权您的应用程序:

1.1. Marketplace Appstore workflow
从商城应用商店详情页面启动的 OAuth 授权工作流程。 1.2. Website workflow(推荐使用)
从您自己的网站启动的 OAuth 授权工作流程。 1.3. 自行授权(仅限店铺本身为开发者)

我采取的是开发者店铺自授权,其他店铺网站授权的方式

 

 

 授权成功后得到刷新令牌 REFRESH_TOKEN(拿到令牌代表可以访问API拿到此店铺数据)

有其他店铺的需要

登录其他店铺卖家后台之后在网址输入授权url(注意每个店铺都应该在其独立IP登录防止店铺关联)

没登录后台会提示要登录

构建授权URL 

applicationID为应用程序ID ,state值是自定义的 ,  version=beta代表应用程序为草稿状态不加这个会使应用转为发布状态

 在网址栏输入授权链接后跳出授权页面,如果是登录状态直接勾选后确认就行了(下图为未登录状态)

 确认之后亚马逊会重定向一个URL、返回的URL构造为如下所示:

 将链接中spapi相关值记录下来(后面要用) 以下操作需要在授权五分钟内完成,过期需要重新授权

打开PostMan,headers添加

Content-Type:application/x-www-form-urlencoded;charset=UTF-8 Host:api.amazon.com 替换body中的code值为上面获取的SPAPI相关的值 CLIENT_ID,CLIENT_SECRET值是LWA凭证账号与密码(在开发者中心里的应用程序处查看)

如下图所示

 拿到此处返回的REFRESH_TOKEN就代表完成了该店铺的授权  6JAVA测试SPAPI(需要SDK)

SDK获取方式很多,网上官网都有

测试订单

public class OrdersV0ApiTest {
    private static final String ROLE_ARN = "arn:aws:iam::xxx";
    private static final String APP_CLIENT_ID = "amzn1.application-oa2xxxx";
    private static final Strin         APP_CLIENT_SECRET="1da61e15dff9a0775d903ec62ae58a360cxxxxx";
    private static final String REFRESH_TOKEN="Atzr|IwEBIBmcR1mFuQa1Wrsmwhwe420CQ-KCRuzMQnQHG0MDS1E-SpSwrYwKEWeneYPTRDpo-k6emzGRPxLtZeimyuQ6RnvGuQSyKsvzsZcTsDM-jZJPe9_3ihPWxON15oAoXzva-PYMbXN-CEd4YROn_dhP9u36y5jhzmpO2ovV5w0AYFU9A7-8IyOAhxxx";
    private static final String USER_ACCESS_KEY_ID = "AKIAWNxxx;
    private static final String USER_SECRET_ACCESS_KE = "TFvcpdabWcDELCvDHUWZuXFAVZfixx";
    @Test
    public void getOrdersTest() throws ApiException {

        //配置AWS凭据提供程序
        AWSAuthenticationCredentialsProvider awsAuthenticationCredentialsProvider = AWSAuthenticationCredentialsProvider.builder()
                //创建IAM职权的时候会生成这个ARN
                .roleArn(ROLE_ARN)
                //唯一值,可以使用UUID
                .roleSessionName(getRandomNonce())
                .build();

        //配置AWS身份验证凭据 注意这个地方的region分北美,欧洲,远东三个AWS区域
        AWSAuthenticationCredentials awsAuthenticationCredentials = AWSAuthenticationCredentials.builder()
                //注册成为开发者时生成的AWS访问密钥ID
                .accessKeyId(USER_ACCESS_KEY_ID)
                //注册成为开发者时生成的AWS访问密钥
                .secretKey(USER_SECRET_ACCESS_KEY)
                //注意,这里的region分北美(us-east-1),欧洲(eu-west-1),远东(us-west-2)
                .region("us-east-1")
                .build();

        //配置您的LWA凭据
        LWAAuthorizationCredentials lwaAuthorizationCredentials = LWAAuthorizationCredentials.builder()
                //查看开发者信息的时候可看到LWA的客户端编码
                .clientId(APP_CLIENT_ID)
                //查看开发者信息的时候可看到LWA的客户端秘钥
                .clientSecret(APP_CLIENT_SECRET)
                //根据上面的客户端编码和客户端秘钥请求客户端令牌
                .refreshToken(REFRESH_TOKEN)
                .endpoint("https://api.amazon.com/auth/o2/token")
                .build();

        OrdersV0Api ordersV0Api = new OrdersV0Api.Builder()
                .awsAuthenticationCredentialsProvider(awsAuthenticationCredentialsProvider)
                .lwaAuthorizationCredentials(lwaAuthorizationCredentials)
                .awsAuthenticationCredentials(awsAuthenticationCredentials)
                //注意,这里的endpoint分北美,欧洲,远东三个地域,每个区域的链接是不一样的
                //北美,https://sellingpartnerapi-na.amazon.com
                //欧洲,https://sellingpartnerapi-eu.amazon.com
                //远东,https://sellingpartnerapi-fe.amazon.com
                .endpoint("https://sellingpartnerapi-na.amazon.com")
                .build();

        System.out.println("开始请求接口");
        GetOrderResponse order = ordersV0Api.getOrder("111-5635427-1344245");
        String responseStr = JSON.createGson().create().toJson(order);
        System.out.println("响应结束,响应数据为:" + responseStr);
    }

    
    private String getRandomNonce() {
        return UUID.randomUUID().toString().replace("-", "");
    }

}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1032124.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号