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

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

  • OTT直充接口

  • OTT自动续费接口

  • OTT激活码直充接口

  • 通用接口

  • 内容点播接口

  • 卡券类接口

  • 用户信息接口

  • 会员福利接口

  • 合作方客户FV管理

# 合作方领取三方商品权益接口

# 简介

# 业务介绍

通过直充接口购买需要手动领取得第三方商品后,通过领取接口完成领取

# 接口定义

# 应用场景

# 接口域名

环境 域名
生产 openapi.vip.iqiyi.com
测试 test-openapi.vip.iqiyi.com

# URL

/partner/receive

# 请求方式

参数 说明
Method GET/POST
Content-Type application/x-www-form-urlencoded

# 请求参数

正式参数由爱奇艺商务提供,测试参数参见在线测试

变量名 名称 是否必须 说明
partnerNo 合作方编码 是 合作方的唯一标识,由爱奇艺提供
sign 签名串 是 MD5签名,签名方法见MD5加密描述
orderNo 订单号 是 合作方的订单号,字符串或数字或两者组合,必须能唯一标识每个订单
receiveAccount 领取账户 是 手机号、QQ、微信号等

# 返回参数

字段名 类型 说明
code String 返回码,参考附录
msg String 返回码说明

# 返回示例

{
    "code": "A00000",
    "msg": "成功"
}

# 返回码定义

返回码code 描述 备注
A00000 请求成功
Q00301 参数错误(如合作方编号为空,订单号非法等)
Q00304 用户账号校验失败,合作方传过来的手机号等,我们需要去内部的账号系统校验合法性,如果在校验过程交互超时或校验失败,就会返回此错误码 建议重试或作为失败处理
Q00305 爱奇艺商品无效
Q00307 签名错误
Q00308 请求超时 建议重试或作为失败处理
Q00332 系统错误
Q00348 内部服务异常,建议重试 建议重试或作为失败处理
Q00409 订单不存在,请检查
Q00410 订单已被领取成功,不可再次领取
Q00418 订单已退
Q00419 订单已过领取时间
Q00420 用户未注册三方权益账号,请先注册
Q00504 库存不足
Q00505 用户已到限购次数
Q00717 用户不符合充值三方商品条件
Q00115 账号异常,根据不同情况返回异常信息

# 附录

# MD5加密描述

采用MD5计算签名,MD5密钥由爱奇艺提供,具体计算方法如下:
1、 假设共有三个参数 a=3、b=2、c=1;
2、 按参数名的字母正序排列,再用“&”连接后得到串A,即为“a=3&b=2&c=1”;
3、 将MD5密钥拼接到串A后面,假设MD5密钥为“qwer”,则拼接后为“a=3&b=2&c=1qwer”;
4、 计算拼接串的MD5即为最终签名值,注意使用UTF-8编码计算,MD5后的签名最后都转成小写。
举例:
参数:a=3、b=2、c=1;
MD5密钥:qwer
最终签名串:f80118ff523f25eda67cb799bdc9c52d

# JAVA版本示例代码如下:

public class Test{
/**
 * MD5签名测试类
 *
 */
    private static final char[] DIGITS = {'0', '1', '2', '3', '4', '5', '6',
        '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'};
    public static void main(String[] args) {
        TreeMap<String, Object> paramMap = new TreeMap<>();
        paramMap.put("a", "3");
        paramMap.put("b", "2");
        paramMap.put("c", "1");
        String md5key = "qwer";
        String targetParam = Joiner.on("&").withKeyValueSeparator("=")
        .useForNull("").join(paramMap);
        // MD5签名工具类,可以自己实现, MD5实现参照
        String targetSign = EncodeUtils.MD5(targetParam + md5key, "UTF-8");
        System.out.println("targetSign: " + targetSign);
    }
}

# 加密工具类

# MD5加密

import com.google.common.base.Joiner;
import org.apache.commons.lang.StringUtils;
import org.junit.Test;
import java.util.HashMap;
import java.util.Map;
import java.util.TreeMap;
import java.io.UnsupportedEncodingException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
public class EncodeUtils{

    public static String MD5(String text, String charset) {

        MessageDigest msgDigest = null;
        try {
            msgDigest = MessageDigest.getInstance("MD5");
        } catch (NoSuchAlgorithmException e) {
            throw new IllegalStateException("System doesn't support MD5 algorithm.");
        }
        try {
            msgDigest.update(text.getBytes(charset));    //注意改接口是按照指定编码形式签名
        } catch (UnsupportedEncodingException e) {
            throw new IllegalStateException("System doesn't support your  EncodingException.");
        }
        byte[] bytes = msgDigest.digest();
        String md5Str = new String(encodeHex(bytes));
        return md5Str;
    }

    public static char[] encodeHex(byte[] data) {

        int l = data.length;
        char[] out = new char[l << 1];
        // two characters form the hex value.
        for (int i = 0, j = 0; i < l; i++) {
            out[j++] = DIGITS[(0xF0 & data[i]) >>> 4];
            out[j++] = DIGITS[0x0F & data[i]];
        }
        return out;
    }
}

# 常见问题

# 签名错误

请仔细阅读按签名规则和示例代码,需要注意:参数值为null的,key也会参与计算签名,所以最好传参就去掉值为null的key。MD5后的签名最后都转成小写

# 在线测试

参数 值 备注
partnerNo toB_common_test

所需密钥:

参数 值
MD5密钥 b0ee3c7f62760330
点击此处进行接口调试
在线调试

← 订单直充接口 订单状态查询接口 →