用例

本指南概述了您可以使用 Google Pay API for Passes 就“航班”类别涉及的登机牌与客户进行互动的几种方式。您可以使用此 API 为客户提供以下选项:

更新登机牌

如果登机牌保存后发生了变化,您可以使用 UPDATEPATCH REST API 将这些变化传达给乘客。

要更新特定航班的所有登机牌的字段(例如当预计出发时间发生变化时),您只需 UPDATE PATCH FlightClass。Google 会将此信息传播到 Google Pay 应用中保存的 FlightObject,然后将其关联至更新的 FlightClass

要更新一张登机牌(例如当一位乘客的座位号发生变化时),您需要 UPDATEPATCH 一个 FlightObject。Google 会将此信息传播给 Google Pay 应用中保存的该乘客的 FlightObject

有时,您可能不知道何时发生了变化,或要何时触发对 UPDATEPATCH REST API 的调用。在这种情况下,您可以安排定期对每个 FlightClass 和每个 FlightObject 调用 UPDATEPATCH REST API。

航班动态更新的数据来源

如果 class.localScheduledDepartureDateTime 给出的时间是过去 24 小时内的时间或接下来 48 小时内的时间,则系统会向用户显示航班动态卡片。在这种情况下,Google Pay 要么显示 Google 机票提供的数据,要么显示 Google Pay 卡券中给出的信息。使用哪个来源取决于以下情况:

  • 如果您未提供 class.localEstimatedOrActualDepartureDateTime,则系统会将 Google 机票作为数据来源。在这种情况下,系统将忽略您设置的任何 class.flightStatus

    例如,如果航班延迟,用户会在 Google Pay 应用的“首页”标签下看到一张显示新的出发时间的卡片。“卡券”标签下也会显示类似的说明发生延迟的卡片。

  • 如果您提供了 class.localEstimatedOrActualDepartureDateTime,但未提供 class.flightStatus,则所提供的时间将用于确定航班是否发生了延迟。然后,系统会根据以下逻辑通过卡片向用户显示航班动态:
    • 如果 class.localEstimatedOrActualDepartureDateTime 晚于 class.localScheduledDepartureDateTime,则向用户显示说明航班延迟的卡片。
    • 如果 class.localEstimatedOrActualDepartureDateTime 不晚于 class.localScheduledDepartureDateTime,则向用户显示包含航班信息但没有任何动态消息的卡片。

如果您不想使用 Google 机票作为航班信息来源,请务必提供 FlightClassflightStatuslocalScheduledDepartureDateTimelocalEstimatedOrActualDepartureDateTime。这样,卡片上就会仅使用您的数据。另外,如果您在 FlightClass 中使用 ICAO 机场代码,而不是 IATA 代码,则系统不会将 Google 机票用作航班信息来源。

当某些字段发生变化时,用户会收到有关这些变化的推送通知。如需了解详情,请参阅接收航班动态更新通知

保存有多个航段的航程

一个航程往往会包含多个航段,而不是直飞到某人的目的地。在此航程中,航空公司会为每个航段发放一张登机牌。Google Pay API for Passes 也参照了这种方式,为每个航段提供一个 FlightObject

这意味着如果您有两名乘客从 SFO 飞往 LAX,然后飞往 TPE,就会有两个 FlightClass 结构和四个 FlightObject 对象:

  FlightClass A(SFO 到 LAX:航空公司、航班号、出发时间) FlightClass B(LAX 到 TPE:航空公司、航班号、出发时间)
乘客 Q FlightObject: id_01 FlightObject: id_02
乘客 Z FlightObject: id_03 FlightObject: id_04

这些字段反映了实际登机牌的信息。乘客 Q 和乘客 Z 均有两张纸质登机牌。

创建一个按钮以保存多张卡券

如果用户购买了多张卡券,并且他们可能会将所有卡券保存到 Google Pay,那么一种很有用的做法是让用户只需点击一下保存到 Google Pay 按钮或链接,即可保存许多对象。可以在要签名的 JSON Web 令牌(JWT)中定义多个对象或类。

JWT 必须采用以下任一格式:

  • 仅使用预先插入的类和对象。
  • 仅使用完全在 JWT 中定义的对象和类资源。

如需查看如何为多张卡券创建按钮的示例,请参阅保存多名乘客按钮。如需详细了解“卡券”的界面表示,请参阅将多个登机牌归为一组

将多个登机牌归为一组

有些功能在用于一组对象(而非单个对象)时会具有不同的工作方式,例如在界面上为多名乘客保存多个登机牌时的状态通知或组织方式。

FlightObject 对象仅在下列属性全部相同的情况下才能分为一组:

  • 发卡机构 ID(来自 Google Pay API for Passes Merchant Center)
  • class.flightHeader.carrier.carrierIataCode
  • class.flightHeader.flightNumber
  • class.localScheduledDepartureDateTime
  • object.reservationInfo.confirmationCode

如果两个 FlightObject 对象的上述任何属性都不相同,则它们不会分为一组。

处理过期的登机牌

在 Google Pay 应用的“卡券”标签下,有一个“过期卡券”部分,其中包含所有已归档或无效的卡券。如果登机牌至少满足下列一个条件,则系统就会将其移至“过期卡券”部分:

  • 自登机牌的 class.localScheduledDepartureDateTimeclass.localEstimatedOrActualDepartureDateTime 起已过了 24 小时。
  • 登机牌的 object.validTimeInterval.end.date 已过。在 object.validTimeInterval.end.date 后 24 小时内,卡券可随时移至“过期卡券”。
  • FlightObjectstate 字段标记为 ExpiredInactiveCompleted

接收即将出发的航班的通知

Google Pay 会在航班出发前三小时向用户发送通知。航班出发时间由 class.localScheduledDepartureDateTime 确定。

要接收此通知,用户必须启用通知功能。为此,他们需要转至“设置”>“通知”并启用卡券的动态

通知显示在两个位置,即锁定屏幕和通知区域。

锁定屏幕

如果用户设置为在锁定屏幕上显示通知,会收到如下格式的状态通知(该格式不可修改):

Boarding pass for your flight to class.destination.airportIataCode
Expand for more options

如果用户点击通知并解锁设备,Google Pay 应用中会显示他们的卡券。

如果用户有多张卡券,只显示即将可用的卡券。如果他们根据对多个登机牌分组为同一航段保存了多张登机牌,通知仅显示组中的一张登机牌。但是,当用户点击这张登机牌后,他们可以左右滑动以查看该组中的其他登机牌。

用户打开状态通知后,通知不会自动关闭。自动关闭功能将于预计出发时间的 60 分钟后执行。

通知区域

通知显示条形码和其他选项。用户可以点按通知以在 Google Pay 应用中查看卡券。

通知会固定到通知区域。用户打开后通知不会自动关闭。自动关闭功能将于预计出发时间的 60 分钟后执行。

接收航班动态更新通知

当航班的某些字段发生变化时,保存了一张或多张登机牌的用户会通过其设备收到推送通知。仅当满足特定条件时,才会出现这种情况。

出发地航站楼和登机口

如果您更改 class.origin.terminalclass.origin.gate,并且满足以下条件,用户将收到有关字段已更改的通知。

  • 距离 class.localScheduledDepartureDateTime 不到三个小时。

通知的格式如下:“某某航空公司已将登机口更新为 A1”。格式无法更改。

登机时间和起飞时间

如果您更改 class.localBoardingDateTimeclass.localEstimatedOrActualDepartureDateTime,并且满足以下条件,用户将收到有关字段已更改的通知。

  • 距离 class.localScheduledDepartureDateTime 不到 24 个小时。
  • 对应时间变化幅度达到至少 10 分钟或更长时间。

通知的格式如下:“某某航空公司已将登机时间更新为下午 6 点”。格式无法更改。

用户保存某张卡券后,可以通过引用其 objectId 链接到该卡券。

可以使用以下链接来引用卡券:

https://pay.google.com/gp/v/object/{<issuerId>}.{<ObjectId>}

您可以使用 Google Pay 应用或网络浏览器查看卡券。