You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Deluge脚本正确配置Zoho Books报价单的Stripe支付网关

解决Zoho Books Deluge脚本更新报价单支付网关的JSON格式错误问题

问题背景

在Zoho Books中,我们需要为所有报价单默认配置Stripe作为唯一支付网关,避免手动配置遗漏导致客户无法支付。但在通过Deluge脚本自动设置时,将包含Stripe配置的List直接赋值给quoteMAP的payment_options字段后,调用zoho.books.updateRecord接口始终返回"JSON is not well formed"错误,即便JSON格式校验合法也无法完成更新。

核心原因

Zoho Books的API对payment_options字段的结构有严格要求:它是一个嵌套Map,而非直接接收payment_gateways列表。payment_gateways只是payment_options这个Map中的一个子键,对应的值才是网关配置列表。直接用List替换payment_options会破坏API要求的JSON结构。

正确的字段映射实现

1. 构造Stripe网关配置Map

首先创建包含Stripe必要配置的Map,注意gateway_id必须是你Zoho Books账户中已激活的Stripe网关ID(可通过zoho.books.getPaymentGateways(organizationId)接口获取):

stripe_gateway = Map();
stripe_gateway.put("gateway_name", "Stripe");
stripe_gateway.put("gateway_type", "CARD");
stripe_gateway.put("gateway_id", "YOUR_STRIPE_GATEWAY_ID"); // 替换为实际ID
stripe_gateway.put("is_active", true);

2. 构建支付网关列表

将Stripe网关Map存入List:

payment_gateways_list = List();
payment_gateways_list.add(stripe_gateway);

3. 构造合规的payment_options Map

将网关列表作为子键值,嵌套到payment_optionsMap中,同时补充其他必填的支付选项字段(如是否允许线下支付):

payment_options = Map();
payment_options.put("payment_gateways", payment_gateways_list);
payment_options.put("allow_offline_payments", false); // 按需设置
payment_options.put("auto_charge", false); // 按需设置自动扣费

4. 更新报价单并调用API

将合规的payment_optionsMap赋值给报价单对象,再调用更新接口:

quote_map = Map();
quote_map.put("payment_options", payment_options);

// 调用更新接口,替换为你的报价单ID和组织ID
response = zoho.books.updateRecord("quotes", "QUOTE_ID", quote_map, "ORGANIZATION_ID");

关键注意事项

  • 必须确保gateway_id与Zoho Books中已配置的Stripe网关完全匹配,否则会导致配置无效
  • payment_options中的其他字段(如allow_offline_payments)不可省略,需根据业务需求设置布尔值
  • 若需禁用其他支付方式,确保payment_gateways_list中仅包含Stripe的配置

内容的提问来源于stack exchange,提问作者Basil1105

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 02:05:19