通过Zoho Creator对接Zoho Books创建销售订单的实现问题
现有问题排查
- 核心传参错误:
invokeurl请求的parameters入参误用了子表单循环内的临时变量mapVar,该变量仅存储最后一行遍历的商品数据,你提前组装的、包含客户信息和全量商品行的values参数完全没被传入请求,接口收不到完整订单结构必然报错。 - 字段映射错误:
customer_id字段赋值用了input.Sales_Order_ID,这个值是Creator侧的销售订单ID,不是Zoho Books要求的客户唯一标识,接口会因匹配不到客户直接返回失败。 - 请求格式错误:调用Zoho Books创建订单接口时未指定
Content-Type请求头,也没有将参数转为接口可识别的JSON格式,服务端无法解析传入的内容。 - 配置校验遗漏:需要确认自定义连接
zoho_books已经勾选了销售订单创建的写权限;同时确认请求域名和你的Zoho Books所属区域匹配,国际区用books.zoho.com、欧盟区用books.zoho.eu、印度区用books.zoho.in、中国区用books.zoho.com.cn,域名不匹配会直接连接失败。
修正后代码
lineItems = List(); // 遍历订单商品子表单 for each line in Items_to_Order { singleItem = map(); singleItem.put("item_id", line.Item_ID); singleItem.put("name", line.Item_Name); singleItem.put("rate", line.Price); singleItem.put("quantity", line.Quantity); lineItems.add(singleItem); } requestBody = map(); // 注意:将下方input.Customer_ID替换为你表单中存储Zoho Books客户ID的对应字段,不要使用订单ID赋值 requestBody.put("customer_id", input.Customer_ID); requestBody.put("line_items", lineItems); reqHeaders = map(); reqHeaders.put("Content-Type", "application/json"); response = invokeurl [ url : "https://books.zoho.com/api/v3/salesorders?organization_id=762389459" type : POST parameters: requestBody.toString() headers: reqHeaders connection: "zoho_books" detailed: true ]; // 输出接口返回结果,code为0代表创建成功,非0值可直接查看返回的message字段定位具体报错 info response; // 双向打通可选逻辑:创建成功后把Zoho Books返回的订单ID存回Creator表单,作为两边数据匹配的唯一键 if(response.get("code") == 0) { input.Zoho_Books_Order_ID = response.get("salesorder").get("salesorder_id"); }
双向打通补充配置
要实现和Zoho Books端手动创建订单的集成,需要在Zoho Books侧配置规则:
- 新建工作流,触发条件设置为销售订单手动创建、编辑时触发
- 触发动作选择webhook,将订单全量数据推送到Zoho Creator的开放接口写入对应表单
- 两边数据统一用Zoho Books的
salesorder_id作为唯一校验键,避免重复同步生成冗余数据
内容的提问来源于stack exchange,提问作者Mario Gómez
相关产品推荐
相关产品推荐

