文档中心 > API类目 > 酒店商品API

taobao.xhotel.multiplerates.update (复杂价格推送接口(批量全量))

批量更新复杂价格 涵盖了taobao.xhotel.rates.update的功能

公共参数

请求参数

名称 类型 是否必须 示例值 更多限制 描述
rate_quota_map String 必须 [{"useRoomInventory":false,"outRoomId":"abc","ratePlanCode":"WHL03","vendor":"","currencyCode":"CNY","childAges":"2~5","childRule":[{"calculateType":"1","ageRange":"4~6","numRange":"1","feeType":"10"},{"calculateType":"2","ageRange":"2~6","numRange":"2","feeType":"0.2"}],"priceCalendar":[{"date":"2017-04-16","inventoryPrice":[{"lengthOfStay":1,"rateSwitch":0,"quota":100,"price":[{"occupancy":5,"basePrice":310000,"taxAndFee":100,"taxes":[{"taxId":0,"type":"Excluded","valueType":"percentage","amount":20},{"taxId":3,"type":"Mandatory","valueType":"percentage","amount":100}],"twoTax":200,"threeTax":300,"fourTax":400,"fiveTax":500}]}]}],"rateCalDataList":[{"nod":1,"nop":1,"breakfastCal":"[{\"date\":\"yyyy-MM-dd\",\"startDate\":\"yyyy-MM-dd\",\"endDate\":\"yyyy-MM-dd\",\"breakfast_count\":0},{\"date\":\"yyyy-MM-dd\",\"startDate\":\"yyyy-MM-dd\",\"endDate\":\"yyyy-MM-dd\",\"breakfast_count\":1}]","cancelPolicyCal":"[{\"date\":\"yyyy-MM-dd\",\"startDate\":\"yyyy-MM-dd\",\"endDate\":\"yyyy-MM-dd\",\"cancel_policy\":{\"cancelPolicyType\":1}},{\"date\":\"yyyy-MM-dd\",\"startDate\":\"yyyy-MM-dd\",\"endDate\":\"yyyy-MM-dd\",\"cancel_policy\":{\"cancelPolicyType\":4,\"policyInfo\":{\"48\":10,\"24\":20}}}]"}]}] 批量全量修改价格和库存信息,会以请求参数中的数据覆盖掉原来报价库存数据。A:useRoomInventory:是否使用room级别共享库存,可选值 true false 2、false时:使用rate级别私有库存,此时如果填写了库存,那么会写入库存表。B:date 日期必须为 T---T+180 日内的日期(T为当天),且不能重复C:basePrice 基本价格 int类型 取值范围1-99999999 单位为分D:quota 库存 int 类型 取值范围 0-999(数量库存) 支持状态库存, 60000(状态库存关) 61000(状态库存开);E:occupancy为入住人数,范围为1~10;F:lengthofStay为连住天数,范围为1~10;G:taxAndFee为总税费;H:taxes:税费明细,是一个数组,每个数组元素是一个包含税费信息的对象。包括:taxId:税费 ID,类型:int,必填:是,具体枚举:taxId=0=其他税(OTHER),taxId=3=住宿税(RENTAL_TAX);type:税费类型,类型:string、必填:是,可选值:Mandatory:预付税费(包含在总价中),Excluded:到店税费(不包含在总价中);valueType:费率类型,类型:string,必填:否,可选值:percentage:百分比、fixed:固定金额;amount:具体金额,类型:string,必填:否,单位:分/百分比。 注意:每个taxes数组里的含税金额相加要与taxAndFee的值一致,否则将会报错;当taxAndFee字段为空时则不会校验;当某税费不知道金额时则可不传taxAndFee字段,仅taxes字段里传对应信息即可;未知税费,请在taxId里选择其他税类,住宿税只能传1个,当传多个时飞猪则以第一个为主,若因传多个导致的问题,需由商家自行负责。 I:addBedPrice为加床价;J:addPersonPrice为加人价;KrateSwitch为开关房状态,1为开房,0为关房。L:支持outRoomId和ratePlanCode来更新报价库存。M:childnum为儿童人数。N:infantnum为婴儿人数。O:ckinSwitch为入住开关(0,关闭;1,打开) P:ckoutSwitch为离店开关 (0,关闭;1,打开) Q:lockStartTime锁库存开始时间 R:lockEndTime锁库存截止时间。 childRule:儿童价规则。其中calculateType为计算类型1为固定金额,2为房费的百分比;ageRange为适用儿童的年龄范围,格式为:2~10,即适用2到10岁的儿童;childRange适用几位儿童,格式为1即适用1位儿童;feeType费用类型,如果calculateType=1那么feeType存一固定金额,单位为分,如果calculateType=2那么feeType存房费的百分比,格式为0.2。childAges:儿童年龄范围,格式为2~10,意味着所有儿童价格规则中的适用儿童年龄必须在这个范围之内。rateCalDataList:存储日历化早餐和退改。breakfastCal、cancelPolicyCal格式与原rp格式相同。
standard_xitem_infos String 可选 [ { "actionType": "BOUND", "outXCode": "123456", "subTypeCode": "70000_200", "name": "下午茶更新", "poi": "杭州西湖", "poiAddition": "杭州西湖addition", "subProducts": [ { "name": "早餐", "amount": 1,#如果子产品是早餐,份数建议与rate_quota_map这个价库字段的nop一致;若加赠早餐场景下,份数可自行控制 "price": 38 } ], "availableSubAmount": 3, "priceValue": { "price": 100, "sellingPrice": 100 }, "useRule": { "receptionTime": [ { "startTime": "00:00", "endTime": "01:00" }, { "startTime": "02:00", "endTime": "03:00" }, { "startTime": "03:00", "endTime": "04:00" } ], "adultAmount": 2, "childAmount": 1, "childHeight": "120", "childAge": "8", "bookingRule": 1, "bookingMinAmount": 2, "bookingUnit": 1, "contactNumber": "05316776678", "acquireType": 1, "effectiveType": 0, "additionalReminder": "补充提醒" }, "actionDimension": 1, "startDateTime": "2023-07-13 00:00:01", "endDateTime": "2024-07-13 00:00:01", "displayStartTime": "2023-07-13 00:00:01", "displayEndTime": "2024-07-13 00:00:01", "availableWeekDays": "1,2,3,4,5,6,7", "amount": 2, "childAmount": 2 } ] 是一个JSONArray 字符串。actionType :操作类型,枚举 :BOUND:绑定,UNBOUND解绑; outXcode 外部Code直连场景下需求的x元素编码 ; subTypeCode x 元素子类目;name:x元素名称;productPic: 图片;{url图片url;mainPic是否为主图};poi:位置信息;subProducts:X元素子产品信息;{name:子产品名称,amount:数量,price:单价}priceValue价格信息;{retailPrice:门市价,sellingPricet:售卖价,currencyCode:销售币种默认CNY;valueCertificatePic价值凭证图片};saleRule售卖规则;{receptionTime:接待时间段:支持多个,adultAmount建议成人数量,childAmount建议儿童数量,childHeight儿童身高限制;childAge儿童身高限制;bookingRule预约类型,枚举0无需预约/1需预约;bookingAmount最小预约单位(预约类型为1时有);bookingUnit预约单位,枚举天、小时(预约类型为1时有);contactPhone联系电话;acquireType获取方式,枚举1:酒店前台,2:其他;effectiveType是否入住期间有效,枚举,0入住期间,1入住首日;additionalReminder补充提醒};actionDimension使用维度 1:每间房维度 2:每间夜维度;startDateTime上架日期;displayStartTime权益可用开始时间;displayEndTime权益可用结束时间;amount打包数量;childAmount儿童打包数量;nop:如果推送x元素包含早餐,nop建议与早餐份数保持一致;若加赠早餐场景下,份数可自行控制;子产品份数:子产品中若包含早餐,份数建议与rate_quota_map中的nop一致;若加赠早餐场景下,份数可自行控制。

响应参数

名称 类型 示例值 描述
gid_and_rpid_occupancy_lengthofstay String [] 1000-12300-1-1 商品id,房价id,入住人数,连住天数
warnmessage String [{gid:123,rpId:234,occupancy:2,lengthofstay:2,code:-1,msg:参数格式错误}] 批量更新的时候,如果部分更新失败,会展示部分失败的原因

请求示例

  • JAVA
  • .NET
  • PHP
  • CURL
  • Python
  • C/C++
  • NodeJS
TaobaoClient client = new DefaultTaobaoClient(url, appkey, secret);
XhotelMultipleratesUpdateRequest req = new XhotelMultipleratesUpdateRequest();
req.setRateQuotaMap("[{\"useRoomInventory\":false,\"outRoomId\":\"abc\",\"ratePlanCode\":\"WHL03\",\"vendor\":\"\",\"currencyCode\":\"CNY\",\"childAges\":\"2~5\",\"childRule\":[{\"calculateType\":\"1\",\"ageRange\":\"4~6\",\"numRange\":\"1\",\"feeType\":\"10\"},{\"calculateType\":\"2\",\"ageRange\":\"2~6\",\"numRange\":\"2\",\"feeType\":\"0.2\"}],\"priceCalendar\":[{\"date\":\"2017-04-16\",\"inventoryPrice\":[{\"lengthOfStay\":1,\"rateSwitch\":0,\"quota\":100,\"price\":[{\"occupancy\":5,\"basePrice\":310000,\"taxAndFee\":100,\"taxes\":[{\"taxId\":0,\"type\":\"Excluded\",\"valueType\":\"percentage\",\"amount\":20},{\"taxId\":3,\"type\":\"Mandatory\",\"valueType\":\"percentage\",\"amount\":100}],\"twoTax\":200,\"threeTax\":300,\"fourTax\":400,\"fiveTax\":500}]}]}],\"rateCalDataList\":[{\"nod\":1,\"nop\":1,\"breakfastCal\":\"[{\\"date\\":\\"yyyy-MM-dd\\",\\"startDate\\":\\"yyyy-MM-dd\\",\\"endDate\\":\\"yyyy-MM-dd\\",\\"breakfast_count\\":0},{\\"date\\":\\"yyyy-MM-dd\\",\\"startDate\\":\\"yyyy-MM-dd\\",\\"endDate\\":\\"yyyy-MM-dd\\",\\"breakfast_count\\":1}]\",\"cancelPolicyCal\":\"[{\\"date\\":\\"yyyy-MM-dd\\",\\"startDate\\":\\"yyyy-MM-dd\\",\\"endDate\\":\\"yyyy-MM-dd\\",\\"cancel_policy\\":{\\"cancelPolicyType\\":1}},{\\"date\\":\\"yyyy-MM-dd\\",\\"startDate\\":\\"yyyy-MM-dd\\",\\"endDate\\":\\"yyyy-MM-dd\\",\\"cancel_policy\\":{\\"cancelPolicyType\\":4,\\"policyInfo\\":{\\"48\\":10,\\"24\\":20}}}]\"}]}]");
req.setStandardXitemInfos("[ { \"actionType\": \"BOUND\", \"outXCode\": \"123456\", \"subTypeCode\": \"70000_200\", \"name\": \"下午茶更新\", \"poi\": \"杭州西湖\", \"poiAddition\": \"杭州西湖addition\", \"subProducts\": [ { \"name\": \"早餐\", \"amount\": 1,#如果子产品是早餐,份数建议与rate_quota_map这个价库字段的nop一致;若加赠早餐场景下,份数可自行控制 \"price\": 38 } ], \"availableSubAmount\": 3, \"priceValue\": { \"price\": 100, \"sellingPrice\": 100 }, \"useRule\": { \"receptionTime\": [ { \"startTime\": \"00:00\", \"endTime\": \"01:00\" }, { \"startTime\": \"02:00\", \"endTime\": \"03:00\" }, { \"startTime\": \"03:00\", \"endTime\": \"04:00\" } ], \"adultAmount\": 2, \"childAmount\": 1, \"childHeight\": \"120\", \"childAge\": \"8\", \"bookingRule\": 1, \"bookingMinAmount\": 2, \"bookingUnit\": 1, \"contactNumber\": \"05316776678\", \"acquireType\": 1, \"effectiveType\": 0, \"additionalReminder\": \"补充提醒\" }, \"actionDimension\": 1, \"startDateTime\": \"2023-07-13 00:00:01\", \"endDateTime\": \"2024-07-13 00:00:01\", \"displayStartTime\": \"2023-07-13 00:00:01\", \"displayEndTime\": \"2024-07-13 00:00:01\", \"availableWeekDays\": \"1,2,3,4,5,6,7\", \"amount\": 2, \"childAmount\": 2 } ]");
XhotelMultipleratesUpdateResponse rsp = client.execute(req, sessionKey);
System.out.println(rsp.getBody());

响应示例

  • XML示例
  • JSON示例
<xhotel_multiplerates_update_response>
    <gid_and_rpid_occupancy_lengthofstay>
        <string>1000-12300-1-1</string>
    </gid_and_rpid_occupancy_lengthofstay>
    <warnmessage>[{gid:123,rpId:234,occupancy:2,lengthofstay:2,code:-1,msg:参数格式错误}]</warnmessage>
</xhotel_multiplerates_update_response>

异常示例

  • XML示例
  • JSON示例
<error_response>
    <code>50</code>
    <msg>Remote service error</msg>
    <sub_code>isv.invalid-parameter</sub_code>
    <sub_msg>非法参数</sub_msg>
</error_response>

错误码解释

错误码 错误描述 解决方案
isv.invalid-parameter:FORMAT_ERROR 参数格式不正确 请检查输入参数格式
isv.invalid-parameter:ERROR 参数不正确 请检查输入参数
isv.permission-error:NO_PERMISSIONS_ERROR 权限不够、非法访问 请申请权限或者使用正确的账号操作
isv.biz-error: RATEPLAN_NOT_EXIST_ERROR 定价信息关联的房价不存在 请检查输入参数中对应的房价编码是否存在
isv.biz-error:BIZ_ERROR 业务异常 请稍后重试
isv.invalid-parameter:NOTNULL 参数不能为空 参数不能为空,请检查必填项
isv.remote-service:CONVERT_ERROR 转换对象时出错 请检查输入参数
isv.invalid-parameter:ROOM_TYPE_NOT_EXIST 房型不存在 房型不存在,请检查参数中的房型编码是否已经存在
isp.top-remote-connection-timeout top链接超时 top链接超时
isp.session-not-exist session信息不存在 session信息不存在,请检查,确保输入正确的session信息
isv.invalid-parameter: RATE_UPDATE_PARAM_DATA_SIZE_ERROR 批量更新房价时,数据长度超长。一次最多允许更新10个rate 批量更新房价时,数据长度超长。一次最多允许更新10个rate 请截取以后重试。

API工具

如何获得此API

FAQ

返回
顶部