用户礼品卡注册

借助礼品卡注册(登录)功能,用户可以搜索礼品卡并将其添加到 Google 钱包。 系统会将用户转到您的适合移动设备浏览的网站以完成此流程,之后他们就能将卡添加到 Google 钱包。

本指南简要介绍了为您的礼品卡计划启用此功能时需要执行的实施步骤。

概览

首先,请确保您之前已设置好项目并可以访问 Google Wallet API。

您必须按照以下四个步骤来为您的礼品卡计划实现登录功能:

  1. 在 Google 钱包中设置测试类,以便测试您的登录流程。
  2. 开发使用 Google 钱包 SharedDataType 的登录页面。
  3. 在登录后将礼品卡推送到 Google 钱包。
  4. 请求验证和激活。

在 Google 钱包中设置测试类

确定登录网址、会员卡徽标。然后,使用 giftcardclass 中的 discoverableProgram 嵌套字段来设置适当的值。

discoverableProgram 中设置值,为您已启用登录功能的礼品卡计划创建草稿版本。为确保测试人员可以看到此版本,请验证测试人员是否有权访问您的 Google Pay 和钱包控制台。如需详细了解如何与他人共享 Google Pay 和钱包控制台的访问权限,请参阅了解“用户”页面

如需在开发过程中完成实现功能的验证,请使用 Google Pay 和钱包控制台中的“与支持团队联系”微件与我们联系。在控制台中,选择主题中的 Google 钱包 API,并在子主题中选择礼品卡登录

开发使用 Google 钱包用户数据的登录页面

当用户选择添加您的礼品卡时,系统会将他们转到您网站上的定制网页以完成登录流程。

您必须提供一个登录网址,供用户登录现有账号。

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

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

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

立即将礼品卡推送到 Google 钱包

完成身份验证(登录)后,您的网页应立即将用户的礼品卡推回 Google 钱包。

您可以通过重定向至遵循以下结构的链接,将礼品卡推回 Google 钱包

https://pay.google.com/gp/v/save/{jwt_generated}

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

典型的通信流程

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

登录流程

请求验证和激活

在完成开发工作并测试登录流程后,请通过 Google Pay 和钱包控制台中的“与支持团队联系”微件提交请求。

在对您的实现进行全面审核以确认与 Google 钱包应用搭配使用能够正常运行后,我们就会为您的礼品卡计划公开推出礼品卡登录功能。这将允许任何用户查看该活动并使用此功能。

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

常见问题解答

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