使用Make.com调用Bol API上传产品时持续收到400错误求助
用Make.com调用Bol Retailer Offer API上传产品时持续返回400错误
我正在通过Make.com将Excel中的产品数据同步到Bol平台,同步到WordPress的环节正常,但调用Bol的Offer创建接口(https://api.bol.com/retailer/offers)时始终返回400错误。已经尝试了三种不同的JSON请求体格式,均未成功:
尝试的三种JSON格式
第一种格式
{ "ean": "{{9.`12`}}", "condition": "{{9.`49`}}", "conditionComment": "Geen beschadigingen, gloednieuw", "referenceCode": "{{9.`21`}}", "onHoldByRetailer": false, "unknownProductTitle": "{{9.`0`}}", "description": "{{9.`23`}}", "pricing": { "bundlePrices": [ { "quantity": 1, "price": {{9.`8`}} } ] }, "stock": { "amount": {{9.`5`}}, "managedByRetailer": true }, "fulfilment": { "method": "{{9.`10`}}", "deliveryCode": "24uurs" } }
第二种格式
{ "language": "nl", "attributes": [ { "id": "EAN", "values": [ { "value": "{{9.`12`}}" } ] }, { "id": "condition", "values": [ { "value": "{{9.`49`}}" } ] }, { "id": "referenceCode", "values": [ { "value": "{{9.`21`}}" } ] }, { "id": "onHoldByRetailer", "values": [ { "value": false } ] }, { "id": "unknownProductTitle", "values": [ { "value": "{{9.`0`}}" } ] }, { "id": "description", "values": [ { "value": "{{9.`23`}}" } ] }, { "id": "pricing", "values": [ { "quantity": 1, "price": {{9.`8`}} } ] }, { "id": "stock", "values": [ { "amount": {{9.`5`}}, "managedByRetailer": true } ] }, { "id": "fulfilment", "values": [ { "method": "{{9.`10`}}", "deliveryCode": "24uurs" } ] } ] }
第三种格式(最后尝试)
{ "ean": "{{9.`12`}}", "condition": { "name": "{{9.`49`}}", "category": "{{9.`49`}}" }, "reference": "{{9.`21`}}", "onHoldByRetailer": false, "unknownProductTitle": "{{9.`0`}}", "pricing": { "bundlePrices": [ { "quantity": 1, "unitPrice": {{9.`8`}} }, { "quantity": 6, "unitPrice": {{9.`13`}} }, { "quantity": 12, "unitPrice": {{9.`14`}} } ] }, "stock": { "amount": {{9.`5`}}, "managedByRetailer": false }, "fulfilment": { "method": "{{9.`10`}}", "deliveryCode": "24uurs-21" } }
注:{{9.X}}为Make.com的占位符,用于获取Excel中的对应字段值。
排查方向与修复建议
1. 对齐Bol API官方规范
- 第二种格式完全不符合Bol Offer接口的请求结构,Bol的创建Offer接口不使用
attributes数组传递字段,直接用顶层键值对即可,直接排除这种格式。 - 第三种格式中的
condition字段错误:Bol的condition是枚举字符串(如NEW、USED_LIKE_NEW),不需要嵌套name和category对象;reference字段应为referenceCode,需修正字段名。 - 第一种格式中的
description字段:Bol的Offer接口通常不直接接受该字段,产品描述需通过单独的产品内容接口提交,若为未知产品,仅需unknownProductTitle即可,可尝试移除description字段。
2. 确保数据类型正确
- 价格(如
unitPrice)、库存数量(amount)必须是数字类型,检查Make.com占位符输出是否为纯数字,避免出现字符串引号或非数字字符。 - 布尔值(如
onHoldByRetailer)必须是原生布尔值(true/false),不能是字符串("true"/"false")。
3. 验证枚举值有效性
fulfilment.method必须是Bol允许的枚举值:FBR(商家自行配送)或FBB(Bol配送),确认占位符{{9.10}}输出的是正确值。deliveryCode需匹配Bol平台支持的配送代码,比如24uurs或24uurs-21是否在你的账户可用,可在Bol卖家后台确认。
4. 检查请求头配置
确保Make.com的HTTP请求模块中设置了正确的请求头:
Authorization: Bearer [你的API令牌]Content-Type: application/jsonAccept: application/vnd.retailer.v10+json(根据你使用的API版本调整)
5. 查看详细错误响应
400错误的响应体通常会包含具体的错误原因(比如哪个字段无效、缺失必填项),在Make.com的场景执行日志中查看API返回的完整响应内容,这是定位问题最快的方式。
修正后的示例请求体
基于Bol Retailer API v10规范,修正后的JSON格式如下:
{ "ean": "{{9.`12`}}", "condition": "{{9.`49`}}", // 确保是Bol允许的枚举值,如"NEW" "conditionComment": "Geen beschadigingen, gloednieuw", "referenceCode": "{{9.`21`}}", "onHoldByRetailer": false, "unknownProductTitle": "{{9.`0`}}", "pricing": { "bundlePrices": [ { "quantity": 1, "unitPrice": {{9.`8`}} }, { "quantity": 6, "unitPrice": {{9.`13`}} }, { "quantity": 12, "unitPrice": {{9.`14`}} } ] }, "stock": { "amount": {{9.`5`}}, "managedByRetailer": true // 根据实际库存管理方式调整 }, "fulfilment": { "method": "{{9.`10`}}", // 必须是"FBR"或"FBB" "deliveryCode": "24uurs" } }
内容的提问来源于stack exchange,提问作者Joost
相关产品推荐
相关产品推荐

