选择以下一种卡券类别可详细了解其使用方式。
借助 Google Pay API for Passes,您可以通过礼品卡与用户互动。通过本指南中讨论的概念,您可以更好地了解已保存的礼品卡的功能。
以下用例仅适用于礼品卡类别:
更新卡券
如果卡券在创建后发生了变化,请使用 REST API 将这些变化传达给用户。如果这些变化仅影响类型,您还可以使用 Google Pay Merchant Center。卡券更新是与用户互动的重要途径。
要更新卡券的显示方式,例如徽标发生更改时,您只需要 update
或 patch
GiftCardClass
,或者使用 Google Pay Merchant Center。Google 会将此信息传播到与已更新的 GiftCardClass
关联的所有 GiftCardObject
。在 GiftCardClass
级别定义的所有字段就属于这种情况。
要更新单个卡券(例如礼品卡余额发生变化时),您需要 update
或 patch
单个 GiftCardObject
。在 GiftCardObject
级别定义的所有字段就属于这种情况。
有时,您可能不知道何时会发生变化,或何时会触发 update
或 patch
请求。在这种情况下,您可以安排定期针对每个类和对象发出 update
或 patch
请求。如果您调用 GiftCardClass
list
方法,则可以找到特定发卡机构帐号的所有类。如果您调用 GiftCardObject
list
方法,则可以找到特定类的所有对象。
在 Google Pay 应用中扫描
用户可以通过扫描或手动添加礼品卡详细信息,将礼品卡添加到其 Google Pay 应用中。Google Pay API for Passes 会创建一个 GiftCardObject
,它不会引用您之前定义的 GiftCardClass
。您无需执行任何操作即可创建新的对象或类。
不过,Google Pay API for Passes 所创建的 GiftCardObject
无法更新,其行为类似于静态卡券。
地理围栏通知
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://developers-dot-devsite-v2-prod.appspot.com/static/pay/passes/images/geofenced-notification-example.png?authuser=19&hl=zh-cn)
要确保地理围栏通知生效,用户必须在 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 } } } } … … … }