会员对外文档平台 会员对外文档平台
登录
接口
介绍
  • TOB直充接口

    • 订单直充接口
    • 合作方领取三方商品权益接口
    • 订单状态查询接口
    • 订单直充接口 (RSA加密版)
    • 购买校验接口
    • 网吧账号创建接口
  • TOB激活码直充接口

  • OTT直充接口

  • OTT自动续费接口

  • OTT激活码直充接口

  • 通用接口

  • 内容点播接口

  • 卡券类接口

  • 用户信息接口

  • 会员福利接口

  • 合作方客户FV管理

# 接口使用注意事项及对接说明

# 注意事项

# 双方通信机制

说明:由于接口通过云端进行信息交互,该机制受网络及信息同步机制影响,获取到数据会有一定延迟,爱奇艺影片需要下载到本地才能播放,为保证数据一致性,第三方调用爱奇艺影片列表类接口频率为1分钟一次。

# 接口使用注意

1、调用接口前先获取识别码:部分接口信息有赖于店铺识别码,建议先根据渠道识别码获取到店铺识别码,调取某些接口时传递对应的识别码 2、使用分类获取影片接口前,需先调用获取影片分类标签接口以获取到有哪些分类标签

# 对接说明

# 相关名词

# channelCode

渠道方对应的 code,用来唯一标记渠道。

# agentCode

每家店面对应的 code,用来唯一标记店面。

# secureCode

安全码,用来校验请求的合法性。

# timestatmp

时间戳,1970-01-01 00:00:00.000 到当前时间的毫秒数。

# signature

请求签名,根据 secureCode与时间戳计算得来,具体计算方法为:以字符串形式将 secureCode跟时间戳拼接,然后计算拼接字符串的MD5值。以下为Java代码示例,仅供参考:

/** 
*  根据安全码 & 时间戳生成签名 * 
*  @param secureCode 安全码 
*  @param timestamp 时间戳 
*  @return 返回签名字符串 
*/
public String getSignature(String secureCode, Long timestamp) { 
	String str = secureCode + timestamp; 
	return DigestUtils.md5Hex(str); 
} 

# 安全认证

方案:HTTPS 双向认证 + IP 白名单控制 + 安全码校验。 渠道方后台系统与爱奇艺云端系统通信采用HTTPS加密传输,证书由爱奇艺提供,并通过线下邮件等方式进行交付。 渠道方后台系统需要向爱奇艺提供固定的服务器IP地址,由爱奇艺进行白名单处理,非白名单IP地址的访问请求会被拒绝。在以上基础上,爱奇艺提供一个安全码,该安全码用来生成每次请求附带的签名,用来校验请求的合法性。安全码通过线下邮件等方式进行交付。出于安全需要,安全码会根据情况需要进行更新。

# 参考代码

public class JdApiApplicationTests4 {
    public static String httpsJsonRequest(String requestUrl, String requestMethod, String outputStr) throws Exception {
        TrustManagerFactory trustFactory = TrustManagerFactory.getInstance("SunX509", "SunJSSE");
        KeyStore tsstore = KeyStore.getInstance("JKS");
        tsstore.load(JdApiApplicationTests4.class.getResourceAsStream("/test/client-trusted.keystore"), "moviebar2.0"
                .toCharArray());
        trustFactory.init(tsstore);
        TrustManager[] trustManagers = trustFactory.getTrustManagers();
        KeyManagerFactory keyFactory = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());
        KeyStore keystore = KeyStore.getInstance("JKS");
        keystore.load(JdApiApplicationTests4.class.getResourceAsStream("/test/client.keystore"), "moviebar2.0"
                .toCharArray());
        keyFactory.init(keystore, "moviebar2.0".toCharArray());
        KeyManager[] keyManagers = keyFactory.getKeyManagers();
        SSLContext sslContext = SSLContext.getInstance("SSL", "SunJSSE");
        sslContext.init(keyManagers, trustManagers, new java.security.SecureRandom());
        SSLSocketFactory ssf = sslContext.getSocketFactory();
        URL url = new URL(requestUrl);
        HttpsURLConnection httpsUrlConn = (HttpsURLConnection) url.openConnection();
        httpsUrlConn.setReadTimeout(1000 * 50);
        httpsUrlConn.setSSLSocketFactory(ssf);
        httpsUrlConn.setHostnameVerifier(new HostnameVerifier() {
            public boolean verify(String s, SSLSession sslSession) {
                return true;
            }
        });
        httpsUrlConn.setDoOutput(true);
        httpsUrlConn.setDoInput(true);
        httpsUrlConn.setUseCaches(false);
        httpsUrlConn.setRequestProperty("Content-Type", "application/json");
        httpsUrlConn.setRequestMethod(requestMethod);
        if ("GET".equalsIgnoreCase(requestMethod)) {
            httpsUrlConn.connect();
        }
        if (null != outputStr) {
            OutputStream outputStream = httpsUrlConn.getOutputStream();
            outputStream.write(outputStr.getBytes("UTF-8"));
            outputStream.close();
        }
        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(httpsUrlConn.getInputStream(),
                "utf-8"));
        String str = null;
        StringBuilder buffer = new StringBuilder();
        while ((str = bufferedReader.readLine()) != null) {
            buffer.append(str);
        }
        bufferedReader.close();
        httpsUrlConn.disconnect();
        return buffer.toString();
    }
    public static void main(String[] args) {
        try {
            String url = "https://api.y.iqiyi.com/test/hello";
            String response = JdApiApplicationTests4.httpsJsonRequest(url, "GET", null);
            System.out.println(response);
        } catch (Exception e) {
            System.out.println(e);
        }
    }
}

# 错误代码

接口调用出错时,统一返回以下 JSON 格式的数据:

    {        
        "msg": "参数错误",        
        "code": "E00001"    
    }

具体错误代码参考如下:

错误代码 错误类型
A00000 成功
E00001 参数错误
E00002 业务处理出错,具体查看返回数据中的 msg
E00003 超过设备最大上限
E00004 channelCode 不合法
E00018 设备未注册
E00101 播控平台账号不足
E00102 记账失败
E00109 订单重复提交
E10000 余额不足
E10001 财务系统没有此账号