借助会员注册和登录功能,用户可以搜索您的会员卡,并通过 Google Pay 加入或登录他们的帐号。 系统会将用户转到您的适合移动设备浏览的网站以完成此流程,之后他们就能轻松将卡保存到 Google Pay 了。
本指南简要介绍了为您的会员卡启用此功能时需要执行的实施步骤。
概览
首先,请确保您之前已设置好项目并可以访问 Google Pay API for Passes。如果没有,请按照 Google Pay API for Passes 中的说明操作。
您必须按照以下四个步骤来为您的会员卡实现注册和登录功能:
- 在 Google Pay 中设置测试环境,以便测试您的注册/登录流程。
- 开发可利用 Google Pay 用户数据的注册/登录页面。
- 在注册/登录后将会员卡推回 Google Pay。
- 请求验证和激活。
在 Google Pay 中设置测试环境
确定注册和登录网址、会员卡徽标和所需的用户字段,然后,使用 loyaltyclass
中的 discoverableProgram
嵌套字段来设置适当的值。
在 discoverableProgram
中设置值,为您已启用注册/登录功能的会员卡创建草稿版本。为确保测试人员可以看到此版本,请验证测试人员是否有权访问您的业务控制台。如需详细了解如何与他人共享业务控制台的访问权限,请参阅了解“用户”页面。
如需在开发过程中完成实现功能的验证,请使用业务控制台中的“与支持团队联系”微件与我们联系。在控制台中,选择主题中的卡券,并在子主题中选择会员回馈活动注册/报名。
开发可利用 Google Pay 用户数据的注册和登录页面。
当用户选择登录或注册您的会员卡时,系统会将他们转到您网站上的定制网页以完成注册或登录流程。如果用户选择注册,Google Pay 会要求用户批准与您共享其用户数据。
您需要提供以下两个页面之一或全部,以便用户完成这些操作。
- 用户可登录现有帐号的登录网址。
- 用户可创建新帐号的注册网址。
您的登录和注册页面必须符合以下要求:
- 提供适合移动设备的用户体验。
- 在注册流程中尽量减少必填字段的数量。
- 允许用户在一个页面内完成登录或注册。
- 同时使用
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),请参阅生成代表对象的 JWT。
https://pay.google.com/gp/v/save/{jwt_generated}
网址的安全长度为 2000 个字符。您的链接应低于此限制。编码到 JWT 中的对象要小,只包含用户专属数据。尽量将大部分数据放入对象的类中,而且应在生成 JWT 之前创建类。对于不符合长度限制的较大对象,请考虑先在 Google Pay API for Passes 中创建对象,并且只将对象 ID 发送到 JWT。
典型的通信流程
完成注册或登录的用户的通信流程如下图所示。“您的服务器”之间的所有操作都由您负责实现。
![注册登录流程](https://developers.google.cn/static/pay/passes/images/EnrollmentSigninFlows.png?authuser=5&hl=fr)
请求验证和激活
在完成开发工作并测试注册/登录流程后,请通过商家控制台中的“与支持团队联系”微件提交请求。
在对您的实现进行全面审核以确认与 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 节相对应。
示例注册流程
![会员注册流程](https://developers.google.cn/static/pay/passes/images/loyalty-enrollment-flow.jpg?authuser=5&hl=fr)