开放API - 爱买卡
高性能

毫秒级响应,单接口QPS支持1000+,99.99%可用性保障

安全可靠

签名验证防篡改,HTTPS加密传输,IP白名单控制

文档完善

详细的接口文档,在线调试工具,多语言SDK示例

技术支持

专属技术支持,7x12小时在线,快速响应您的问题

接口概览
签名验证
商品列表
下单接口
回调通知
错误码
申请接入

第三方API接入
91卡券API

接口概览

接入流程
  1. 注册成为爱买卡会员
  2. 在下方提交API接入申请
  3. 审核通过后获取 AppID 和 AppSecret
  4. 根据本文档进行开发对接
  5. 正式上线使用
基础信息
说明
网关地址 https://api.aimaika.com/v1
字符编码 UTF-8
请求方式 HTTP POST / GET
响应格式 JSON
签名算法 MD5
公共返回参数
{
    "code": 200,
    "message": "success",
    "data": {
        // 业务数据
    }
}

签名验证

签名算法
  1. 将所有请求参数(除sign外)按照参数名ASCII码从小到大排序
  2. 使用URL键值对的格式拼接成字符串stringA
  3. 在stringA最后拼接上key得到stringSignTemp
  4. 对stringSignTemp进行MD5运算,得到sign值
签名示例
// 参数示例
appid: "10001"
product_id: "1001"
mobile: "13800138000"
timestamp: "1620000000"

// 1. 排序后拼接
stringA = "appid=10001&mobile=13800138000&product_id=1001×tamp=1620000000"

// 2. 拼接密钥
stringSignTemp = stringA + "&key=您的AppSecret"

// 3. MD5签名
sign = MD5(stringSignTemp).toUpperCase()
PHP示例代码
function generateSign($params, $appSecret) {
    ksort($params);
    $stringA = '';
    foreach ($params as $k => $v) {
        if ($k != 'sign' && $v != '') {
            $stringA .= $k . '=' . $v . '&';
        }
    }
    $stringSignTemp = rtrim($stringA, '&') . '&key=' . $appSecret;
    return strtoupper(md5($stringSignTemp));
}

商品列表接口

GET /api/goods/list
请求参数
参数名 必填 类型 说明
appid string 分配的应用ID
timestamp int 当前时间戳(10位)
category string 商品分类:video/music/game等
sign string 签名值
返回示例
{
    "code": 200,
    "message": "success",
    "data": [
        {
            "id": "1001",
            "name": "腾讯视频VIP会员月卡",
            "price": "15.00",
            "category": "video",
            "stock": 99999,
            "status": 1
        }
    ]
}

下单接口

POST /api/order/create
请求参数
参数名 必填 类型 说明
appid string 分配的应用ID
product_id string 商品ID
mobile string 接收手机号
quantity int 购买数量
out_trade_no string 商户订单号
notify_url string 回调通知地址
timestamp int 当前时间戳
sign string 签名值
返回示例
{
    "code": 200,
    "message": "success",
    "data": {
        "order_id": "AM2024010100001",
        "out_trade_no": "您的订单号",
        "product_name": "腾讯视频VIP月卡",
        "price": "15.00",
        "status": "success",
        "cards": [
            {"card_no": "AMXXXXXXXX", "card_pwd": "XXXXXXXX"}
        ]
    }
}

回调通知

通知说明

当订单状态发生变化时,系统会向您设置的notify_url发送POST回调通知。

回调参数
参数名 类型 说明
order_id string 平台订单号
out_trade_no string 商户订单号
status string 订单状态:success/fail
cards array 卡密列表
timestamp int 通知时间戳
sign string 签名值,用于验证
返回要求

处理成功后请输出字符串:success,否则系统会尝试多次重发

错误码说明

错误码 状态 说明
200 成功 请求成功
400 参数错误 请求参数不完整或格式错误
401 签名错误 签名验证失败,请检查签名算法
402 余额不足 账户余额不足,请充值
403 IP受限 请求IP不在白名单中
404 商品不存在 商品ID错误或已下架
405 库存不足 商品库存不足
500 系统错误 服务器内部错误,请稍后重试

申请接入

91卡券(阿奇索)API接入文档

前往开放平台
91卡券是阿奇索旗下的专业卡券供货平台,本文档详细说明如何对接其API接口
接入流程
步骤 操作 链接入口
1 开发者登录91卡券开放平台,创建应用申请AppId 应用列表
2 在应用管理中获取AppSecret,配置推送URL和回调URL 应用管理
3 商家在授权页面输入AppId进行授权,获取AccessToken 商家授权
4 使用Token + AppSecret签名,调用各API接口 API网关地址
基础信息
说明
网关地址 https://gw-api.agiso.com/acpr/
API网关 https://gw-api.agiso.com/
授权入口 https://mai.91kami.com/#/open/authorize
字符编码 UTF-8
请求方式 HTTP POST
响应格式 JSON
签名算法 MD5
调用频率 20次/秒
Header设置

调用任何API都必须把以下参数添加到HTTP头部:

Authorization: Bearer {AccessToken}
ApiVersion: 1
Content-Type: application/x-www-form-urlencoded
公共请求参数
参数名 必选 类型 说明
timestamp int 当前时间戳(秒级),误差不超过10分钟
sign string API输入参数签名结果
签名算法详解
  1. 将所有API请求参数(包括公共参数,除sign和byte[]类型外)按参数名称ASCII码排序
  2. 将排序好的参数名和参数值依次拼接在一起
  3. 在拼装字符串的前后都加上AppSecret
  4. 对最终字符串使用MD5算法进行32位小写摘要
// 示例参数
const params = {
    pageNo: "1",
    pageSize: "20",
    timestamp: 1468476350
};

// 1. 按键名ASCII排序
// 排序后顺序: pageNo, pageSize, timestamp
// 拼接后: pageNo1pageSize20timestamp1468476350

// 2. 前后加上AppSecret
const signString = AppSecret + "pageNo1pageSize20timestamp1468476350" + AppSecret;

// 3. MD5签名
const sign = md5(signString).toLowerCase();
// 结果示例: 935671331572ebf7f419ebb55ea28558
JavaScript签名实现
function generate91KamiSign(params, appSecret) {
    // 1. 按参数名称ASCII排序
    const keys = Object.keys(params).sort();
    
    // 2. 拼接参数名和参数值
    let query = appSecret;
    for (const key of keys) {
        if (key !== 'sign' && params[key] !== '') {
            query += key + params[key];
        }
    }
    query += appSecret;
    
    // 3. MD5加密(使用blueimp-md5库)
    return md5(query).toLowerCase();
}

// 使用示例
const params = {
    pageNo: "1",
    pageSize: "20",
    timestamp: Math.floor(Date.now() / 1000)
};
const sign = generate91KamiSign(params, "你的AppSecret");
PHP签名实现
function generate91KamiSign($params, $appSecret) {
    ksort($params);
    $query = $appSecret;
    foreach ($params as $key => $value) {
        if ($key != 'sign' && $value !== '') {
            $query .= $key . $value;
        }
    }
    $query .= $appSecret;
    return md5($query);
}
常用接口列表
接口方法 说明
Trade/LogisticsDummySend 更新订单发货状态(虚拟发货)
Trade/FullinfoGet 获取单个订单详情
Trade/SoldGet 获取卖出的交易订单列表
Item/StockGet 查询商品库存
Item/CardListGet 获取卡密列表
Item/CardAdd 添加卡密
完整调用示例
// JavaScript调用示例
async function call91KamiApi(apiMethod, bizParams, accessToken, appSecret) {
    const url = `https://gw-api.agiso.com/acpr/${apiMethod}`;
    
    const params = {
        ...bizParams,
        timestamp: Math.floor(Date.now() / 1000)
    };
    
    params.sign = generate91KamiSign(params, appSecret);
    
    const formData = new URLSearchParams();
    for (const key in params) {
        formData.append(key, params[key]);
    }
    
    const response = await fetch(url, {
        method: 'POST',
        headers: {
            'Authorization': 'Bearer ' + accessToken,
            'ApiVersion': '1',
            'Content-Type': 'application/x-www-form-urlencoded'
        },
        body: formData
    });
    
    return await response.json();
}

// 调用示例
const result = await call91KamiApi(
    'Trade/SoldGet',
    { pageNo: '1', pageSize: '20' },
    '你的AccessToken',
    '你的AppSecret'
);