西瓜猪开放平台
    西瓜猪开放平台
    • API接入说明
    • API更新日志(2025.05.07)
    • 综合CPS推广(订单接口、外卖 打车 电影等)
      • 外卖、快递、电影、点餐等活动对接说明
      • 点餐插件/半屏小程序对接方式
      • 获取CPS活动列表
        POST
      • 获取平台全部订单列表
        POST
      • CPS活动转链 (新)
        POST
      • CPS活动转链(禁止使用 后期随时下架)
        POST
    • 淘宝
      • 淘宝API接口说明文档
      • 淘宝商品转链
        POST
      • 淘宝会场转链
        POST
      • 淘宝商品详情
        POST
      • 淘宝搜索
        POST
      • 淘宝榜单API
        POST
      • 淘宝商品列表
        POST
    • 京东
      • 京东API说明文档
      • 京东API更新记录-20250507
      • 京东超级搜索
        POST
      • 京东商品详情
        POST
      • 京东商品转链
        POST
      • 京东榜单
        POST
      • 京粉商品查询-支持活动品频道
        POST
    • 拼多多
      • V3高佣账号专区
        • 拼多多会场转链(官方高佣V3账号)
        • 生成营销工具推广链接(官方高佣账号)
        • 多多进宝商品转链(官方高佣账号)
      • 拼多多转链
        POST
      • 检测sid是否授权(使用V3的不用检测)
        POST
      • 拼多多搜索
        POST
      • 拼多多详情
        POST
      • 拼多多榜单(实时热榜)
        POST
    • 唯品会
      • 唯品会搜索
      • 唯品会转链
      • 唯品会商品详情
    • 快手
      • 快手CPS API对接说明
    • 增值接口
      • 淘宝单品推广快站链接
      • 单页推广链接生成
      • 粘贴板识别(支持数字ID)
      • cms推广链接生成
    • 其他接口
      • 万能转链(返回商品信息+原文转链)
      • 批量转链(原文按输出,不返回商品信息,抖音不支持原文案输出)
    • 点餐接口(肯德基星巴克等)
      • 肯德基、星巴克、麦当劳等
    • 聚合霸王餐API(推荐使用)
      • 对接必看
    • 免费旅游卡接口
      • 免费旅游卡API对接说明
      • 更新记录(2025.03.11)
    • CPA拉新接口
      • CPA拉新接口对接说明
      • 更新记录(2025.05.07)
    • 美团外卖到家/到店团购
      • 美团到家/到店对接说明
      • 获取外卖到家/到店商品数据
      • 获取美团外卖到家/到店推广链接
    • 中免日上
      • 中免日上API对接说明
    • 闲鱼返利API
      • 对接说明
      • 闲鱼API更新日志(2025.05.17)
    • 旧衣/图书上门回收API
      • API对接说明

    API接入说明

    前置说明:** **#

    目前西瓜猪开放平台所有接口均免费开放使用,后续点餐类接口可能会收费(如卡券、点餐类),平台内所有的佣金均是以原始佣金展示,结算时仅扣除10%技术服务费作为平台运营成本。
    个人资质:结算时,个人资质会代扣5%的发票成本
    企业资质:结算时,企业不扣除5%的发票成本,但需要开发票才可以提现。
    请您根据自己的实际场景,认证身份。
    为了防止电信诈骗,恶意调用等,如果您的账号连续3周内无任何订单,将会关闭API权限,关闭后需要联系客服免费开通。

    1.如何申请#

    需要申请西瓜猪开放平台的app_key和app_secret作为调用接口的凭据和身份的唯一标识。前往获取app_key和app_secret

    2.如何验签#

    西瓜猪开放平台目前部分接口需要验签,您也可以全系验签。
    开放平台(TOP)的API是基于HTTP协议来调用的,开发者(ISV)可以直接使用TOP提供的官方SDK(支持多种语言,包含了请求的封装,签名加密,响应解释,性能优化等;下载SDK请前往当前页面底部)来调用,也可以根据TOP的协议来封装HTTP请求进行调用。

    公共参数#

    参数名字参数类型是否必传参数描述
    appKeyString是appKey放在请求头里
    timeStampString是放在所请求接口的body里 秒级时间戳
    signString是放在所请求接口的body里

    签名算法#

    请求参数:(sign不参与签名)
    {
      "goodsType": "3",
      "lat": "31.82057",
      "lon": "117.22901",
      "pagePvId": "1",
      "searchWord": "烧烤",
      "sign": "fae0b27c451c728867a567e8c1bb4e53",
      "sortType": "0",
      "telephone": "15555555555",
      "timeStamp": 1713590904
    }
    1.
    所有请求业务参数按照字母先后顺序排列(包含timeStamp,sign不参与签名)
    例如:将pagePvId,goodsType,telephone,sortType,lat,lon,timeStamp,searchWord 排序为 goodsType,lat,lon,pagePvId,searchWord,sortType,telephone,timeStamp
    2.
    把所有参数名和参数值进行拼接
    goodsType3lat31.82057lon117.22901pagePvId1searchWord烧烤sortType0telephone15555555555timeStamp1713590904
    3.
    把app_secret加在字符串的最前面和最后面(假如app_secret是88888)
    88888goodsType3lat31.82057lon117.22901pagePvId1searchWord烧烤sortType0telephone15555555555timeStamp171359090488888
    4.
    进行md5(小写)加密后的到签名
    PHP签名示例:
    public function sign_create($data, $secret = '')
    {
        ksort($data);
        $stringToBeSigned = '';
        foreach ($data as $k => $v) {
            if($v === "" || $v === null) continue;
            if (!is_array($v) && "@" != substr($v, 0, 1)) {
                if(is_bool($v)){
                    $stringToBeSigned .= "$k" . ($v==true ? "true":"false");
                }else{
                    $stringToBeSigned .= "$k$v";
                }
    
            }
        }
        return strtolower(md5($secret.$stringToBeSigned . $secret));
    }
    在Java中,你可以使用Hutool工具库来方便地处理HTTP请求和字符串操作,包括生成MD5签名。以下是一个基于你提供的验签规则的Java请求接口实例:
    首先,确保你的项目中已经引入了Hutool的依赖。如果还没有,你可以通过Maven或Gradle添加它。
    Maven依赖:
            <!--hutool工具-->
            <dependency>
                <groupId>cn.hutool</groupId>
                <artifactId>hutool-all</artifactId>
                <version>5.3.2</version>
            </dependency>
    然后,你可以编写一个方法来生成签名并发送请求:
    import cn.hutool.crypto.digest.DigestUtil;  
    import cn.hutool.http.HttpRequest;  
    import cn.hutool.json.JSONObject;  
    import cn.hutool.json.JSONUtil;  
      
    import java.util.LinkedHashMap;  
    import java.util.Map;  
      
    public class XiGuaZhuApiCaller {  
      
        private static final String APP_KEY = "你的appKey";  
        private static final String APP_SECRET = "你的appSecret";  
        private static final String API_URL = "你的API接口URL";  
      
        public static void main(String[] args) {  
            // 准备业务参数  
            Map<String, Object> params = new LinkedHashMap<>();  
            params.put("goodsType", "3");  
            params.put("lat", "31.82057");  
            params.put("lon", "117.22901");  
            params.put("pagePvId", "1");  
            params.put("searchWord", "烧烤");  
            params.put("sortType", "0");  
            params.put("telephone", "15555555555");  
            params.put("timeStamp", System.currentTimeMillis() / 1000); // 使用当前时间戳(秒为单位)  
      
            // 生成签名  
            String sign = generateSign(params, APP_SECRET);  
      
            // 合并签名到请求参数中  
            params.put("sign", sign);  
      
            // 发送请求  
            String response = callApi(params);  
      
            // 处理响应  
            System.out.println(response);  
        }  
      
        /**  
         * 生成签名  
         *  
         * @param params   请求参数  
         * @param appSecret 应用密钥  
         * @return 签名  
         */  
        private static String generateSign(Map<String, Object> params, String appSecret) {  
            // 1. 移除sign参数(如果存在)  
            params.remove("sign");  
      
            // 2. 将Map转换为List<Map.Entry<String, Object>>  
            List<Map.Entry<String, Object>> list = new ArrayList<>(params.entrySet());  
      
            // 3. 按照参数名进行排序  
            Collections.sort(list, new Comparator<Map.Entry<String, Object>>() {  
                @Override  
                public int compare(Map.Entry<String, Object> o1, Map.Entry<String, Object> o2) {  
                    return o1.getKey().compareTo(o2.getKey());  
                }  
            });  
      
            // 4. 拼接参数名和参数值  
            StringBuilder sb = new StringBuilder();  
            for (Map.Entry<String, Object> entry : list) {  
                sb.append(entry.getKey()).append(entry.getValue());  
            }  
      
            // 5. 添加app_secret  
            sb.insert(0, appSecret).append(appSecret);  
      
            // 6. MD5加密(小写)  
            return DigestUtil.md5Hex(sb.toString());  
        }  
      
        /**  
         * 调用API接口  
         *  
         * @param params 请求参数  
         * @return 响应内容  
         */  
        private static String callApi(Map<String, Object> params) {  
            // 转换为JSON字符串  
            String jsonBody = JSONUtil.toJsonStr(params);  
      
            // 发送POST请求  
            return HttpRequest.post(API_URL)  
                    .header("appKey", APP_KEY) // 设置请求头  
                    .body(jsonBody) // 设置请求体  
                    .execute()  
                    .body(); // 获取响应体  
        }  
    }
    请注意,你需要将APP_KEY、APP_SECRET和API_URL替换为你自己的实际值。
    此外,如果API需要特定的HTTP头或请求方法(如GET、PUT等),你需要相应地修改callApi方法中的HttpRequest调用。

    状态码说明#

    code等于0,请求成功;
    code等于1,请求失败;
    code等于99999,全局异常
    code等于401 ,无权限调用,具体看msg
    下一页
    API更新日志(2025.05.07)
    Built with