Shopee商品详情 API|Java示例|返回说明

81 阅读3分钟

在 Shopee 平台上,商品详情 API 是开发者获取商品信息的常用接口。通过调用该 API,可以获取商品的标题、价格、库存、描述、图片等详细信息。以下是一个基于 Java 的示例代码,展示如何调用 Shopee 商品详情 API,并对返回结果进行说明。

1. Shopee 商品详情 API 概述

1.1 接口功能

获取指定商品的详细信息,包括:

  • 商品标题
  • 商品价格
  • 商品库存
  • 商品描述
  • 商品图片
  • 商品分类
  • 商品评分等

1.2 接口地址

https://api.shopee.com/v2/item/get

1.3 请求参数

参数名

类型

是否必填

说明

item_id

long

商品 ID

partner_id

long

合作伙伴 ID

shopid

long

店铺 ID

timestamp

long

请求时间戳(秒级)

sign

string

请求签名

1.4 返回结果

返回结果为 JSON 格式,包含商品详细信息。主要字段如下:

  • item: 商品详细信息对象
    • item_id: 商品 ID
    • item_name: 商品名称
    • price: 商品价格
    • stock: 商品库存
    • description: 商品描述
    • images: 商品图片列表
    • categories: 商品分类信息
    • rating: 商品评分

2. Java 示例代码

以下是一个使用 Java 调用 Shopee 商品详情 API 的示例代码:

2.1 依赖库

使用 HttpURLConnection 发送 HTTP 请求,并使用 JSONObject 解析返回的 JSON 数据。确保项目中包含 org.json 库。

Maven 依赖:

<dependency>
    <groupId>org.json</groupId>
    <artifactId>json</artifactId>
    <version>20231013</version>
</dependency>

2.2 示例代码

import org.json.JSONObject;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.nio.charset.StandardCharsets;
import java.security.MessageDigest;
import java.util.Base64;

public class ShopeeItemDetailAPI {

    // API 地址
    private static final String API_URL = "https://api.shopee.com/v2/item/get";

    // 合作伙伴 ID 和密钥
    private static final long PARTNER_ID = 123456; // 替换为你的合作伙伴 ID
    private static final String PARTNER_KEY = "your_partner_key"; // 替换为你的合作伙伴密钥

    public static void main(String[] args) {
        try {
            // 商品 ID 和店铺 ID
            long itemId = 123456789; // 替换为目标商品 ID
            long shopId = 987654321; // 替换为目标店铺 ID

            // 获取商品详情
            JSONObject itemDetail = getItemDetail(itemId, shopId);
            System.out.println("商品详情: " + itemDetail.toString(2)); // 格式化输出
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * 获取商品详情
     */
    private static JSONObject getItemDetail(long itemId, long shopId) throws Exception {
        // 构造请求参数
        long timestamp = System.currentTimeMillis() / 1000; // 秒级时间戳
        String sign = generateSign(itemId, shopId, timestamp); // 生成签名

        // 构造请求 URL
        String requestUrl = API_URL + "?item_id=" + itemId +
                "&shopid=" + shopId +
                "&partner_id=" + PARTNER_ID +
                "&timestamp=" + timestamp +
                "&sign=" + sign;

        // 发送 HTTP GET 请求
        URL url = new URL(requestUrl);
        HttpURLConnection connection = (HttpURLConnection) url.openConnection();
        connection.setRequestMethod("GET");

        // 读取响应
        BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
        StringBuilder response = new StringBuilder();
        String line;
        while ((line = reader.readLine()) != null) {
            response.append(line);
        }
        reader.close();

        // 解析 JSON 响应
        return new JSONObject(response.toString());
    }

    /**
     * 生成请求签名
     */
    private static String generateSign(long itemId, long shopId, long timestamp) throws Exception {
        String baseString = PARTNER_ID + "/v2/item/get" + timestamp + itemId + shopId + PARTNER_KEY;
        MessageDigest digest = MessageDigest.getInstance("SHA-256");
        byte[] hash = digest.digest(baseString.getBytes(StandardCharsets.UTF_8));
        return Base64.getEncoder().encodeToString(hash);
    }
}

3. 返回结果说明

假设调用成功,返回的 JSON 数据格式如下:

{
  "item": {
    "item_id": 123456789,
    "item_name": "示例商品",
    "price": 1999,
    "stock": 100,
    "description": "这是一个示例商品描述。",
    "images": [
      "https://example.com/image1.jpg",
      "https://example.com/image2.jpg"
    ],
    "categories": [
      {
        "category_id": 1,
        "category_name": "电子产品"
      }
    ],
    "rating": 4.5
  }
}

主要字段说明:

  • item_id: 商品 ID。
  • item_name: 商品名称。
  • price: 商品价格(单位:分)。
  • stock: 商品库存。
  • description: 商品描述。
  • images: 商品图片 URL 列表。
  • categories: 商品分类信息。
  • rating: 商品评分(0-5 分)。

4. 注意事项

  1. 签名生成:签名是请求的关键部分,确保使用正确的合作伙伴密钥和时间戳。
  2. 错误处理:在实际应用中,建议添加错误处理逻辑,以应对网络异常或 API 返回错误的情况。
  3. API 权限:确保你的合作伙伴 ID 和密钥具有访问商品详情 API 的权限。

通过以上示例代码和说明,可以轻松调用 Shopee 商品详情 API 并解析返回结果。如果有进一步的需求或问题,欢迎随时提问和联系