【干货满满】分享京东API接口到手价,用python脚本实现

简介: 淘宝开放平台提供丰富API,通过商品详情接口与淘宝联盟接口,可获取含优惠券、满减后的商品到手价。本文介绍基于Python的实现方案,涵盖签名生成、接口调用、价格解析及错误处理,适用于比价工具、导购平台等场景。

淘宝开放平台提供了丰富的 API 接口,其中获取商品到手价(含优惠券、满减等优惠后的实际价格)需要调用商品详情相关接口。以下是基于淘宝联盟 API 和商品详情 API 的实现方案。

一、核心接口与认证机制

  1. 相关 API 接口
    获取商品到手价主要依赖两个接口:

淘宝商品详情接口(item_get) :获取商品基础价格、优惠券信息;
淘宝联盟单品详情接口(tbk_item_info_get) :获取推广佣金、优惠叠加后的实际到手价(需联盟权限)。

  1. 认证机制
    淘宝 API 采用AppKey + AppSecret + 会话密钥(session) 认证:

开发者需在淘宝开发平台注册应用,获取AppKey和AppSecret;
部分接口需要用户授权,通过 OAuth 2.0 获取session(会话密钥);
所有请求需包含签名(sign),通过AppSecret对参数加密生成。
二、Python 脚本实现
以下脚本实现通过淘宝联盟 API 获取商品到手价,包含签名生成、接口调用和价格解析。
import requests
import json
import time
import hashlib
import logging
from requests.exceptions import RequestException
from typing import Dict, Optional

配置日志

logging.basicConfig(
level=logging.INFO,
format="%(asctime)s - %(levelname)s - %(message)s"
)

class TaobaoAPI:
def init(self, app_key: str, app_secret: str, session: Optional[str] = None):
"""
初始化淘宝API客户端
:param app_key: 应用AppKey
:param app_secret: 应用AppSecret
:param session: 用户会话密钥(部分接口需要)
"""
self.app_key = app_key
self.app_secret = app_secret
self.session = session
self.base_url = "https://eco.taobao.com/router/rest" # 淘宝API网关
self.format = "json"
self.v = "2.0" # API版本

def _generate_sign(self, params: Dict[str, str]) -> str:
    """生成签名(淘宝API签名规则)"""
    # 1. 按参数名ASCII升序排序
    sorted_params = sorted(params.items(), key=lambda x: x[0])
    # 2. 拼接为keyvaluekeyvalue格式
    sign_str = "".join([f"{k}{v}" for k, v in sorted_params])
    # 3. 首尾拼接app_secret
    sign_str = self.app_secret + sign_str + self.app_secret
    # 4. MD5加密并转为大写
    return hashlib.md5(sign_str.encode("utf-8")).hexdigest().upper()

def call(self, method: str, biz_params: Optional[Dict] = None) -> Optional[Dict]:
    """
    通用API调用方法
    :param method: 接口方法名(如taobao.tbk.item.info.get)
    :param biz_params: 业务参数
    :return: 接口返回的业务数据
    """
    # 1. 构建公共参数
    common_params = {
        "app_key": self.app_key,
        "method": method,
        "timestamp": time.strftime("%Y-%m-%d %H:%M:%S"),
        "format": self.format,
        "v": self.v,
        "sign_method": "md5"
    }
    if self.session:
        common_params["session"] = self.session

    # 2. 合并参数
    all_params = {**common_params,** (biz_params or {})}

    # 3. 生成签名
    sign = self._generate_sign(all_params)
    all_params["sign"] = sign

    # 4. 发送请求
    try:
        response = requests.get(
            self.base_url,
            params=all_params,
            timeout=15
        )
        response.raise_for_status()

        # 5. 解析响应
        result = response.json()
        logging.info(f"API调用成功:{method},响应:{json.dumps(result, ensure_ascii=False)[:200]}...")

        # 6. 处理错误(淘宝API错误在error_response节点)
        if "error_response" in result:
            error = result["error_response"]
            logging.error(f"业务错误:{error.get('msg')}(错误码:{error.get('code')})")
            return None

        # 7. 返回业务数据(格式为"方法名+_response")
        response_key = f"{method.replace('.', '_')}_response"
        return result.get(response_key, {})

    except RequestException as e:
        logging.error(f"请求异常:{str(e)},接口:{method}")
        return None
    except json.JSONDecodeError:
        logging.error(f"响应格式错误:{response.text[:200]}...,接口:{method}")
        return None

def get_item_final_price(self, num_iid: str) -> Optional[Dict]:
    """
    获取商品到手价(包含优惠券、满减等)
    :param num_iid: 商品数字ID(淘宝商品唯一标识)
    :return: 价格信息字典(含原价、到手价、优惠券等)
    """
    # 1. 调用淘宝联盟接口获取优惠后价格
    method = "taobao.tbk.item.info.get"
    biz_params = {
        "num_iids": num_iid,
        "fields": "num_iid,title,pict_url,price,zk_final_price,coupon_info"
    }
    result = self.call(method, biz_params)

    if not result:
        return None

    # 2. 解析到手价(zk_final_price为优惠后价格,coupon_info为优惠券信息)
    item = result.get("results", {}).get("n_tbk_item", [])[0] or {}
    return {
        "num_iid": item.get("num_iid"),
        "title": item.get("title"),
        "original_price": item.get("price"),  # 原价
        "final_price": item.get("zk_final_price"),  # 到手价(含优惠)
        "coupon_info": item.get("coupon_info"),  # 优惠券信息
        "pict_url": item.get("pict_url")  # 商品主图
    }

示例调用

if name == "main":

# 替换为你的实际参数(从淘宝开放平台获取)
APP_KEY = "your_app_key"
APP_SECRET = "your_app_secret"
SESSION = "your_session"  # 非必需,部分接口需要

# 初始化客户端
taobao_api = TaobaoAPI(app_key=APP_KEY, app_secret=APP_SECRET, session=SESSION)

# 获取商品到手价(替换为实际商品ID)
num_iid = "6543217890"  # 示例商品数字ID
price_info = taobao_api.get_item_final_price(num_iid)

if price_info:
    print(f"商品标题:{price_info['title']}")
    print(f"原价:{price_info['original_price']} 元")
    print(f"到手价:{price_info['final_price']} 元")
    print(f"优惠券:{price_info['coupon_info'] or '无'}")

关键说明
接口选择与权限:
基础商品信息(如原价、标题)通过接口获取,无需特殊权限;
优惠后到手价需通过京东联盟的接口,需在京东联盟平台申请权限并绑定应用。
签名规则:
京东 API 签名需将所有参数(含公共参数和业务参数的 JSON 字符串)按 ASCII 排序,拼接为格式,末尾加后用 MD5 加密(大写)。
核心参数解析:
sku_id:商品 SKU ID,可从商品详情页 URL 提取;
final_price:到手价,已包含商品本身折扣、优惠券、满减等所有优惠;
area:地区编码(如1_72_2799_0代表北京),不同地区的价格和优惠可能不同。
错误处理:
常见错误码:1000(签名错误)、2000(权限不足)、3000(参数错误),需根据msg字段排查问题;
联盟接口限流较严格(默认 QPS=5),超限返回429错误,需控制调用频率。
扩展建议
批量查询:通过skuIds参数传入多个 SKU ID(用逗号分隔),一次获取多个商品价格;
地区适配:通过 IP 解析用户所在地区,动态设置area参数,获取精准的地区性价格;
优惠叠加:解析coupon_info和promotion_info,展示优惠详情(如 “满 200 减 30”+“店铺 9 折”)。 通过上述脚本,可实现京东商品到手价的精准获取,适用于电商比价工具、导购平台、价格监控系统等场景

相关文章
|
3月前
|
JSON 监控 API
京东商品详情API接口(标题|主图|SKU|价格)
京东商品详情API提供标准化接口,支持通过HTTPS获取商品标题、价格、库存、销量等120+字段,数据实时更新至分钟级。包含jd.item.get和jd.union.open.goods.detail.query等接口,支持批量查询200个SKU,适用于价格监控、竞品分析等电商场景。
610 156
|
4月前
|
人工智能 API 开发工具
京东:对接白条API提供分期付款,降低消费门槛
本文详解京东白条API集成,涵盖技术原理、分步对接流程及Python代码实现,帮助开发者快速接入分期付款功能。通过API调用实现信用评估与分期计算,降低消费门槛,提升电商转化率。内容基于官方文档,确保准确可靠。
324 8
|
3月前
|
供应链 搜索推荐 数据挖掘
探秘京东 API 接口的神奇应用场景
京东API如同数字钥匙,助力商家实现商品、库存、订单等多平台高效同步,提升效率超80%。支持物流实时追踪,增强用户满意度;赋能精准营销与数据分析,决策准确率提升20%以上,全面优化电商运营。
150 1
|
3月前
|
JSON 算法 API
Python采集淘宝商品评论API接口及JSON数据返回全程指南
Python采集淘宝商品评论API接口及JSON数据返回全程指南
|
3月前
|
JSON API 数据安全/隐私保护
Python采集淘宝拍立淘按图搜索API接口及JSON数据返回全流程指南
通过以上流程,可实现淘宝拍立淘按图搜索的完整调用链路,并获取结构化的JSON商品数据,支撑电商比价、智能推荐等业务场景。
|
4月前
|
存储 监控 API
京东电子面单API对接指南:实现订单自动打单,发货效率提升300%
电子面单通过API自动化实现降本增效,显著提升订单处理效率。对接需准备app_key、access_token等参数,结合京东API实现快速打单。系统设计支持自动打印与异常告警,实测日均处理量提升316%,错单率大幅下降,人力成本节省超65%。
470 0
|
3月前
|
Cloud Native 算法 API
Python API接口实战指南:从入门到精通
🌟蒋星熠Jaxonic,技术宇宙的星际旅人。深耕API开发,以Python为舟,探索RESTful、GraphQL等接口奥秘。擅长requests、aiohttp实战,专注性能优化与架构设计,用代码连接万物,谱写极客诗篇。
Python API接口实战指南:从入门到精通
|
3月前
|
JSON 监控 API
从0到1掌握京东API:商品列表获取技巧与避坑指南
京东商品列表API是京东开放平台的核心接口,支持按类目、价格、销量等多条件筛选,实时获取商品基础信息、价格、库存及促销数据。采用HTTPS协议,JSON格式返回,适用于竞品分析与价格监控。支持分页,通过MD5签名认证,保障数据安全。

推荐镜像

更多