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

Dialogflow对接Google Transactions API时订单预览小计计算异常

问题分析与解决方案

这问题我之前帮人排查过类似的,核心是Google Transactions API会自动验证你手动设置的价格字段和系统计算的实际总和是否一致,而你的错误就是手动填的subtotal和totalPrice和系统自动计算的结果不匹配导致的。

为什么会出现这个错误?

Transactions API的价格验证逻辑是这样的:

  • 系统会自动计算所有订单项(lineItems)的总金额:如果你的lineItem里填了unitPrice和quantity,系统会用单价 × 数量算出每个订单项的总价,再把所有订单项的总价加起来得到实际小计;如果lineItem里直接填了totalPrice,系统就直接用这个值相加。
  • 这个系统计算出的实际小计,必须和你在order.subtotal字段里手动设置的值完全相等,否则就会报第一个错误:「小计价格不等于常规订单项总和」。
  • 同理,系统会用「小计 + 所有调整项(运费、税费、折扣等)」算出实际总价,这个值必须和你在order.totalPrice里手动设置的值完全相等,否则报第二个错误。

你的情况里,系统计算出的实际小计是31USD × 2 = 62USD,实际总价是62USD + 10USD(假设你加了10USD的运费)=72USD,但你手动在order.subtotal里填了31USD,order.totalPrice里填了42USD,所以系统认为不匹配,抛出错误。

解决步骤

  1. 修正order.subtotal的值
    把subtotal的amount改成所有订单项的总金额,也就是31 × 2 = 62USD。

  2. 修正order.totalPrice的值
    计算「小计 + 所有调整项(运费、税费等)」的总和,比如如果运费是10USD,那totalPrice的amount应该是62 + 10 =72USD。

  3. 确保订单项字段的一致性
    如果你在lineItem里同时设置了unitPrice和totalPrice,要保证totalPrice = unitPrice × quantity;或者只保留其中一种方式(要么填unitPrice+quantity,要么直接填totalPrice),避免系统计算时出现冲突。

正确的JSON片段示例

"order": {
  "subtotal": {
    "amount": "62",
    "currency": "USD"
  },
  "totalPrice": {
    "amount": "72",
    "currency": "USD"
  },
  "lineItems": [
    {
      "name": "你的商品名称",
      "quantity": 2,
      "unitPrice": {
        "amount": "31",
        "currency": "USD"
      }
    }
  ],
  "adjustments": [
    {
      "type": "SHIPPING",
      "amount": {
        "amount": "10",
        "currency": "USD"
      },
      "name": "标准运费"
    }
  ]
}

最后再检查一遍所有价格字段的amount都是字符串格式,数值没有写错,应该就能解决这两个验证错误了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:28:20