淘宝商品详情API开发指南:H5与APP端接口调用详解

一、前言

在电商应用开发中,获取商品详情是一个核心功能。淘宝作为国内最大的电商平台,其商品详情接口被广泛应用于各种电商解决方案中。本文将详细介绍如何调用淘宝的H5和APP端商品详情接口,并提供完整的代码实现。


二、淘宝详情接口概述

1. 接口类型

淘宝平台提供了多种商品详情接口,主要包括:

- H5端商品详情接口

- APP端商品详情接口

- PC端商品详情接口


2. 接口权限

调用淘宝API需要先申请开发者权限,获取App Key和App Secret。可以通过淘宝开放平台(open.taobao.com)申请。


 三、H5端商品详情接口实现

1. 接口地址

https://h5api.m.taobao.com/h5/mtop.taobao.detail.getdetail/6.0/

2. 请求参数

参数名

类型

必填

说明

        

data

String

加密的请求数据

3. 示例代码

​
```python

import requests

import json

import hashlib

import time

def get_h5_item_detail(item_id):

# 基础参数

api_url = "https://h5api.m.taobao.com/h5/mtop.taobao.detail.getdetail/6.0/"

app_key = "你的AppKey"

t = str(int(time.time() * 1000))

# 构造请求数据

data = {

"itemNumId": str(item_id),

"exParams": json.dumps({"id": str(item_id)}),

"detail_v": "8.0.0"

}

# 签名参数

sign_str = f'{app_key}&{t}&{"12574478"}&{json.dumps(data)}'

sign = hashlib.md5(sign_str.encode('utf-8')).hexdigest()

# 请求头

headers = {

'User-Agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1',

}

# 请求参数

params = {

'jsv': '2.5.1',

'appKey': app_key,

't': t,

'sign': sign,

'api': 'mtop.taobao.detail.getdetail',

'v': '6.0',

'type': 'jsonp',

'dataType': 'jsonp',

'data': json.dumps(data)

}

try:

response = requests.get(api_url, params=params, headers=headers)

result = response.json()

return result

except Exception as e:

print(f"请求失败: {e}")

return None

# 使用示例

item_id = "602100000000" # 示例商品ID

detail = get_h5_item_detail(item_id)

print(detail)

```

​

 四、APP端商品详情接口实现

 1. 接口地址

```

https://api.m.taobao.com/rest/api3.do?api=mtop.taobao.detail.getdetail

```

 2. 请求参数

参数名

类型

必填

说明

method

String

接口方法名

appKey

String

应用Key

t

String

时间戳

sign

String

签名

v

String

版本号

data

String

请求数据

3. 示例代码

​
```python

def get_app_item_detail(item_id):

# 基础参数

api_url = "https://api.m.taobao.com/rest/api3.do"

app_key = "你的AppKey"

app_secret = "你的AppSecret"

t = str(int(time.time() * 1000))

# 构造请求数据

data = {

"itemNumId": str(item_id),

"detail_v": "8.0.0",

"umpChannel": "null",

"spm": "a2141.7631565",

"bc_fl_src": "cross_frm_tb_src"

}

# 生成签名

sign_str = f'{app_secret}appKey{app_key}data{json.dumps(data)}methodmtop.taobao.detail.getdetailt{t}v1.0{app_secret}'

sign = hashlib.md5(sign_str.encode('utf-8')).hexdigest().upper()

# 请求参数

params = {

'method': 'mtop.taobao.detail.getdetail',

'appKey': app_key,

't': t,

'sign': sign,

'v': '1.0',

'data': json.dumps(data)

}

try:

response = requests.get(api_url, params=params)

result = response.json()

return result

except Exception as e:

print(f"请求失败: {e}")

return None

# 使用示例

item_id = "602100000000" # 示例商品ID

detail = get_app_item_detail(item_id)

print(detail)

```

​

五、接口返回数据处理

1. 通用返回字段

两个接口返回的数据结构类似,主要包含以下信息:

- 商品基础信息(标题、价格、销量等)

- 商品图片

- 商品SKU信息

- 商品描述

- 店铺信息

- 促销信息


2. 数据处理示例

```python

def parse_item_detail(detail_data):

if not detail_data or 'data' not in detail_data:

return None

item_data = detail_data['data'].get('item', {})

result = {

'title': item_data.get('title'),

'price': item_data.get('price'),

'original_price': item_data.get('originalPrice'),

'sales': item_data.get('soldQuantity'),

'images': [img.get('url') for img in item_data.get('images', [])],

'props': item_data.get('props'),

'sku': item_data.get('sku'),

'desc_url': item_data.get('descUrl'),

'shop_info': {

'name': item_data.get('shop', {}).get('name'),

'shopId': item_data.get('shop', {}).get('shopId')

}

}

return result

# 使用示例

parsed_data = parse_item_detail(detail)

print(json.dumps(parsed_data, indent=2, ensure_ascii=False))

```

六、常见问题与解决方案

1. 接口调用限制

- 问题:淘宝API有调用频率限制

- 解决方案:

- 控制调用频率

- 使用缓存机制

- 申请更高的调用权限


2. 签名错误

- 问题:签名验证失败

- 解决方案:

- 检查AppSecret是否正确

- 检查签名生成逻辑

- 确保时间戳有效


 3. 数据解析错误

- 问题:返回数据结构变化导致解析失败

- 解决方案:

- 增加异常处理

- 定期检查接口文档更新

- 使用try-catch处理可能缺失的字段


希望本文能帮助开发者顺利实现淘宝商品详情的获取功能。如果有任何问题,欢迎在评论区留言讨论。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值