选择以下一种卡券类别可详细了解其使用方式。
Google Pay API for Passes 让您可以通过提供优惠与用户互动。本指南中介绍的概念可帮助您更好地了解所保存优惠的功能。
以下用例仅适用于优惠类别:
更新卡券
如果卡券在创建后发生了变化,请使用 REST API 将这些变化传达给用户。如果这些变化仅影响类型,您还可以使用 Google Pay Merchant Center。卡券更新是与用户互动的重要途径。
要更新卡券的显示方式,例如徽标发生更改时,您只需要 update
或 patch
OfferClass
,或者使用 Google Pay Merchant Center。Google 会将此信息传播到与已更新的 OfferClass
关联的所有 OfferObject
。在 OfferClass
级别定义的所有字段就属于这种情况。
如需更新单个卡券(例如优惠失效时间发生改变时),您需要 update
或 patch
单个 OfferObject
。在 OfferObject
级别定义的所有字段就属于这种情况。
有时,您可能不知道何时会发生变化,或何时会触发 update
或 patch
请求。在这种情况下,您可以安排定期针对每个类和对象发出 update
或 patch
请求。如果您调用 OfferClass
list
方法,则可以找到特定发卡机构帐号的所有类。如果您调用 OfferObject
list
方法,则可以找到特定类的所有对象。
优惠失效通知
为提醒用户在有效期内使用优惠,系统会在优惠即将失效的 48 小时前触发默认通知。要触发通知,优惠必须符合以下条件:
- 之前从未在用户的设备上触发失效通知。
- 必须在
validTimeInterval.end.date
中设置有效的未来失效时间datetime
。 - 在用户的设备上保存的时间超过 12 小时。
- 可写字段
disableExpirationNotification
不能设置为True
。此字段默认设置为false
。
以下屏幕截图显示了不可修改的默认通知示例:
![](https://google-developers.gonglchuangl.net/static/pay/passes/images/offer-expiration-notification.png?authuser=0&hl=uk)
- 优惠(今天、明天、[x] 天后)失效
class.title
class.titleImage
无法自定义优惠失效通知中的标头。
限制时段
如果将优惠失效通知的显示时段设置为用户当地时间晚上 10 点到早上 6 点之间,此优惠会在此时间段之前或之后显示。
自定义优惠失效通知时间
您可以在 OfferObjects
或 OfferClasses
中使用 message.displayInterval.start.date
字段自定义显示 Offer
失效通知的时间。如果设置了自定义通知时间,触发失效通知的依据为 message.displayInterval.start.date
,而不是按照 validTimeInterval.end.date
计算的默认逻辑。以下是失效通知的自定义时间示例:
{ “message”: { “messageType”: “expirationNotification”, “displayInterval”: { “start”: { “date”: datetime } } } }
displayInterval.start.date
设置了显示通知的时间。最早可以设置为失效日期之前的 30 天。如果指定的时间跨度超过此值,系统将在失效前的第 30 天触发通知。此消息无需标头和正文字段,即使您有提供也不会被使用。
地理围栏通知
Google 可根据消费者与您定义的位置的距离来触发与消费者所保存 Object 相关的通知。
添加地理定位信息的方法有两种:
- 在创建 Google Pay API for Passes Merchant Center 帐号时,将使用 Google 地图中的地理定位信息。
- 通过 REST API 将坐标添加到对象或类中。
如需了解将坐标添加到对象或类的说明,请参阅使用 REST API 添加地理定位信息。
地理围栏概念
借助 Google 地图中的地理定位信息,Google 可通过算法确定用户是否身处该店铺或该区域内。此检测适用于根据 Google Pay API for Passes Merchant Center 帐号开发的所有类和对象。
该算法会考虑 GPS、Wi-Fi、蓝牙、移动、停留时间和其他因素。当确定用户身处指定地点时,地理围栏通知就会被触发。
如果在 Object
中手动指定坐标,则当用户距离坐标 150 米时,会触发地理围栏通知。
地理围栏通知的频率、限制以及用户停用机制
一个用户每天最多可接收四条通知。
如果在地理围栏中有多个保存的对象,则会显示一条不可修改的通知(每个 Google Pay API for Passes Merchant Center 帐号对应一条通知),其中以轮播界面显示不同的对象。对象可在轮播界面中循环显示:
![](https://google-developers.gonglchuangl.net/static/pay/passes/images/geofenced-notification-example.png?authuser=0&hl=uk)
要确保地理围栏通知生效,用户必须在 Google Pay 应用的通知设置中启用“关于您的内容的动态更新”,并且必须在其设备上开启定位服务。
使用 REST API 添加地理定位信息
您可以在类或对象中指定一组位置(即纬度和经度)。 Google 会对照与某个类或对象关联的位置列表查看用户当前的地理定位,并在用户距离其中某个位置 150 米以内时通知用户。以下代码示例展示了如何在您的类或对象中指定位置:
资源
{ ... //Class or Object content "locations": [{ "kind": "walletobjects#latLongPoint", "latitude": 37.422087, "longitude": -161446 }, { "kind": "walletobjects#latLongPoint", "latitude": 37.429379, "longitude": -121.12272999999999 }, { "kind": "walletobjects#latLongPoint", "latitude": 37.333646, "longitude": -122.884853 }] }
Java
List<LatLongPoint> locations = new ArrayList<LatLongPoint>(); locations.add(new LatLongPoint().setLatitude(37.422087).setLongitude( -122.161446)); locations.add(new LatLongPoint().setLatitude(37.429379).setLongitude( -121.12272999999999)); locations.add(new LatLongPoint().setLatitude(37.333646).setLongitude( -122.884853)); yourClassOrObject.setLocations(locations);
PHP
$locations = array( array( 'kind' => 'walletobjects#latLongPoint', 'latitude' => 37.442087, 'longitude' => -122.161446 ), array( 'kind' => 'walletobjects#latLongPoint', 'latitude' => 37.429379, 'longitude' => -122.12272999999999 ), array( 'kind' => 'walletobjects#latLongPoint', 'latitude' => 37.333646, 'longitude' => -121.884853 ) );
Python
offer_class_object = { # class or object content 'locations': [{ 'kind': 'walletobjects#latLongPoint', 'latitude': 37.442087, 'longitude': -122.161446 },{ 'kind': 'walletobjects#latLongPoint', 'latitude': 37.429379, 'longitude': -122.12272999999999 },{ 'kind': 'walletobjects#latLongPoint', 'latitude': 37.333646, 'longitude': -121.884853 }] }
处理过期卡券
在 Google Pay 应用的“卡券”标签页下,有一个“过期卡券”部分,其中包含所有已归档或无效的卡券。如果卡券至少满足下列一个条件,系统就会将其移至“过期卡券”部分:
-
object.validTimeInterval.end.date
过期。在object.validTimeInterval.end.date
过期后的 24 小时内,卡券会随时移至“过期卡券”。 object.state
字段标记为Expired
、Inactive
或Completed
。
链接到已保存的卡券
用户保存某张卡券后,可以通过引用其 objectId
链接到该卡券。
可以使用以下链接来引用卡券:
https://pay.google.com/gp/v/object/{<issuerId>}.{<ObjectId>}
您可以使用 Google Pay 应用或网络浏览器查看卡券。
从已保存的 Google Pay 卡券进行链接
您可以链接到已保存的 Google Pay 卡券标题下方的应用或网站。此功能适用于所有类型的 Google Pay 卡券。
请求权限
使用面向店内商家的支持表单申请访问权限。请注意以下几点:
- 您必须在表单中共享您的发卡机构 ID。
- 在“问题类型”下面,选择“技术/API 集成”。
- 选择链接 Google Pay 卡券下方的应用或网站。
在您的 Google Pay 卡券上设置应用链接
对于指定的 Google Pay 卡券,定义 appLinkData
来设置您的应用或网站的 URI。URI 可采用任何格式,但我们建议您使用动态链接。
在下面的源代码中可以查看 appLinkData
字段的格式和上下文:
{ "id": string, "classId": string, … … … "appLinkData": { "androidAppLinkInfo": { "appLogoImage": { "sourceUri": { "uri": string } }, "title": { "defaultValue": { "language": string, "value": string } }, "description": { "defaultValue": { "language": string, "value": string } }, "appTarget": { "targetUri": { "uri": string, "description": string } } } } … … … }