跳到主要内容
版本:v2.0

获取营种详情

获取营种完整详情,包含基本信息、规格期次、营销方案(价格)、报名配置四个模块。数据口径与小程序营种详情页同源,图片/视频已做 OSS 链接转换。

POST/api/productInfo

请求参数​

名称类型描述是否必填默认值备注
tokenString身份校验令牌必填-由 获取访问令牌 获得
pidNumber营种 ID(商品 ID)必填-大于 0

CURL​

V1​

curl --location --request POST 'https://open.xinduobang.cn/api/productInfo' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'token=YOUR_TOKEN' \
--data-urlencode 'pid=1001'

V2(appid 为 V2 版本)​

curl --location --request POST 'https://open.xinduobang.cn/api/productInfo' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--header 'X-Timestamp: 1770000000' \
--header 'X-Nonce: 3f9c1a7b2e6d4058' \
--header 'X-Signature: <computed_hmac_sha256>' \
--data-urlencode 'token=YOUR_TOKEN' \
--data-urlencode 'pid=1001'
信息

V2 签名算法及 X-Signature 计算方式见 V2 接入示例。下方接口 V2 示例均遵循相同规则,不再重复注释。

成功响应​

{
"code": 0,
"msg": "",
"data": {
"base_info": {
"pid": 1001,
"name": "夏日山林独立营6天5夜",
"sub_title": "让孩子学会独立",
"desc": "六天五夜山野独立营,含全程食宿与课程",
"ctype": [
{ "id": 12, "name": "夏令营" },
{ "id": 34, "name": "独立营" }
],
"product_type": 1,
"form_id": 88,
"big_form_id": 90,
"cover_pic": "https://cdn.example.com/cover/1001.jpg",
"pic_list": [
"https://cdn.example.com/pic/1001-1.jpg",
"https://cdn.example.com/pic/1001-2.jpg"
],
"video_url": "https://cdn.example.com/video/1001.mp4",
"feature": "<p>营种详情富文本HTML</p>",
"notice": "请携带身份证入园"
},
"spec_period": {
"period_list": [
{
"id": 5001,
"name": "7月5日-7月10日",
"pername": "第一期",
"sku_plu": {
"男": "123456789012",
"女": "234567890123"
}
}
]
},
"market_info": {
"sku_price_list": [
{ "sku_str": "男", "price": 2980, "big_price": 1980 }
],
"qz_price": {
"qz_price_type": 1,
"list": [
{
"sku_str": "男",
"price_list": [
{ "small_number": 1, "big_number": 1, "price": 4680 },
{ "small_number": 1, "big_number": 2, "price": 6880 },
{ "small_number": 2, "big_number": 1, "price": 5980 },
{ "small_number": 2, "big_number": 2, "price": 8180 }
]
}
]
},
"period_diff": {
"is_period_diff": 1,
"list": [
{
"period_id": 5001,
"name": "7月5日-7月10日",
"is_diff_sku": 0,
"sku_diff_list": [
{ "sku_str": "", "price_diff": 100, "big_price_diff": 200 }
]
}
]
}
},
"sign_up_info": {
"is_fill_form": 1,
"add_status": 1,
"is_check_age": 1,
"sage": 6,
"eage": 12,
"is_check_adult_age": 1,
"sadult_age": 18,
"eadult_age": 60
}
}
}

响应字段说明​

base_info(基本信息)​

字段类型说明
pidNumber营种 ID(商品 ID)
nameString营种名称
sub_titleString营种副标题,无副标题时为空字符串
descString营种简介
ctypeArray分类列表,无分类时为空数组
ctype[].idNumber分类 ID
ctype[].nameString分类名称
product_typeNumber营种类型:0 儿童单飞(营员营),1 亲子营,3 研学
form_idNumber报名表 ID(儿童/营员),0 表示未配置
big_form_idNumber报名表 ID(成人),仅亲子营有意义,0 表示未配置
cover_picString封面图(OSS 全链接)
pic_listArray轮播图数组(已过滤空图,最多 5 张)
video_urlString封面视频链接,无视频为空串
featureString营种详情(富文本 HTML,已解码)
noticeString用户须知

spec_period(规格期次)​

字段类型说明
period_listArray营期配置列表,按开营时间升序;仅含未取消且未隐藏的营期
period_list[].idNumber营期 ID
period_list[].nameString营期名称(日期区间)
period_list[].pernameString营期自定义名称,可能为空串
period_list[].sku_pluObject该营期下"规格串 → plu 码"映射;单规格时为 {"默认规格": "plu码"}

market_info(营销方案)​

字段类型说明
sku_price_listArray每个规格组合对应的价格;is_sku=0 时固定单条 sku_str="默认规格"
sku_price_list[].sku_strString规格组合串,逗号拼接(与下单 sku_str 口径一致)
sku_price_list[].priceNumber该组合儿童价(元)
sku_price_list[].big_priceNumber该组合成人价(元),亲子营有意义,否则为 0
qz_priceObject亲子定价(仅亲子营配置,未开启时 qz_price_type=0 且 list 为空)
qz_price.qz_price_typeNumber亲子定价开关:0 关闭,1 开启
qz_price.list[].sku_strString规格组合串(无规格时为"默认规格")
qz_price.list[].price_listArray该规格下所有数量组合,仅返回有价格的组合(后台空价=无库存,已过滤)
qz_price.list[].price_list[].small_numberNumber儿童人数
qz_price.list[].price_list[].big_numberNumber成人人数
qz_price.list[].price_list[].priceNumber套餐总价(元)
period_diffObject营期差价(按营期 × 规格)
period_diff.is_period_diffNumber是否亲子不同差价:0 否,1 是(仅亲子营可能为 1)
period_diff.listArray营期差价列表;整体营期差价未开启时为空数组
period_diff.list[].period_idNumber营期 ID
period_diff.list[].nameString营期名称
period_diff.list[].is_diff_skuNumber0 整期统一差价,1 不同规格不同差价
period_diff.list[].sku_diff_list[].sku_strString规格组合串;is_diff_sku=0 时为空串,表示适用全部规格
period_diff.list[].sku_diff_list[].price_diffNumber儿童差价(元),正数=加钱,负数=扣钱
period_diff.list[].sku_diff_list[].big_price_diffNumber成人差价(元);is_period_diff=0 时恒等于 price_diff

sign_up_info(报名配置)​

字段类型说明
is_fill_formNumber是否填写报名表:1 是,0 否
add_statusNumber报名表填写顺序:1 下单时填写,0 支付后填写
is_check_ageNumber是否验证儿童年龄:0 否,1 是
sageNumber报名年龄限制-儿童起(岁)
eageNumber报名年龄限制-儿童止(岁)
is_check_adult_ageNumber是否验证成人年龄:0 否,1 是
sadult_ageNumber报名年龄限制-成人起(岁)
eadult_ageNumber报名年龄限制-成人止(岁)

失败响应​

{
"code": 1,
"msg": "缺少必要参数"
}
{
"code": 0,
"msg": "营种不存在或已删除",
"data": []
}
HTTP状态码错误码描述排查建议
2001缺少必要参数请检查 pid 是否传入且大于 0
2000msg 非空时为业务错误data 为空数组,根据 msg 提示排查(如"营种不存在或已删除")

补充说明​

  1. sku_price_list 与下单链路同口径:多规格时按 product.sku_data 列式结构逐组合展开;无规格时返回单条 sku_str="默认规格",其 price/big_price 即产品基准价。
  2. period_diff(营期差价)为有符号值(正数=加钱、负数=扣钱),与下单计算"规格价 + 差价"一致。is_diff_sku=1 时按规格组合逐条列出;is_diff_sku=0 时只有一条且 sku_str="",表示适用全部规格。
  3. qz_price(亲子定价)数据来自 sku_merge 表,后台价格为空的组合代表无库存,接口已过滤不返回;未开启亲子定价时 qz_price_type=0 且 list 为空数组。
  4. 图片、视频字段均为 OSS 全链接;feature 为已解码的富文本 HTML。

相关接口​