API数据接口-宙斯申请流程及更新流程

宙斯开发者中心,前身为宙斯开放平台(Jingdong Open Service 简称JOS) 是京东开放服务的载体,于2012年5月正式上线,旨在通过开放接口的形式将京东各系统能力对外开放,面向开发者提供商品、交易、仓储、物流、售后等零售技术服务能力,支持京东商家、ISV、个人及合作伙伴的业务系统与京东系统进行无缝对接,可以更加高效、灵活的处理电商业务。此次宙斯从接口开放平台升级为以开发者为中心的技术服务平台,致力于为广大开发者提供良好的平台环境,在实现京东零售能力开放及赋能的同时,打造可持续的商业生态环境,帮助开发者业务增长。

一、宙斯平台接入

1、登录地址:

https://jos-console.jd.com/#/app/createApp/Types

2、点击创建应用:

选择应用类型-京东广告营销-京媒-创建应用(如下图);

3、填写应用信息:

应用命名必须为XXX_AN,申请资料中必填项需填写完整;

注意:

  • 文档中必填信息必须填写完整才可审核通过;
  • 京东侧业务对接人员邮箱:liuxi1280@jd.com;(文档邮箱位置填写,注意不要填写媒体个人邮箱)
  • 接口名称:jingdong.ssp.prod.dailyReport
  • 测试调用API地址:https://open.jd.com/#/apiTestTools?id=8621&groupId=406
  • 业务字段请求参数DEMO:在上述链接paramObject中输入下面demo可以生成请求地址和真实响应数据。可以根据测试调用API地址中右边的请求参数格式拼接JSON请求。不需要使用宙斯侧SDK。
{"dimension":["date"],"endDate":"2022-11-30","mediumCompanyId":724,"requestFrom":"JOS",
"josApiName":"jingdong.ssp.prod.dailyReport","mediumIds":[665567],"osTypeList":["2"],"tagIds":["829061626"],
"page":1,"pageSize":10,"startDate":"2022-10-01"}

4、审核:

将创建完成截图和申请资料邮件发送org.jan1@jd.com;抄送zhanglixin33@jd.com;ranyang7@jd.com;zhangxuan158@jd.com;yangjing465@jd.com;liuxi1280@jd.com1-7天时间审核;

5、审核成功后生成专属App key:

审核完成后,媒体需将App key、公司ID反馈给以上邮箱;

APPKEY获取方式:登录宙斯平台-应用管理-对应应用下APPKEY;

6、协议对接:

权限审核成功后选择京准通api对接协议进行对接;

7、Accesstoken获取方式:

  • https://jos.jd.com/commondoc?listId=32
  • 测试完毕后需发布,若未发布有效期过期后,无法使用;
  • 测试期间有效期为1天,正式上线(应用发布)后有效期为1年

8、应用发布:

按照文档开发后,点击API测试工具进行测试,测试完成后发布应用即可。

二、接口请求方式

老接口于2023年1月已下线,新接口支持更丰富的指标及维度查询,接口文档详见https://jos.jd.com/apilist?apiGroupId=406&apiId=19750&apiName=jingdong.ssp.prod.dailyReport;

宙斯接入规范:https://jos.jd.com/commondoc?listId=33 注意:以下接口的《请求参数》需要传在宙斯接入规范中的360buy_param_json字段中 均为post方式,除每个接口中的请求参数外,都有相同的公共参数。 公共请求参数:

名称 类型 必须 描述
method String API接口名称
access_token String -
app_key String 应用的app_key
sign String 签名
timestamp String 时间戳,格式为yyyy-MM-dd HH:mm:ss,例如:2011-06-16 13:23:30。京东API服务端允许客户端请求时间误差为6分钟
format String 暂时只支持json
v String API协议版本,可选值:2.0

三、加密说明

接口中部分字段需要加密传输: 加密和填充方式:AES/CBC/PKCS7Padding 编码方式:UTF-8 秘钥线下找对应产品获取。

public class AesUtils {
    //偏移量
    public static final String VIPARA = "FLKOk/5OuO87CD4hsIN4hw==";   //AES 为16bytes. DES 为8bytes

    //编码方式
    public static final String CODE_TYPE = "UTF-8";

    //填充类型
    public static final String AES_TYPE = "AES/CBC/PKCS7Padding";

    //私钥
    private static final String AES_KEY="O7hb+uACWs2LQ47J9w7m2A==";

    //字符补全
    private static final String[] consult = new String[]{"0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F","G"};
  @PostConstruct
  private void init(){
        if (Security.getProvider(BouncyCastleProvider.PROVIDER_NAME) == null){
            Security.addProvider(new BouncyCastleProvider());
        }
     }

    /**
     * 加密
     *
     * @param cleartext
     * @return
     */
    public static String encrypt(String cleartext) {
        try {
            byte[] ivByte = Base64.getDecoder().decode(VIPARA);
            IvParameterSpec iv = new IvParameterSpec(ivByte);
            byte[] keyByte = Base64.getDecoder().decode(AES_KEY);
            SecretKeySpec key = new SecretKeySpec(keyByte, "AES");
            Cipher cipher = Cipher.getInstance(AES_TYPE);
            cipher.init(Cipher.ENCRYPT_MODE, key, iv);
            byte[] encryptedData = cipher.doFinal(cleartext.getBytes(CODE_TYPE));
            byte[] encodedBytes = Base64.getUrlEncoder().encode(encryptedData);
            return new String(encodedBytes);
        } catch (Exception e) {
            return "";
        }
    }

    /**
     * 解密
     *
     * @param encrypted
     * @return
     */
    public static String decrypt(String encrypted) {
        try {
            byte[] ivByte = Base64.getDecoder().decode(VIPARA);
            byte[] byteMi = Base64.getUrlDecoder().decode(encrypted);
            IvParameterSpec iv = new IvParameterSpec(ivByte);
            byte[] keyByte = Base64.getDecoder().decode(AES_KEY);
            SecretKeySpec key = new SecretKeySpec(keyByte, "AES");
            Cipher cipher = Cipher.getInstance(AES_TYPE);
            cipher.init(Cipher.DECRYPT_MODE, key, iv);
            byte[] decryptedData = cipher.doFinal(byteMi);
            return new String(decryptedData, CODE_TYPE);
        } catch (Exception e) {
            return "";
        }

宙斯相关扩展阅读:

powered by Gitbook该文档修改时间: 2023-11-14 15:43:49

找到相关内容

    未找到""相关内容

    找到相关内容

      未找到""相关内容