注册和登录

借助会员注册和登录功能,用户可以搜索您的会员卡,并通过 Google Pay 加入或登录他们的帐号。系统会将用户转到您的适合移动设备浏览的网站以完成此流程,之后他们就能轻松将卡保存到 Google Pay。

本指南概述了要为您的会员卡启用此功能所需的实施步骤。

概览

首先,请确保您之前已设置好项目并可以访问 Google Pay API for Passes。如果尚未完成以上设置,请按照链接和网页按钮中的说明操作。

您必须按照以下三个步骤来为您的会员卡实现注册和登录功能:

  1. 开发可利用 Google Pay 用户数据的注册/登录页面。
  2. 在注册/登录后将会员卡推回 Google Pay。
  3. 请求验证和激活。

确定注册和登录网址、会员卡徽标和所需的用户字段,然后,使用 loyaltyclass 中的 discoverableProgram 嵌套字段来设置适当的值。

discoverableProgram 中设置值时将会为您已启用注册/登录功能的会员卡创建草稿版本,仅有权访问您的 Google Pay API for Passes Merchant Center 的用户可看到该版本。这样,您就可以在开发过程中验证实现的正确功能。

开发可利用 Google Pay 用户数据的注册和登录页面。

当用户选择登录或注册您的会员卡时,系统会将他们转到您网站上的定制网页以完成注册或登录流程。如果用户选择注册,Google Pay 会要求用户批准与您共享其用户数据。

您需要提供两个页面,以便用户完成这些操作。

  1. 用户可登录现有帐号的登录网址。
  2. 用户可创建新帐号的注册网址。

您的登录和注册页面必须符合以下要求:

  • 提供适合移动设备的用户体验。
  • 在注册流程中尽量减少必填字段的数量。
  • 允许用户在一个页面内完成登录或注册。
  • 同时使用 HTTPS 加密与有效证书,确保安全地传输用户数据。
  • 确保登录和注册页面的正常运行时间至少达到 99.9%。

除上述要求外,我们还建议您允许用户在注册您的会员卡时无需填写任何表单或保留页面(只是为了让用户接受您的服务条款)。

  • 通过利用提供的用户数据,您可以创建一个帐号并立即推回他们的会员卡。
  • 您随后可以通过电子邮件向用户发送一次性密码,或用于配置其密码和可选帐号详情的链接。
  • 此举有助于减少用户放弃注册流程的概率,因为每增加一个步骤都可能会导致用户放弃注册。

在显示登录或注册页面时,Google Pay 会创建一个 Android WebView,并对您提供的网址发出一个 POST 请求。用户数据在参数 userProfile 中提供,该参数包含在使用 application/x-www-form-urlencoded 内容类型和 UTF-8 编码的 POST 请求中。userProfile 参数的值是 Base64 编码的 JSON 对象。

根据用户选择的操作以及您已指定要向用户请求的字段,JSON 对象可能包含以下字段。

字段 注册 登录
电子邮件地址
名字  
姓氏  
地址栏 [1-3]  
城市  
 
邮编  
国家/地区  
电话  

请参阅以下 userProfile 中包含的已解码 JSON 对象示例。

资源

{
  "firstName": "Jane",
  "lastName": "Doe",
  "addressLine1": "1600 Amphitheatre Pkwy",
  "addressLine2": "Apt 123",
  "addressLine3": "Attn:Jane",
  "city": "Mountain View",
  "state": "CA",
  "zipcode": "94043",
  "country": "US",
  "email": "jane.doe@example.com",
  "phone": "555-555-5555"
}

立即将会员卡推回 Google Pay

完成身份验证(登录)或创建帐号(注册)后,您的网页应立即将用户的会员卡推回 Google Pay。

您可以通过重定向至遵循以下结构的链接,将会员卡推回 Google Pay。如果您还不熟悉如何为表示用户会员卡的 LoyaltyObject 生成 JSON 网络令牌 (JWT),请参阅为 LoyaltyObject 生成 JWT

https://www.android.com/payapp/savetoandroidpay/{jwt_generated}

网址的安全长度为 2000 个字符。您的链接应低于此限制。编码到 JWT 中的对象要小,只包含用户专属数据。尽量将大部分数据放入对象的类中,而且应在生成 JWT 之前创建类。对于不符合长度限制的较大对象,请考虑先在 Google Pay API for Passes 中创建对象,并且只将对象 ID 发送到 JWT。

典型的通信流程

完成注册或登录的用户的通信流程如下图所示。“您的服务器”之间的所有操作都由您负责实现。

请求验证和激活

如果您在开发工作期间还没有执行此操作,请提交注册表单以提供您的登录和注册网址、会员卡徽标以及您希望向用户请求的所需字段。

我们收到您的详细信息后,我们的支持团队会为您已启用注册/登录功能的会员卡创建草稿版本,仅有权访问您的 Google Pay API for Passes Merchant Center 且已在注册表单中作为测试人员 Gmail 帐号列入白名单的用户才能看到该版本。

在使用我们的支持团队启用的草稿版本验证完要实现的功能后,您就可以通过回复我们的支持团队发送给您的电子邮件来请求对您的实现进行最终验证了。

在对您的实现进行全面审核以确认与 Google Pay 应用结合使用的正确功能后,我们就会为您的会员卡公开推出会员注册/登录功能。这将允许任何用户查看该活动并使用此功能。

为了确保最佳的用户体验,我们会定期检查您的注册/登录实现情况,以确保始终符合功能要求。如果出现差异,系统会通知您,并可能会停用登录/注册功能,直到问题得到解决为止。

常见问题解答

  • 我的会员卡中使用的图片是否需满足任何要求?
    • 是的,您的图片应托管在 HTTPS 位置,否则将无法在 Google Pay 中显示。
  • 是否有任何工具可以简化 JWT 的实施和调试?
    • 是的,诸如 www.jwt.io 之类的平台允许您在开发流程中解码和调试令牌,从而验证您要提交的内容。请注意,Google 没有任何关联公司,也不会特别推荐任何此类第三方。
  • 我们如何正确处理 Base64 编码的 userProfile 数据?
    • 确保您在整个流程中使用的是 UTF-8 编码。JSON 字符串会先进行 UTF-8 编码,然后使用 android.util.Base64(包含 NO_WRAP 和 URL_SAFE 选项)进行编码。这与 RFC 3548 第 4 节相对应。

示例注册流程