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

  • TOB激活码直充接口

    • 激活码发码业务
    • 激活码直充接口
    • 激活码直充接口(仅适用新用户)
    • 激活码直充查询接口
  • OTT直充接口

  • OTT自动续费接口

  • OTT激活码直充接口

  • 通用接口

  • 内容点播接口

  • 卡券类接口

  • 用户信息接口

  • 会员福利接口

  • 合作方客户FV管理

# 激活码直充接口

# 简介

# 业务介绍

支持TOB业务合作方根据激活码兑换爱奇艺会员

# 接口定义

# 适用场景

合作方调此接口为用户兑换(激活)激活码,兑换成功为用户开通该激活码对应时长的爱奇艺会员。

# 接口域名

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

# URL

/partner/card-subscribe.action

# 请求方式

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

# 请求参数

变量名 类型 是否必须 描述
userAccount String 是 需要开通权益的账号,支持手机号、邮箱,且只有手机号支持自动注册爱奇艺账号
cardCode String 是 充值的激活码,激活码样式:ADE0-E958-CDDF-739B
partnerNo String 是 充值商家商户号(接口对接前由爱奇艺提供的固定编号)
sign String 是 md5签名,具体加密规则见MD5加密描述
orderNo String 是 商家订单号(双方业务关联主键 建议使用)

# 返回示例

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

其他失败情况code值非A00000

# 返回码说明

红色错误码需要进行重试

错误码 说明 备注
A00000 兑换成功!权益已开通
A00002 兑换失败,系统错误 建议重试
Q00202 duplicate external pay request!(并发错误) 建议重试
Q00301 参数错误
Q00307 签名错误
Q00308 请求超时 建议重试
Q00304 账号转换失败 建议重试
Q00313 激活码非法使用
Q00314 激活码业务类型不匹配
Q00318 TV端不能激活黄金激活码
Q00319 该激活码不适用当前平台
Q00320 非法的激活码
Q00321 激活码批次使用超限
Q00322 该激活码已被其他用户冻结
Q00323 用户身份非法
Q00324 该激活码已被其他用户消费
Q00332 系统错误 建议重试
Q00339 网络超时 建议重试
Q00399 服务暂不可用,请重试 建议重试
Q00353 订单处理中 建议重试
Q00408 订单已存在,具体说明见附录 (激活码已存在其他账号的完成/待完成订单 不能重复使用)

# 附录

# MD5加密描述

采用MD5计算签名,MD5密钥由爱奇艺提供,具体计算方法如下:
1、 假设共有三个参数 pUid="1583902"、partner="ott_test"、MD5密钥="123456789";
2、 按参数名按pUid_partner_key排列,再用“_”连接后得到串A,即为“1583902_ott_test_123456789”;
3、 计算拼接串的MD5即为最终签名值,注意使用UTF-8编码计算 ,MD5后的签名最后都转成小写。
举例:
参数:pUid="1583902"、partner="ott_test", MD5密钥:123456789
最终签名串:f80118ff523f25eda67cb799bdc9c52d

# JAVA版本示例代码如下:

/**
 * MD5签名测试类
 *
 * @author zdg
 * @date 2019/4/16 9:39
 */
public class Md5Test {
    private static final char[] DIGITS = {'0', '1', '2', '3', '4', '5', '6',
        '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'};
   @Test
  public void main(String[] args) { 
    String pUid="1583902";
    String partner="ott_test";
    String md5key = "123456789";
    StringBuffer str = new StringBuffer(pUid);
    str.append("_").append(partner).append("_").append(md5key);
    // MD5签名工具类,可以自己实现, MD5实现参照
    String targetSign = EncodeUtils.MD5(str.toString(), "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.io.UnsupportedEncodingException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

/**
 * MD5签名测试类
 *
 */
public class EncodeUtils {

    private static final char[] DIGITS = {'0', '1', '2', '3', '4', '5', '6',
        '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'};
    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;
    }
}

# 常见问题

# 签名错误

历史原因激活码直充和查询接口签名规则不一样,但秘钥是同一个,请仔细阅读每个接口的签名规则。

# 激活码直充下单未返回成功如何处理

需要合作方对原订单号再次发起同步请求,重试的间隔时间可以逐步扩大(例如最多重试5次,间隔时间依次为1s,5s,30s,1m,3m),直至订单最终同步成功;如果重试多次后,订单同步依然失败,就需要联系爱奇艺侧技术同学排查具体失败的原因。

# 激活码直充返回Q00408错误码

激活码直充返回Q00408(激活码已绑定其他账号,详情调用查询接口)错误,原因是激活码会对首次充值的用户进行12小时的绑定,这期间会用该激活码给首次充值用户不断重试,给用户如果充值失败12小时后才可给其他用户使用。

场景举例: 手机号A消费激活码X,由于我们内部服务异常返回了非A00000;合作方又用手机号B来消费激活码X,如果在A提交的12小时内,就会收到Q00408;若12小时后爱奇艺这边重试失败的话,就会释放激活码X,合作方就可以把激活码X继续出售给手机号B等。若在12小时我们内部的重试周期内,你们用手机号B来消费激活码X看到408,可以选择给B退款

# 在线测试

参数 值 备注
partnerNo test_card_pay

所需密钥:

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

← 激活码发码业务 激活码直充接口(仅适用新用户) →