借助会员注册和登录功能,用户可以搜索您的会员卡,并通过 Google 钱包加入或登录他们的帐号。系统会将用户定向到您的适合移动设备的网站以完成此流程,之后他们就可以将自己的卡添加到 Google 钱包中。
本指南简要介绍了为您的会员回馈活动启用此功能所需的实现步骤。
概览
首先,请确保您之前已设置项目并可以访问 Google Wallet API。
您必须按照以下四个步骤为您的会员卡实现注册和登录功能:
- 在 Google 钱包中设置一个测试类,用于测试您的注册/登录流程。
- 开发使用 Google 钱包的注册/登录页面
SharedDataType
。 - 实现在注册/登录后将会员卡推回 Google 钱包。
- 请求验证和激活。
在 Google 钱包中设置测试类
确定注册和登录网址、您的计划徽标和选定的用户字段。然后,使用 loyaltyclass
中的 discoverableProgram
嵌套字段设置适当的值。
在 discoverableProgram
中设置值,以便为已启用注册/登录功能的会员卡创建草稿版本。为确保测试人员可以看到此信息,请验证测试人员是否有权访问您的 Google Pay 和钱包控制台。如需详细了解如何与他人分享您的 Google Pay 和钱包控制台的访问权限,请参阅了解“用户”页面。
如需在开发过程中完成对实现功能的验证,请使用 Google Pay 和钱包控制台中的“与支持团队联系”微件与我们联系。在控制台中,选择主题中的 Google Wallet API,然后在子主题中选择会员登录/注册。
开发使用 Google 钱包用户数据的注册和登录页面
当用户选择登录或注册您的会员回馈活动时,系统会将他们定向到您网站上的定制页面,以便完成注册或登录流程。如果用户选择注册,Google 钱包会请求用户批准与您共享其用户数据。
您需要提供两个页面中的一个或两个,以便用户完成这些操作。
- 一个登录网址,用户可通过该网址登录现有账号。
- 用户可创建新帐号的注册网址。
您的登录和注册页面必须满足以下要求:
- 提供适合移动设备的用户体验。
- 在注册过程中尽量减少必填字段的数量。
- 允许用户在一个页面中完成登录或注册。
- 结合使用
HTTPS
加密与有效证书,确保安全地传输用户数据。 - 确保登录和注册页面的正常运行时间至少达到 99.9%。
除上述要求外,我们还建议您允许用户在注册会员回馈活动时无需填写任何表单或保留页面,只是为了接受您的服务条款。
- 通过利用
SharedDataType
中提供的用户数据,您可以创建一个帐号并立即推回他们的会员卡。 - 您随后可以通过电子邮件向用户发送动态密码,或用于配置用户密码和可选帐号详情的链接。
- 这样可以降低用户放弃注册流程的可能性,因为每增加一个步骤都可能会导致用户放弃注册。
在显示登录或注册页面时,Google 钱包会创建一个 Android WebView,并向您提供的网址发出 POST
请求。用户数据在参数 SharedDataType
中提供,该参数包含在使用
application/x-www-form-urlencoded 内容类型和 UTF-8
编码的 POST
请求中。SharedDataType
参数的值是一个 Base64 编码的 JSON 对象。
根据用户选择的操作以及您指定要向用户请求的字段,JSON 对象可能包含以下字段。
Field | 注册 |
---|---|
电子邮件地址 | ✓ |
firstName | ✓ |
lastName | ✓ |
addressLine [1-3] | ✓ |
city | ✓ |
state | ✓ |
zipcode | ✓ |
country | ✓ |
电话 | ✓ |
请参阅以下 SharedDataType
中包含的已解码 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 钱包
完成身份验证(登录)或创建帐号(注册)后,您的网页应立即将用户的会员卡推回 Google 钱包。
您可以通过重定向到遵循以下结构的链接,将会员卡推回 Google 钱包。
https://pay.google.com/gp/v/save/{jwt_generated}
网址的安全长度为 2000 个字符。您的链接应低于此限制。编码到 JWT 中的对象要小,只包含用户专属数据。尽量将大部分数据放入对象的类中,而且应在生成 JWT 之前创建类。对于不符合长度限制的较大对象,请考虑先在 Google Wallet API 中创建对象,并且仅在 JWT 中发送对象 ID。
典型的通信流程
完成注册或登录的用户的通信流程如下图所示。“您的服务器”之间的所有操作都由您负责实现。
请求验证和激活
完成开发工作并测试注册/登录流程后,请通过 Google Pay 和钱包控制台与支持团队联系 widget 提交申请。
在对您的实现进行全面审核,确认与 Google 钱包应用结合使用的正确功能后,我们将为您的会员回馈活动公开发布会员注册/登录功能。这将允许任何用户查看该活动并使用此功能。
为了确保最佳的用户体验,我们会定期检查您的注册/登录实现,以确保始终符合功能要求。如果出现差异,系统会通知您,并可能会停用登录/注册功能,直到问题得到解决。
常见问题解答
- 我的会员回馈活动中使用的图片是否有任何要求?
- 是的,您的图片应托管在
HTTPS
位置,否则将无法在 Google 钱包中显示。
- 是的,您的图片应托管在
- 是否有任何工具可以简化 JWT 的实现和调试?
- 是的,诸如 www.jwt.io 之类的平台允许您在开发过程中解码和调试令牌,从而验证您要提交的内容。请注意,Google 没有任何关联,也不会特别推荐任何此类第三方。
- 我们如何正确处理 Base64 编码的 SharedDataType 数据?
- 确保在整个过程中都使用 UTF-8 编码。JSON 字符串会先进行 UTF-8 编码,然后使用 android.util.Base64(包含 NO_WRAP 和 网址_SAFE 选项)进行编码。这与 RFC 3548 第 4 节相对应。