立即注册

接入教程

1.1 API调用指南

1.1.1 前言

数环通开放平台的API是基于HTTP协议来调用的。

1.1.2 调用流程

组装参数 > 生成签名 > 拼装HTTP请求 > 发起HTTP请求 > 获得HTTP响应 > 解析json结果

1.1.3 调用地址

数环通开放平台目前只提供正式环境给开发者,API调用地址为如下,请访问时拼接对应方法URL:

https://api.solinkup.com/openapi

1.1.4  调用方式

POST方式

1.1.5 公共参数

调用任何一个API都必须传入的参数,目前支持的公共参数有:

参数名称

参数类型

是否必须

示例值

参数描述

method

string

getAccessToken

调用的API接口名称

appKey

string

AppKey@AAC3CEDBA71B4CC6AEAB1DDADD6A6D8F

应用创建完成后被分配的key

accessToken

string

AccessToken@3a859c26d23348dc9844acac0a533697

用于调用 API 的 accessToken

timestamp

long

1651218530319

时间戳,格式为ms,和服务器时间相差超过5分钟会报错

version

string

1

API协议版本,当前版本为1

sign

string

签名算法参照下面的介绍

输入参数签名结果

signMethod

String

hmac-sha256

签名算法类型

1. hmac-sha256,采用hmac_sha_256算法签名(推荐);

2. md5,采用md5算法签名。

  • method、appKey、accessToken、timestamp、version、signMethod采用body方式传递。

  • sign采用 header方式传递。

1.1.6 业务参数

API调用除了必须包含公共参数外,如果API本身有业务级的参数也必须传入。
每个API的业务参数请参考 数环通开放API文档

1.1.7 签名算法

为了防止API调用过程中被黑客恶意篡改,调用任何一个API都需要携带签名;服务端会根据请求参数,对签名进行验证,签名不合法的请求将会被拒绝。
目前支持的签名算法为hmac-sha256(推荐)、md5两种。

下面以PHP为例,详细解析一下签名算法:
STEP1:序列化参数
将参数序列化成JSON格式,并满足下面几个要求:

  • 保证JSON所有层级上Key的有序性

// 序列化前的对象 
$a1 = array( 
    "c" => 3, 
    "b" => 2, 
    "a" => array( 
       "c" => 3, 
       "b" => 2, 
       "a" => 1, 
    ), 
); 
// 序列化后的结果 
// {"a":{"a":1,"b":2,"c":3},"b":2,"c":3}
  • 保证JSON的所有数值不带多余的小数点

// 序列化前的对象
$a2 = array(
    "a" => 1.0,
);
// 序列化后的结果
// {"a":1}
  • 禁用Html Escape,保证转义逻辑与示例代码一致

$a3 = array(
    'a' => "&<>='/ô汉��",// 附加符号、中日韩、Emoji都不转义
);
// 序列化后的结果
// {"a":"&<>='/ô汉��"}

STEP2:计算签名

  • 拼接请求参数

accessToken、appKey、method、timestamp、version这个顺序,把以上参数的键值对依次拼接在一起

$paramPattern = 'accessToken'.$accessToken.'appKey'.$appKey.'method'.$method.'timestamp'.$timestamp.'v'.$v; 
// 拼接后的格式差不多是这样: 
// accessToken***appKey***method***timestamp***version*
  • 在上一步基础上,在头尾拼接app_secret

$signPattern = $appSecret.$paramPattern.$appSecret; 
// 拼接后的格式差不多是这样: 
$signPattern = AppSecret@88f78c12b63148ae8c7d71d0c8c3e518accessTokenAccessToken@3a859c26d23348dc9844acac0a533697appKeyAppKey@4FF354C41EBF4187BA148E00E3EFED69methodloginByOpenIdsignMethodmd5timestamp1651218530319v1AppSecret@88f78c12b63148ae8c7d71d0c8c3e518
  • 使用hmac-sha256算法,计算签名串

$sign = hash_hmac("sha256", $signPattern);

STEP3:将签名放置到http请求头中

 

1.1.8 签名算法代码示例

package com.shuhuan.ipaas.gateway.entity.oauth;

import com.shuhuan.ipaas.core.encryption.Md5Util;
import org.apache.commons.lang3.StringUtils;
import org.springframework.util.Assert;

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Base64;
import java.util.Map;
import java.util.Objects;
import java.util.TreeMap;

/**
 * @Description: 开放平台加签代码demo
 * @Author gaofeng
 * @Date 8/18/22 5:26 PM
 **/
public class OpenSignDemo {

    private static String appKey = "appKey";
    private static String openId = "openId";
    private static String method = "method";
    private static String version = "version";
    private static String timestamp = "timestamp";
    private static String accessToken = "accessToken";
    private static String redirectUrl = "redirectUrl";
    private static String authCode = "authCode";
    private static String signMethod = "signMethod";
    private static String appSecret = "appSecret";

    public static void main(String[] args) {
        Map<String, Object> params = buildInput();
        String sign = getSign(params);
    }


    public static Map<String, Object> buildInput() {
        Map<String, Object> result = new TreeMap<>();
        if (StringUtils.isNotEmpty(appKey)) {
            result.put("appKey", appKey);
        }
        if (StringUtils.isNotEmpty(openId)) {
            result.put("openId", openId);
        }
        if (StringUtils.isNotEmpty(method)) {
            result.put("method", method);
        }
        if (StringUtils.isNotEmpty(version)) {
            result.put("version", version);
        }
        if (Objects.nonNull(timestamp)) {
            result.put("timestamp", timestamp);
        }
        if (StringUtils.isNotEmpty(accessToken)) {
            result.put("accessToken", accessToken);
        }
        if (StringUtils.isNotEmpty(redirectUrl)) {
            result.put("redirectUrl", redirectUrl);
        }
        if (StringUtils.isNotEmpty(authCode)) {
            result.put("authCode", authCode);
        }
        if (StringUtils.isNotEmpty(signMethod)) {
            result.put("signMethod", signMethod);
        }
        return result;
    }


    /**
     * 验签
     *
     * @param inputParams
     */
    public static String getSign(Map<String, Object> inputParams) {
        String calculateSign = null;
        String signPattern = null;
        StringBuffer paramJoin = new StringBuffer();
        inputParams.forEach((key, value) -> paramJoin.append(key).append(value));
        signPattern = appSecret + paramJoin.toString() + appSecret;
        calculateSign = calculateSign(signMethod, signPattern);
        return calculateSign;
    }

    public static String calculateSign(String signMethod, String origin){
        switch (signMethod){
            case "MD5":return encryptMd5(origin);
            case "base64":return Base64.getEncoder().encodeToString(origin.getBytes());
            case "sha256":return SHA(origin, "SHA-256");
            default:return Md5Util.encryptMd5(origin);
        }
    }

    /**
     * MD5加密
     * @param sourceStr
     * @return
     */
    public static String encryptMd5(String sourceStr) {
        // 用于加密的字符
        String result = "";
        try {
            MessageDigest md = MessageDigest.getInstance("MD5");
            md.update(sourceStr.getBytes());
            byte b[] = md.digest();
            int i;
            StringBuffer buf = new StringBuffer("");
            for (int offset = 0; offset < b.length; offset++) {
                i = b[offset];
                if (i < 0) {
                    i += 256;
                }
                if (i < 16) {
                    buf.append("0");
                }
                buf.append(Integer.toHexString(i));
            }
            result = buf.toString();
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        }
        return result;
    }

    /**
     * 字符串 SHA 加密
     *
     * @param strText
     * @return
     */
    private static String SHA(final String strText, final String strType) {
        // 返回值
        String strResult = null;

        // 是否是有效字符串
        if (strText != null && strText.length() > 0) {
            try {
                // SHA 加密开始
                // 创建加密对象 并傳入加密類型
                MessageDigest messageDigest = MessageDigest.getInstance(strType);
                // 传入要加密的字符串
                messageDigest.update(strText.getBytes());
                // 得到 byte 類型结果
                byte byteBuffer[] = messageDigest.digest();

                // 將 byte 轉換爲 string
                StringBuffer strHexString = new StringBuffer();
                // 遍歷 byte buffer
                for (int i = 0; i < byteBuffer.length; i++) {
                    String hex = Integer.toHexString(0xff & byteBuffer[i]);
                    if (hex.length() == 1) {
                        strHexString.append('0');
                    }
                    strHexString.append(hex);
                }
                // 得到返回結果
                strResult = strHexString.toString();
            } catch (NoSuchAlgorithmException e) {
                e.printStackTrace();
            }
        }

        return strResult;
    }

}

 

1.2 API文档

1.2.1 授权API

获取accessToken:

{{gateway}}/openapi/oauth2/getAccessToken

请求示例

{
    "appKey": "AppKey@0A03EDEB29654A9CAE2A7D9F1A8F487E",
    "method": "getAccessToken",
    "timestamp": "1652413038144",
    "authCode": "AuthCode@4c28f9e17178416f8cc918539fc1975b",
    "version": "1"
}

响应示例

{
    "requestId": "d20e2ef1-a9dc-4607-92fa-8f0b0c5a5270",
    "success": true,
    "code": "__200OK",
    "msgCode": "result.success",
    "message": "执行成功",
    "data": {
        "openId": "OpenId@128D573F0EB6405EAF334A731E31BFF3",
        "accessToken": "AccessToken@3299a7f3e52649f3bd51bd9d0d7f63c5",
        "refreshToken": "RefreshToken@BEEC8358E6544FEDA7FB4197ADE3D920",
        "accessTokenExpired": 1653018049464,
        "refreshTokenExpired": 1652428181000
    },
    "pager": null
}

刷新AccessToken

{{gateway}}/openapi/oauth2/refreshAccessToken

请求示例

{
    "appKey":"shuhuan",
    "method":"refreshAccessToken",
    "timestamp":"1652176558967",
    "refreshToken":"RefreshToken@BEEC8358E6544FEDA7FB4197ADE3D920",
    "version":"1"
}

响应示例

{
    "requestId": "d20e2ef1-a9dc-4607-92fa-8f0b0c5a5270",
    "success": true,
    "code": "__200OK",
    "msgCode": "result.success",
    "message": "执行成功",
    "data": {
        "openId": "OpenId@128D573F0EB6405EAF334A731E31BFF3",
        "accessToken": "AccessToken@3299a7f3e52649f3bd51bd9d0d7f63c5",
        "refreshToken": "RefreshToken@BEEC8358E6544FEDA7FB4197ADE3D920",
        "accessTokenExpired": 1653018049464,
        "refreshTokenExpired": 1652428181000
    },
    "pager": null
}

1.2.2 模板API

获取模板列表

{{gateway}}/openapi/oauth2/${appKey}/template/list

请求示例

{{gateway}}/openapi/oauth2/AppKey@4FF354C41EBF4187BA148E00E3EFED69/template/list

响应示例

{
    "requestId": "02bb4640-4258-456c-a205-b25e294b03fd",
    "success": true,
    "code": "__200OK",
    "msgCode": "result.success",
    "message": "执行成功",
    "data": [
        {
            "templateId": "76f28c004b4811ec9fa40242ac120009",
            "name": "【矩易】抖店功能包",
            "description": "将矩易线上线下打通",
            "unAuthorized": [],
            "templates": null
        }
    ],
    "pager": null
}

 

  

根据父模板ID删除流程

{{gateway}}/openapi/oauth2/deleteFlowByParentTemplateId

请求事例

{
  "openId":"OpenId@128D573F0EB6405EAF334A731E31BFF3",
  "parentTemplateId":"ParentTemplateId_C76E9CC62467428B827A0360588DDB7C",
  "appKey":"AppKey@AAC3CEDBA71B4CC6AEAB1DDADD6A6D8F",
  "timestamp":"1657260731000",
  "version":"1"
}

响应结果

{
    "requestId": "5df490ea-86db-4455-a0ed-02562adb0c29",
    "success": true,
    "code": "200",
    "msgCode": "result.success",
    "message": "操作成功",
    "data": null,
    "pager": null
}

1.2.3 抖店API

获取抖店授权详情

https://api.solinkup.com/trigger/api/jinritemai/getAuthInfo/{openId}

method:getAuthInfo

请求示例

https://api.solinkup.com/trigger/api/jinritemai/getAuthInfo/OpenId_37127491

响应示例

{
    "requestId": "02bb4640-4258-456c-a205-b25e294b03fd",
    "success": true,
    "code": "__200OK",
    "msgCode": "result.success",
    "message": "执行成功",
    "data": [
        {
          "expire_time":"2020-12-30 00:00:00", 
          "rights_type":1, 
          "spec_type":0, 
          "spec_val":"至尊版" 
          "shop_id":124124124
        }
    ],
    "pager": null
}

获取抖店订单列表

https://api.solinkup.com/trigger/api/jinritemai/listOrder/{openId}

method:listOrder

输入

名称

类型

是否必须

备注

orderType

Integer

非必须

【订单类型】 0、普通订单 2、虚拟商品订单 4、电子券(poi核销) 5、三方核销

tradeType

Integer

非必须

【交易类型】 0、普通 1、拼团 2、定金预售 3、订金找贷 4、拍卖 5、0元单 6、回收 7、寄卖 10、样品

orderStatus

Integer

非必须

订单状态

createTimeStart

Long

必须

下单开始时间,秒级时间戳;最大支持查询最近90天内的数据

createTimeEnd

Long

必须

下单结束时间,秒级时间戳;最大支持查询最近90天内的数据

page

Integer

非必须

页码,0页开始;size* page最大不能超过5万条。超过5万条请使用创建时间或更新事情分割。

size

Integer

非必须

单页大小,限制100以内。

示例:

{
    "cipher_infos": [
        {
            "auth_id": "4915439432903042609",
            "cipher_text": "$+u8xXdX3gjEOMuebueEscdYqAAM9hOxFjucgAgydcvA=$BaNos2xvXNljXSMeQZEZlJ3tJI4oM9JPg6dIqC03Niq9Bn9bIVVUKZZpzR7wWB2DT58wAjL3UUM7Anm9Wc2FGSVG1/6anbGAQXR4lkAbkuXrZg==*CgkIARCtHCABKAESPgo8xOiuiDmw3oesarVkYjaiai4GrWDXuWEcAap69zj/Bc3CRQ6P7rx+trUfdcYOfI7LKz2LSb3crWpnb1oPGgA=$1$$"
        },
        {
            "auth_id": "4915439432903042609",
            "cipher_text": "$+u8xXdX3gjEOMuebueEscdYqAAM9hOxFjucgAgydcvA=$BaNos2xvXNljXSMeQZEZlJ3tJI4oM9JPg6dIqC03Niq9Bn9bIVVUKZZpzR7wWB2DT58wAjL3UUM7Anm9Wc2FGSVG1/6anbGAQXR4lkAbkuXrZg==*CgkIARCtHCABKAESPgo8xOiuiDmw3oesarVkYjaiai4GrWDXuWEcAap69zj/Bc3CRQ6P7rx+trUfdcYOfI7LKz2LSb3crWpnb1oPGgA=$1$$"
        }
    ]
}

输出

名称

类型

示例值

备注

page

Integer

0

页数,从0开始

size

Integer

50

单页大小

total

Integer

100

总订单数

shop_order_list

number

0

订单信息

示例

{"data":{"page":"0","shop_order_list":[{"app_id":"43545454556","appointment_ship_time":"1617355413","b_type":"1","b_type_desc":"抖音","biz":"1","biz_desc":"鲁班","buyer_words":"要xxx","cancel_reason":"不想要","channel_payment_no":"PAY234532534534","create_time":"1617355413","d_car_shop_biz_data":{"coupon_right":[{"quota":"1","right_name":"现金抵扣","right_type":"1"}],"poi_addr":"中关村XXX","poi_adname":"金城江区","poi_city_name":"河池市","poi_id":"22535659043973690","poi_name":"XXXX门店","poi_pname":"广西壮族自治区","poi_tel":"12345678901"},"doudian_open_id":"#zuLyd4U4J3p+czzXkwg+ZQ673h7KTcrKOddb5iPGAAE0K3MYJmgXEXof9LDtoScAfMKvdVRqpAL4CEI3SrLwYATIzTF9Qw==","encrypt_post_receiver":"张三","encrypt_post_tel":"12345678911","exp_ship_time":"1617355413","finish_time":"1617355413","logistics_info":[{"company":"shunfeng","company_name":"顺丰","delivery_id":"shunfeng_3617355413","product_info":[{"outer_sku_id":"sdfa","price":"1000","product_count":"2","product_id":"3473196049974326153","product_id_str":"3473196049974326153","product_name":"苹果","sku_id":"3254535","sku_order_id":"4781320682406083640","sku_specs":[{"name":"颜色","value":"蓝"}]}],"ship_time":"1617355413","tracking_no":"3617355413"}],"main_status":"103","main_status_desc":"部分支付","modify_amount":"-10","modify_post_amount":"-1","open_id":"23431434","order_amount":"600","order_expire_time":"1800","order_id":"4781320682406083640","order_level":"2","order_phase_list":[{"campaign_id":"3214324342342","channel_payment_no":"PAY34243247134325","current_phase":"1","current_phase_status_desc":"已开始但未支付","pay_success":"true","phase_close_time":"1617355413","phase_open_time":"1617355413","phase_order_amount":"100","phase_order_id":"4781320682406083640","phase_pay_amount":"100","phase_pay_time":"1617355413","phase_pay_type":"1","phase_payable_price":"100","phase_post_amount":"100","phase_promotion_amount":"100","phase_sum_amount":"100","sku_order_id":"4781320682406083640","sku_price":"100","total_phase":"2"}],"order_status":"3","order_status_desc":"待支付","order_type":"0","order_type_desc":"普通订单","pay_amount":"500","pay_time":"1617355413","pay_type":"1","platform_cost_amount":"100","post_addr":{"city":{"id":"110000","name":"市辖区"},"encrypt_detail":"丹棱街1号","province":{"id":"110000","name":"北京市"},"street":{"id":"110000","name":"中关村街道"},"town":{"id":"110000","name":"海淀区"}},"post_amount":"10","post_insurance_amount":"10","post_origin_amount":"100","post_promotion_amount":"100","promotion_amount":"1000","promotion_pay_amount":"10","promotion_platform_amount":"100","promotion_redpack_amount":"100","promotion_redpack_platform_amount":"100","promotion_redpack_talent_amount":"100","promotion_shop_amount":"100","promotion_talent_amount":"100","seller_remark_stars":"1","seller_words":"注意XX","serial_number_list":"[\"546443524543534\",\"646443524543534\"]","ship_time":"1617355413","shop_cost_amount":"100","shop_id":"77977","shop_name":"刘好好严选","shop_order_tag_ui":[{"help_doc":"http://","key":"sug_home_deliver","text":"建议音尊达"}],"sku_order_list":[{"account_list":{"account_info":[{"account_name":"测试","account_type":"1","encrypt_account_id":"15678909876"}]},"ad_env_type":"live","after_sale_info":{"after_sale_status":"6","after_sale_type":"1","refund_status":"1"},"app_id":"43545454556","appointment_ship_time":"1617355413","author_id":"324234453","author_name":"XXXX","b_type":"1","b_type_desc":"抖音","biz":"1","biz_desc":"鲁班","bundle_sku_info":[{"code":"M8-1234-101","item_num":"1","picture_url":"https://lf3-cm.ecombdstatic.com/obj/temai/df9426c9e41521588fe0ffbf424b6b72c559ad47www800-800","product_id":"3520562294461467753","product_name":"测试非卖品创建商品","sku_id":"1719024557525047"}],"c_biz":"1","c_biz_desc":"精选联盟","cancel_reason":"不想要","card_voucher":{"valid_days":"15","valid_end":"1646063999","valid_start":"1646063000"},"channel_payment_no":"PAY234532534534","cid":"43545454556","code":"djfafj","confirm_receipt_time":"1617355413","content_id":"43545454556","create_time":"1617355413","encrypt_post_receiver":"张三","encrypt_post_tel":"12345678911","exp_ship_time":"1617355413","finish_time":"1617355413","first_cid":"20005","fourth_cid":"20174","given_product_type":"FREE","goods_type":"1","has_tax":"true","inventory_list":[{"count":"2","inventory_type":"1","inventory_type_desc":"普通库存","out_warehouse_id":"3254234234234","warehouse_id":"3141234234324"}],"inventory_type":"2","inventory_type_desc":"普通库存","is_comment":"1","item_num":"2","logistics_receipt_time":"1617355413","main_status":"103","main_status_desc":"部分支付","master_sku_order_id":"1","modify_amount":"-10","modify_post_amount":"-1","need_serial_number":"false","order_amount":"600","order_expire_time":"1800","order_id":"4781320682406083640","order_level":"3","order_status":"3","order_status_desc":"待支付","order_type":"0","order_type_desc":"普通订单","origin_amount":"100","origin_id":"43545454556","out_product_id":"432655662343","out_sku_id":"43564553","out_warehouse_ids":"[\"49574835439\",\"954764056\"]","page_id":"43545454556","parent_order_id":"4781320682406083640","pay_amount":"500","pay_time":"1617355413","pay_type":"1","platform_cost_amount":"100","post_addr":{"city":{"id":"110000","name":"市辖区"},"encrypt_detail":"丹棱街1号","province":{"id":"110000","name":"北京市"},"street":{"id":"110000","name":"中关村街道"},"town":{"id":"110000","name":"海淀区"}},"post_amount":"1","post_insurance_amount":"10","pre_sale_type":"1","product_id":"3473196049974326153","product_id_str":"3473196049974326153","product_name":"衣服","product_pic":"https:xxxxx","promotion_amount":"1000","promotion_pay_amount":"10","promotion_platform_amount":"100","promotion_redpack_amount":"100","promotion_redpack_platform_amount":"100","promotion_redpack_talent_amount":"100","promotion_shop_amount":"100","promotion_talent_amount":"100","receive_type":"1","reduce_stock_type":"1","reduce_stock_type_desc":"下单减库存","room_id":"43545454556","room_id_str":"147319604997432615","second_cid":"20174","send_pay":"1","send_pay_desc":"鲁班广告","ship_time":"1617355413","shop_cost_amount":"100","sku_id":"3254535","sku_order_tag_ui":[{"extra":"{\"key\":\"value\"}","help_doc":"https://school.jinritemai.com/doudian/web/article/101835?from=shop_article","hover_text":"该商品需要送到质检中心,质检完成后发给用户该商品需要送到质检中心,质检完成后发给用户","key":"pre_sale_label","sort":"1","tag_type":"orange","text":"全款预售"}],"source_platform":"XXX","spec":[{"name":"颜色","value":"蓝"}],"sub_b_type":"1","sub_b_type_desc":"小程序","sum_amount":"200","supplier_id":"fsgfgsdg","theme_type":"1","theme_type_desc":"直播间","third_cid":"20174","trade_type":"1","trade_type_desc":"拼团","update_time":"1617355413","video_id":"43545454556","warehouse_ids":"[\"49574835439\",\"954764056\"]"}],"sub_b_type":"1","sub_b_type_desc":"小程序","total_promotion_amount":"100","trade_type":"1","trade_type_desc":"拼团","update_time":"1617355413","user_id_info":{"encrypt_id_card_name":"#zuLyd4U4J3p+czzXkwg+ZQ673h7KTcrKOddb5iPGAAE0K3MYJmgXEXof9LDtoScAfMKvdVRqpAL4CEI3SrLwYATIzTF9Qw==","encrypt_id_card_no":"#zuLyd4U4J3p+czzXkwg+ZQ673h7KTcrKOddb5iPGAAE0K3MYJmgXEXof9LDtoScAfMKvdVRqpAL4CEI3SrLwYATIzTF9Qw=="},"user_tag_ui":[{"key":"user_profile_buy_frequency","text":"服务优先"}]}],"size":"20","total":"1000"},"err_no":0,"message":"success","code":10000,"msg":"success","sub_code":"","sub_msg":""}

获取抖店订单详情

https://api.solinkup.com/trigger/api/jinritemai/detailOrder/{openId}

method:detailOrder

输入

名称

类型

是否必须

备注

orderId

String

必须

订单号

示例:

{
    "orderId": "28711g12831780"
}

输出

名称

类型

示例值

备注

shop_id

Integer

77977

店铺ID

https://op.jinritemai.com/docs/api-docs/15/1343

示例


 

获取抖店订单敏感信息

https://api.solinkup.com/trigger/api/jinritemai/batchDecrypts/{openId}

method:batchDecrypts

输入

名称

类型

是否必须

备注

cipher_infos

list

必须

待解密的密文列表,每次调用不超过50条

  • auth_id

String

必须

业务标识,value为抖音订单号

  • cipher_text

String

必须

密文

示例:

{
    "cipher_infos": [
        {
            "auth_id": "4915439432903042609",
            "cipher_text": "$+u8xXdX3gjEOMuebueEscdYqAAM9hOxFjucgAgydcvA=$BaNos2xvXNljXSMeQZEZlJ3tJI4oM9JPg6dIqC03Niq9Bn9bIVVUKZZpzR7wWB2DT58wAjL3UUM7Anm9Wc2FGSVG1/6anbGAQXR4lkAbkuXrZg==*CgkIARCtHCABKAESPgo8xOiuiDmw3oesarVkYjaiai4GrWDXuWEcAap69zj/Bc3CRQ6P7rx+trUfdcYOfI7LKz2LSb3crWpnb1oPGgA=$1$$"
        },
        {
            "auth_id": "4915439432903042609",
            "cipher_text": "$+u8xXdX3gjEOMuebueEscdYqAAM9hOxFjucgAgydcvA=$BaNos2xvXNljXSMeQZEZlJ3tJI4oM9JPg6dIqC03Niq9Bn9bIVVUKZZpzR7wWB2DT58wAjL3UUM7Anm9Wc2FGSVG1/6anbGAQXR4lkAbkuXrZg==*CgkIARCtHCABKAESPgo8xOiuiDmw3oesarVkYjaiai4GrWDXuWEcAap69zj/Bc3CRQ6P7rx+trUfdcYOfI7LKz2LSb3crWpnb1oPGgA=$1$$"
        }
    ]
}

输出

名称

类型

示例值

备注

decrypt_infos

list

-

解密列表

  • auth_id

String

123

鉴权id

  • decrypt_text

String

密文

密文

  • err_no

number

0

错误码

  • err_msg

String

错误描述

错误描述

  • is_virtual_tel

Bool

false为真实手机号,true为虚拟手机号

手机号描述

示例

{
    "data" : {
      "decrypt_infos": [
          {
              "auth_id": "4915439432903042609",
              "decrypt_text": "",
              "err_msg": "订单已关闭,不允许解密",
              "cipher_text": "$+u8xXdX3gjEOMuebueEscdYqAAM9hOxFjucgAgydcvA=$BaNos2xvXNljXSMeQZEZlJ3tJI4oM9JPg6dIqC03Niq9Bn9bIVVUKZZpzR7wWB2DT58wAjL3UUM7Anm9Wc2FGSVG1/6anbGAQXR4lkAbkuXrZg==*CgkIARCtHCABKAESPgo8xOiuiDmw3oesarVkYjaiai4GrWDXuWEcAap69zj/Bc3CRQ6P7rx+trUfdcYOfI7LKz2LSb3crWpnb1oPGgA=$1$$",
              "is_virtual_tel": false,
              "err_no": 200001
          }
      ]
    }
}

 

1.2.4 巨量千川API

获取广告账户数据

https://api.solinkup.com/trigger/api/juliangqianchuan/getAdvertiser/{openId}

method:getAdvertiser

输入参数

字段

类型

描述

advertiser_id必填

number

千川广告主账户id

start_date必填

string

开始时间,格式 2021-04-05

end_date必填

string

结束时间,格式 2021-04-05,时间跨度不能超过180

fields必填

string[]

需要查询的消耗指标

filtering必填

object

过滤条件

  • marketing_goal必填

string

营销目标,允许值:
ALL:全部
VIDEO_PROM_GOODS:短视频带货
LIVE_PROM_GOODS:直播间带货

  • order_platform

string

下单平台,允许值:
ALL:全部
QIANCHUAN: 千川pc(默认)
ECP_AWEME:小店随心推

  • marketing_scene

string

营销场景,允许值:
ALL:全部
FEED: 通投广告
SEARCH:搜索广告
注意:当下单平台为“小店随心推”时,不支持

  • promotion_way

string

推广方式,允许值:
STANDARD:专业推广
SIMPLE: 极速推广
注意:当下单平台为“小店随心推”时,不支持

  • smart_bid_type

string

投放场景(投放方式),允许值:
SMART_BID_CUSTOM:控成本投放
SMART_BID_CONSERVATIVE: 放量投放
注意:当下单平台为“小店随心推”或营销场景为“搜索广告”时,不支持

  • status

string

按计划状态过滤,不传入即默认返回“全部(包含已删除)”,其他规则详见【附录-广告计划查询状态】(暂不支持“系统暂停”和“在投计划配额超限”)
注意:当下单平台为“小店随心推”时,不支持

  • aweme_ids

number[]

按抖音id过滤,即关联的抖音号

order_field

string

排序字段,允许值参考数据指标,默认不传为stat_cost

order_type

string

排序方式,允许值:
ASC 升序(默认)、DESC 降序

page

number

页码,默认为1

page_size

number

页面大小,默认为10,取值范围:1-500

https://open.oceanengine.com/labels/12/docs/1697466393573376

请求参数示例:

{
    "advertiser_id": ADVERTISER_ID,
    "start_date": "2021-04-10",
    "end_date": "2021-04-21",
    "fields":["stat_cost","show_cnt", "ctr", "cpm_platform", "click_cnt", "pay_order_count", "create_order_amount", "pay_order_roi", "create_order_count", "pay_order_amount", "create_order_roi", "dy_follow"],
    "filtering": {
        "marketing_goal": "ALL"
    }
}

输出参数

字段

类型

描述

code

number

返回码,详见【附录-返回码】

message

string

返回信息,详见【附录-返回码】

request_id

string

请求日志id

data

json

返回数据

  • list

object[]

数据列表

  • advertiser_id

number

广告主id

  • stat_cost

float

消耗

  • show_cnt

number

展示次数

  • ctr

float

点击率

  • cpm_platform

float

平均千次展示费用

  • click_cnt

number

点击次数

  • pay_order_count

number

成交订单数

  • create_order_amount

float

下单成交金额

  • create_order_count

number

下单订单数

  • pay_order_amount

float

成交订单金额

  • create_order_roi

float

下单roi

  • dy_follow

number

新增粉丝数

  • prepay_and_pay_order_roi

float

支付roi

  • prepay_order_count

number

广告预售订单数

  • prepay_order_amount

float

广告预售订单金额

  • total_play

number

播放数

  • play_duration_3s

number

3s播放数

  • play_25_feed_break

number

25%进度播放数

  • play_50_feed_break

number

50%进度播放数

  • play_75_feed_break

number

75%进度播放数

  • play_over

number

播放完成数

  • play_over_rate

float

完播率

  • page_info

object

分页信息

  • page

number

页码

  • page_size

number

页面大小

  • total_number

number

总数

  • total_page

number

总页数

https://open.oceanengine.com/labels/12/docs/1697466393573376

示例

HTTPS/1.1 200 OK
{
    "code": 0,
    "message": "OK",
    "request_id": "202105121550530102121931590100C8D5",
    "data": {
        "list": [
            {
                "cpm_platform": 16.66,
                "advertiser_id": 11111111,
                "pay_order_roi": 16.66,
                "pay_order_count": 5968,
                "click_cnt": 666666,
                "stat_cost": 16.66,
                "create_order_amount": 16.66,
                "show_cnt": 6666,
                "dy_follow": 6069,
                "create_order_count": 6666,
                "ctr": 16.66,
                "create_order_roi": 16.66,
                "pay_order_amount": 16.66
            }
        ],
        "page_info": {
            "page_size": 10,
            "total_page": 1,
            "total_number": 1,
            "page": 1
        }
    }
}

 

获取广告计划数据

https://api.solinkup.com/trigger/api/juliangqianchuan/getReportAd/{openId}

method:getReportAd

输入参数

字段

类型

描述

advertiser_id必填

number

广告主id

start_date必填

string

开始时间,格式 2021-04-05

end_date必填

string

结束时间,格式 2021-04-05,时间跨度不能超过180

fields必填

string[]

需要查询的消耗指标,不同营销目的支持消耗指标不同,具体可参考【应答字段描述】

filtering必填

object

过滤条件

  • ad_ids

number[]

广告计划id列表,最多支持100个

  • marketing_goal必填

string

营销目标,允许值:
VIDEO_PROM_GOODS:短视频带货
LIVE_PROM_GOODS:直播间带货
ALL:不限

  • order_platform

string

下单平台,允许值:
ALL:全部
QIANCHUAN: 千川pc(默认)
ECP_AWEME:小店随心推

  • marketing_scene

string

营销场景,允许值:
ALL:全部
FEED: 通投广告
SEARCH:搜索广告
注意:当下单平台为“小店随心推”时,不支持

  • promotion_way

string

推广方式,允许值:
STANDARD:专业推广
SIMPLE: 极速推广
注意:当下单平台为“小店随心推”时,不支持

  • smart_bid_type

string

投放场景(投放方式),允许值:
SMART_BID_CUSTOM:控成本投放
SMART_BID_CONSERVATIVE: 放量投放
注意:当下单平台为“小店随心推”或营销场景为“搜索广告”时,不支持

  • status

string

按计划状态过滤,不传入即默认返回“全部(包含已删除)”,其他规则详见【附录-广告计划查询状态】(暂不支持“系统暂停”和“在投计划配额超限”)
注意:当下单平台为“小店随心推”时,不支持

order_field

string

排序字段,允许值参考数据指标,默认不传为stat_cost

order_type

string

排序方式,允许值:
ASC 升序(默认)、DESC 降序

page

number

页码,默认为1

page_size

number

页面大小,默认为10,取值范围:1-500

https://open.oceanengine.com/labels/12/docs/1697466415173644

请求参数示例:

{
    "advertiser_id": ADVERTISER_ID,
    "start_date": "2021-04-10",
    "end_date": "2021-04-21",
    "fields":["stat_cost","show_cnt", "ctr", "cpm_platform", "click_cnt", "pay_order_count", "create_order_amount", "pay_order_roi", "create_order_count", "pay_order_amount", "create_order_roi", "dy_follow"],
    "filtering": {
        "marketing_goal": "ALL",
        "ad_ids": [AD_ID1,AD_ID2]
    }
}

输出参数

字段

类型

描述

code

number

返回码,详见【附录-返回码】

message

string

返回信息,详见【附录-返回码】

request_id

string

请求日志id

data

json

返回数据

  • list

object[]

数据列表

  • advertiser_id

number

广告主id

  • ad_id

number

广告计划id

  • stat_cost

float

消耗

  • show_cnt

number

展示次数

  • ctr

float

点击率

  • cpm_platform

float

平均千次展示费用

  • click_cnt

number

点击次数

  • pay_order_count

number

成交订单数

  • create_order_amount

float

下单成交金额

  • create_order_count

number

下单订单数

  • pay_order_amount

float

成交订单金额

  • create_order_roi

float

下单roi

  • prepay_and_pay_order_roi

float

支付roi

  • prepay_order_count

number

广告预售订单数

  • prepay_order_amount

float

广告预售订单金额

  • dy_follow

number

新增粉丝数

  • convert_cnt

number

转化数

  • convert_cost

float

转化成本

  • convert_rate

float

转化率

  • dy_share

number

分享次数。直播间带货:LIVE_PROM_GOODS 不支持该指标

  • dy_comment

number

评论次数。直播间带货:LIVE_PROM_GOODS 不支持该指标

  • dy_like

number

点赞次数。直播间带货:LIVE_PROM_GOODS 不支持该指标

  • live_pay_order_cost_per_order

float

成交客单价。短视频带货:VIDEO_PROM_GOODS 不支持该指标

  • luban_live_enter_cnt

number

直播间观看人次。短视频带货:VIDEO_PROM_GOODS 不支持该指标

  • live_watch_one_minute_count

number

直播间超过1分钟观看人次。短视频带货:VIDEO_PROM_GOODS 不支持该指标

  • live_fans_club_join_cnt

number

直播间新加团人次。短视频带货:VIDEO_PROM_GOODS 不支持该指标

  • luban_live_slidecart_click_cnt

number

直播间查看购物车次数。短视频带货:VIDEO_PROM_GOODS 不支持该指标

  • luban_live_click_product_cnt

number

直播间商品点击次数。短视频带货:VIDEO_PROM_GOODS 不支持该指标

  • luban_live_comment_cnt

number

直播间评论次数。短视频带货:VIDEO_PROM_GOODS 不支持该指标

  • luban_live_share_cnt

number

直播间分享次数。短视频带货:VIDEO_PROM_GOODS 不支持该指标

  • luban_live_gift_cnt

number

直播间打赏次数。短视频带货:VIDEO_PROM_GOODS 不支持该指标

  • luban_live_gift_amount

float

直播间音浪收入。短视频带货:VIDEO_PROM_GOODS 不支持该指标

  • total_play

number

播放数

  • play_duration_3s

number

3s播放数

  • play_25_feed_break

number

25%进度播放数

  • play_50_feed_break

number

50%进度播放数

  • play_75_feed_break

number

75%进度播放数

  • play_over

number

播放完成数

  • play_over_rate

float

完播率

  • page_info

object

分页信息

  • page

number

页码

  • page_size

number

页面大小

  • total_number

number

总数

  • total_page

number

总页数

示例

HTTPS/1.1 200 OK
{
    "code": 0,
    "message": "OK",
    "request_id": "202105121658260102121830214A01E03A",
    "data": {
        "list": [
            {
                "cpm_platform": 16.66,
                "ad_id": 11111111111,
                "advertiser_id": 1111111111111,
                "pay_order_roi": 16.66,
                "pay_order_count": 66,
                "click_cnt": 66,
                "stat_cost": 16.66,
                "create_order_amount":16.66,
                "show_cnt": 66,
                "dy_follow": 66,
                "create_order_count": 66,
                "ctr": 16.66,
                "create_order_roi": 16.66,
                "pay_order_amount": 16.66
            }
        ],
        "page_info": {
            "page_size": 10,
            "total_page": 1,
            "total_number": 1,
            "page": 1
        }
    }
}

 

 

 

 

本篇目录

{{item.innerText}}

{{item.categoryName}}