Google Maps Platform 和移动性结算指南

在生产环境中实现新的 Google Maps 项目之前,您需要确保设置正确无误,以便为所使用的产品支付正确的费用。本文档将介绍一些方面,以确保您 (i) 获得结算透明度 - 这样您就可以在生成账单之前验证用量,以及 (ii) 正确设置项目 - 以确保您可以使用我们的产品。

虽然此流程应该相对简单,但 Google 地图合作伙伴可以与您合作,确保您的项目正确迁移。

概念

在本部分中,我们希望确保您了解 Google 地图结算的基本信息以及可能存在的不同设置。在许多情况下,没有绝对的对错,具体取决于您想要实现哪种类型的结果。

在本文档中,我们多次提及您的 Google Cloud 项目。这是因为 Google 地图产品是通过它提供的。这意味着,本文档中介绍的配置是在您的 Google Cloud 项目中进行的。

结算账号

目前使用 Google 地图产品的每家公司都有一个与之关联的 Google Cloud 项目。此项目必须已配置结算账号。结算账号负责累积所有 Google 地图使用量,并根据该使用量每月生成账单。

对于 Mobility,系统会预配一个特殊的结算账号。此结算账号仅适用于与移动性相关的用例,例如:网约车、送货和物流。

一个结算账号可供多个 Google Cloud 项目使用,也可仅供一个项目使用。

单个项目指向同一结算账号:

  • 特定使用场景(例如移动使用场景)
  • 单独的账单
  • 折扣基于此单个项目的用量

多个项目指向同一结算账号:

  • 相同的使用情形
  • 通过汇总使用量来享受折扣层级
  • 单张账单

如需详细了解结算账号和其他相关信息,请点击此链接

如上所述,一个结算账号可以指向多个项目。如果您有多个项目,则应确定哪些项目将使用我们的移动服务,并将这些项目指向移动结算账号。未关联出行用例的项目应继续指向您目前使用的常规 Google Maps Platform 结算账号。如需获得移动结算账号,您必须与 Google 或通过合作伙伴签署移动交易。您可以在下方查看结算账号在整个架构中的位置以及不同的可能设置:

可能的结算账号设置
可能的结算账号设置

云资源、结算账号和账单生成

在价格方面,Google Maps Platform 提供不同的折扣层级,您可以通过 Google 地图合作伙伴获得折扣,在某些情况下也可以直接向 Google 申请折扣。这些层级是基于用量的,因此您使用我们产品的越多,支付的费用就越少(折扣会单独应用于每个 SKU)。我们的结算系统会根据您用于调用我们产品的凭据(对于某些移动 API,可以是 API 密钥或服务账号)来识别您的项目:

API 密钥

Google Maps Platform API 使用 API 密钥进行身份验证。Google 会根据此 API 密钥识别相应 Google Cloud 项目的结算账号,并在此结算账号中记录消费情况。

Geocoding API 发出的请求示例

https://maps.googleapis.com/maps/api/geocode/json?place_id=ChIJeRpOeF67j4AR9ydy_PIzPuM&key=YOUR_API_KEY

JWT

某些 API 需要在网址中提供 Google Cloud 项目 ID,并使用 JWT 进行身份验证。因此,请务必确保正确的系统使用正确的身份验证方法,以确保结算正常进行。

针对 Fleet Engine API 的请求示例

curl -X GET \ https://fleetengine.googleapis.com/v1/providers/project_id/deliveryVehicles/vehicle-1234 \
  -H 'authorization: Bearer eyJ0eXAiOi...' \
  -H 'cache-control: no-cache' \
  -H 'content-type: application/json' \
  -d '{
    "lastLocation": {
        "location": {
            "latitude": 37.432,
            "longitude": -122.094
        },
        "updateTime": "2022-11-13T17:55:00Z"
    }
}'

费用

在 Google Maps Platform 上,费用是根据 API 请求量计算的。对于 Mobility 服务,我们根据可结算的移动交易量收费,这些交易是指成功完成的行程或任务(发货,而非取货)。此期限是在签署合同之前确定的。如果您是网约车或外卖公司,完成行程或送餐就是您的成功指标,这对应于 Trip任务适用于必须成功递送包裹的物流公司和零售商。

我们知道,出行和配送客户在执行行程和配送任务时也会使用 Google Maps Platform 产品。因此,如果您使用的是移动结算账号,只要在同一移动应用场景中遵守预定义的限额,就可以免费调用 Google Maps Platform。

举例来说,如果您是一家外卖公司,那么每成功完成一次行程,您就可以调用 Geocoding API 10 次。如需详细了解这些限制,请参阅移动性文档中的使用限制。如需更改上限,您需要修订合同,因此请与您的 Google 或合作伙伴代表合作,讨论您的具体需求。

在月末,系统会根据以下因素生成账单:(i) 系统中报告的成功行程或任务数量;(ii) 超出预先设定的限制的任何 Google Maps Platform API 调用量(“超额”)。我们的限值与我们在市场上普遍看到的所需限值保持一致。

建议您仔细阅读官方移动结算文档,点击此处即可查看。

小规模测试和评估

客户可以在签署合同之前,在 Google Maps Platform 结算账号上试运行小规模的移动服务(概念验证、评估),但时间有限。如果您想开展试点,请与您的 Google 地图合作伙伴或 Google 对口人员联系。

如上所述,在小规模测试阶段,由于合同尚未签署,因此没有移动结算账号。这意味着,只要使用 Google Maps Platform 产品,就会产生费用,但使用出行专用产品不会产生费用。 换句话说,这意味着在小规模测试阶段,结算不是基于任务或行程的,因此,使用限制在此阶段不适用。

一旦正式发布到生产环境,就必须按照合同付费。

总结:

  • 试用 / 开发阶段:您只需为公开提供的 Google 地图 API 付费。在项目中使用移动结算账号之前,非公开提供的 API 和 SDK 不会产生费用。请注意,Google 会为创建的每个新结算账号提供每个 Google Maps Platform SKU 的免费用量。在评估期间,这应该足以满足受控环境的需求。

  • 生产阶段:您需要按行程或任务付费。只有当用量超出合同规定的用量限额(“上限”)时,才会产生与 Google Maps Platform 相关的费用。如果是,您将需要支付超额费用。超额使用费的收取方式如此处所述。

如何迁移到移动结算账号

迁移到生产环境时,您通常需要创建额外的 Google Cloud 项目来表示不同的环境,例如 QA(质量保证)和生产环境。在此之前,您可能只有一个环境,即开发环境。

要求

您这一方的人员,可以:

  1. 管理 Google Cloud 上的结算账号,通常由 Billing Account Administrator 或 Project Owner 完成。
  2. 访问在合同签署后生成的欢迎信函中包含的新结算账号 ID。
  3. 可访问与生产环境对应的 Google Cloud 项目,在该环境中将报告行程或任务。

按照以下步骤设置新项目并为其配置结算。

新项目设置

项目创建

  1. [您] 在 Google Cloud 控制台中为每个新环境创建一个新的 Google Cloud 项目。例如,生产、预演和质量保证。
  2. [合作伙伴或 Google 团队] 将新项目添加到许可名单,以便访问移动产品。与 Google 或合作伙伴的销售代表合作,并提供在上一步中创建的项目 ID。
  3. [您] 更新项目中的重要联系人。此步骤非常重要,可确保 Google 支持团队在需要时能够联系到您项目的相关人员。

项目配置

在 Google Cloud 控制台中,针对上一步中创建的项目完成以下步骤:

  1. [您] 创建服务账号,包括关联正确的移动设备身份和访问管理 (IAM) 角色(基于行程基于任务

    • 如在开发环境中那样,或者根据需要更结构化地隔离访问权限 - 请参阅此部分。
  2. [您] 创建 API 密钥 - 就像在开发环境中一样,或者根据需要更结构化地隔离访问权限(例如按产品、网域等)。

  3. [您] 启用“本地行程和送货”等 API 以及其他所需的 Google Maps Platform API(即地理编码、自动填充、地址验证)。

  4. [您] 配额:如果您需要提升特定 API 的 QPM(每分钟查询次数),请开立工单以寻求支持。点击此处了解具体操作方法。 您必须添加业务理由,说明为何需要提升。如需查看预定义配额,请点击此处

  5. [您] 如果您开发的系统之前使用的是开发环境中的凭据,请确保这些系统能够指向为新创建的项目创建的新凭据。这包括将后端和前端系统指向新的凭据(例如 API 密钥、服务账号),并确保在每个相应环境中使用正确的项目 ID。

结算配置

在此,我们假设您已直接(如适用)或通过合作伙伴与 Google 签署合同。这是在欢迎信中收到移动结算账号的前提条件,该账号将在后续步骤中使用。

  1. [您] 验证是否已收到移动结算账号 ID,该 ID 会随欢迎信一起发送,欢迎信由 Google 在合同签署并执行后通过电子邮件发送。重要提示:欢迎信会发送给合同订单表单中指定的 技术联系人和财务联系人。 与项目团队合作,了解谁可能收到了该电子邮件,并让对方提供结算账号 ID,该 ID 是一系列以连字符分隔的字符和数字。
  2. [您] 与 Google 或合作伙伴合作,确保执行结算验证 - 这意味着您的系统已正确向 Google 报告行程或任务。如需了解详情,请参阅下一部分。
  3. [您] 使用 Cloud 控制台将 Google Cloud 项目指向新的结算账号 - 请参阅本文档中后面的结算账号配置部分。

如需详细了解一般结算信息,请点击此处此处

结算验证

结算验证非常重要,可确保您获得正确的结算金额。 有时,公司可能会因意外错误地实现 API 而导致费用增加或报告不足。

结算验证包括以下步骤:

  1. 验证对 Google Maps Platform API 的请求是否在请求标头中包含 tripId(或 taskId)- 详情请参阅此处

  2. 验证行程(或任务)是否已正确报告。这取决于所使用的移动套餐

    • Mobility Starter 和 Optimize 或 Accelerate(基于行程):需要与 ReportBillableEvent API 集成。这意味着,每次成功完成行程后,都必须向此 API 发出请求。如需验证此情况是否正常发生,您必须按照此处所述的步骤操作。
    • Mobility Accelerate(基于任务):结算不一定需要通过 API 调用来触发。当交付任务的任务结果设置为 SUCCEEDED 时,系统会自动执行此操作。因此,请务必将任务结果正确设置为 FAILED 或 SUCCEEDED。客户工程师(合作伙伴或 Google)将与您一起验证实施是否正确完成。通过 Cloud Logging,您可以运行以下 Cloud Logging 查询来验证任务是否已正确更新:
    resource.type="fleetengine.googleapis.com/DeliveryFleet"
    jsonPayload.@type="type.googleapis.com/maps.fleetengine.delivery.log.v1.UpdateTaskLog"
    jsonPayload.request.task.taskOutcome="TASK_OUTCOME_LOG_SUCCEEDED"
    jsonPayload.response.type="TASK_TYPE_LOG_DELIVERY"
    

    如果显示条目,则表示您的后端系统正在正确地将任务设置为 SUCCEEDED。

    注意:不过,请务必检查实际成功完成的行程或任务数量是否与报告的通话次数相符。有时,我们会发现系统报告了结算事件,但这些事件与实际完成的行程或任务总数不符(报告不足)。

集成健康状况

成功迁移到生产环境不仅应保证结算正常运作,还应保证 API 不会执行失败。对于出行服务,请务必验证是否已正确实现与 Fleet Engine(本地行程和配送 API)的集成。

为此,您可以打开 Cloud Logging 并使用以下查询:

jsonPayload.errorResponse.code:*

此命令应列出所有存在问题的日志条目。例如:

使用 Cloud Logging 查询错误
使用 Cloud Logging 查询错误

这些问题可以导出到其他 Cloud 产品(如 BigQuery)。 您可以根据 Cloud Logging 查询配置指标提醒

根据 Cloud Logging 查询创建指标
根据 Cloud Logging 查询创建指标

由于这些是 Google Cloud 产品,因此可能会产生额外费用。您可以与合作伙伴或 Google 代表联系,以了解更多信息。

结算账号配置

如果您的所有系统现在都能正确报告行程或任务,并且不存在集成错误,那么现在就可以将您的项目指向您在欢迎信中收到的结算账号(本文档的先前部分已介绍过该账号)。

注意:如果您与 Google 地图合作伙伴合作,他们可以在此阶段为您提供帮助,您无需单独按照以下步骤操作。如果您直接与 Google 合作(这在某些地区是可行的),可以按照以下步骤操作:

为此,请执行以下操作:

  1. 打开 Google Cloud 控制台 (https://console.cloud.google.com)。
  2. 选择将在生产环境中使用的新项目。
  3. 前往相应项目的“结算”部分。您也可以通过以下链接访问结算页面:https://console.cloud.google.com/billing
  4. 结算 > 点击“管理结算账号”:
    多个结算账号
    您的项目可能与上图有所不同。
  5. 在“结算”页面上,点击已创建的某个生产项目旁边的三点状图标 打开更多详情,然后选择“更改结算账号”:
    选择项目
  6. 结算 > 在“结算账号”中,从下拉列表中选择您在欢迎信中收到的结算账号代码。然后,点击“设置账号”:
    选择项目
  7. 项目将与新的结算账号相关联:
    选择正确的结算账号
    重要提示:从现在开始,此项目中报告的所有行程或任务都将按照之前的说明进行结算。如果尚未进行结算验证,请暂时不要关联结算账号。
  8. 添加新的结算方式后,请前往“概览 > 结算概览”和“结算设置”,确认相关信息是否正确。如需详细了解如何更新结算和付款信息,请点击此链接。如果您遇到任何与结算相关的问题,请提交结算 支持服务工单,或与您的合作伙伴或 Google 代表联系。

结算报告

结算报告可帮助您了解与已关联到项目的结算账号相关的费用。

注意:如果您与 Google 地图合作伙伴合作,请与他们合作,确保您获得所需的相应结算信息。

打开项目的关联结算账号,然后选择“报告”。然后,您可以使用以下一组过滤条件:

结算报告过滤条件
结算报告过滤条件

这里要记住的主要设置是按 SKU 进行分组的过滤条件,该过滤条件将显示有关 Trips 和 Tasks 以及其他 API(如果使用)的详细信息,包括是否存在超额使用情况,如前所述:

结算报告过滤条件
项目中使用的产品示例

报告信息每天刷新一次。如果需要了解日内信息,可以使用 Cloud Logging 查询来查看当天发生了多少个可结算事件。请参阅前面的部分。

磨合期方案

需要重点提及的是您的启动计划。根据业务性质,并非所有流量都会迁移到移动项目。例如,有些公司需要一段时间才能将新解决方案推广到所有分公司、加盟店、商店、办事处等,这意味着部分流量将使用旧系统,而部分流量将流向新项目。

此外,在许多情况下,并非所有流量都属于移动用例,例如实体店定位器、路边自提和其他内部解决方案。这些应指向 Google Maps Platform 结算账号,因为此处的流量应与移动结算账号分开。

请务必遵守《实施政策》:

  • 基于行程的模型 -“按需乘车和送货解决方案旨在用于按需商业乘车和送货服务。此类服务通常包括 (a) 向指定目的地提交乘车(或特定物品送达)请求的消费者,以及 (b) 与请求匹配并驾驶车辆完成服务的司机。”
  • 基于任务的模型 -“Google Maps Platform 最后一公里车队解决方案旨在用于商业最后一公里配送和第一公里取货服务。此类服务通常包括:(a) 客户自有或承包的配送车辆,(b) 基于预先规划的路线进行的配送,(c) 配送中心网络(包含支持配送执行的运营团队),以及 (d) 跟踪并接收货件的消费者。”

因此,您应了解哪些系统应指向 Google Maps Platform 结算账号,哪些系统应指向出行结算账号。通常情况下,您会有多个项目,并且每个项目都指向正确的结算账号。

举例来说,假设根据使用限制,每个行程 / 任务今天都包含 10 个地理编码请求。如果迁移需要几个月的时间,并且您在第一个月开始报告 10 万次行程 / 任务,这意味着您可能会调用地理编码 API 100 万次。但如果您的商家有 500 万个地理编码请求,那么这 400 万个差额可能会被报告为超额。这里有两种可能的选择:

  1. 您向我们报告的行程 / 任务数量增加(加快了增量计划),因此适用更高的限额,在这种情况下,您需要每月报告 50 万次行程 / 任务。
  2. 您可以在合同协商期间协商更高的限额,如前所述。
  3. 您将 Geocoding API 请求指向 Google Maps Platform API,以便享受更高的折扣层级,并以比超额使用费更低的费用付费。

我们知道,根据业务规模和复杂程度以及用例来估算费用可能很复杂,请与您的合作伙伴或 Google 对口人员合作,确定使用现有项目为正式版发布做好准备的最佳方式。

总而言之,若要制定合理的升温计划,需要执行以下步骤:1. 根据实施政策,确定哪些用例与移动性相关,哪些不相关。2. 确定目前哪些 Google Maps Platform API 用于相关用例,以及这些 API 的使用量。3. 确定在实施移动解决方案后是否仍需要 Google Maps Platform API - 例如,Fleet Engine 会自动计算预计到达时间,您可能不再需要使用 Directions API 来计算。4. 确定完全将移动用例迁移到您这边的新移动平台需要多长时间。5. 仔细检查使用限额是否足以支持您的使用情形。6. 确定所有 Google Maps Platform 请求何时可以纳入出行结算账号,以用于出行使用情形。

总结

总而言之,正确配置结算账号对于价格可预测性和透明度至关重要。通过使用我们集成了出色位置服务的移动技术,公司可以放心地确保其结算流程准确高效。这不仅有助于降低成本,还能提供做出明智业务决策所需的数据和洞见。此外,此类系统提供的透明度可让公司清楚了解自己的支出,从而更好地管理预算。

后续操作