获取 REST API 的访问权限

借助 Google Pay API for Passes,您可以在 Google Pay 应用中添加和管理会员卡、礼品卡、优惠、活动门票、登机牌和公交卡。请先注册您的项目,然后将其连接到 Google Pay API for Passes Merchant Center,最后针对 OAuth 2.0 设置您的 Web 服务。

1.注册

注册 Google Pay API for Passses,获取访问权限。在您提交表单后,支持团队将与您联系,以验证您的用例并创建您的 Google Pay API for Passes 帐号。

2. 注册应用

所有访问 Google API 的应用均须通过 API 控制台进行注册。注册后,您将获得仅对 Google 和您的应用公开的一组值(客户端 ID、电子邮件地址和私钥)。当我们的团队为您创建 Google Pay API for Passes 帐号时,您可以按以下步骤操作。要注册您的应用,请按以下步骤操作:

  1. 注册 Google Pay API for Passses,获取访问权限。如果您已经注册,则可跳过此步骤。
  2. 访问 API 控制台
  3. 点击新建项目按钮,或从页面顶部的下拉菜单中选择新建项目。系统会显示“新建项目”页面。
  4. 输入项目名称。
  5. 点击创建。配置完成后,右上角会显示一则通知。点击此通知,进入项目主页。
  6. 点击转到 API 概览。然后,点击启用 API 和服务
  7. 搜索 Google Pay Passes API,然后点击启用
  8. 点击左侧菜单中的凭据
  9. 点击创建凭据按钮,然后选择服务帐号密钥
  10. 在页面上创建您的服务帐号密钥,您可能还需要在其中创建服务帐号。此服务帐号不需要其他角色。选择 json 作为密钥类型,然后点击创建
  11. 新的服务帐号随即添加至您的帐号列表,私钥亦下载到您的本地文件系统。这是此密钥的唯一副本,请您妥善保存此密钥文件。稍后您将使用此密钥。
  12. 复制密钥的服务帐号电子邮件地址,通过点击“凭据”标签页中的管理服务帐号,找到该电子邮件地址。稍后您将使用此电子邮件地址。

警告:无论是在开发环境,还是生产环境,您都必须妥善存储和管理您的私钥。Google 仅存储公钥的副本。 如需详细了解如何管理服务帐号私钥,请点击此处

3. 将您的服务帐号与 Google Pay API for Passses 帐号进行绑定

Google Pay API for Passes Merchant Center 是一个网站,可用于管理您的帐号及所有关联的类和对象。在我们的支持团队为您创建 Google Pay API for Passes 帐号后,请按照以下步骤将您的服务帐号电子邮件地址与新帐号关联:

  1. 访问 Google Pay API for Passes Merchant Center
  2. 从列表中选择您的帐号。系统会显示“帐号信息”(Account Info) 页面。
  3. 点击共享 (Share)。系统会显示“共享”(Share) 设置。
  4. 注册应用部分,复制密钥的服务帐号电子邮件地址(以 @<your_domain>.iam.gserviceaccount.com 结尾),并将其粘贴到 Invite people 字段中。
  5. 确保将权限下拉列表设置为可修改 (can edit),然后点击发送 (Send)。您的服务帐号现已与您的 Google Pay API for Passses 帐号绑定。您现在可以对 API 进行 REST 调用。

4.将 OAuth 2.0 用于服务器到服务器应用

Google OAuth 2.0 授权服务器支持服务器到服务器的互动,例如网络应用和 Google Cloud Storage 之间的服务器到服务器互动。发出请求的应用需在无任何最终用户参与的情况下证明其具备访问 API 的身份。

您需要获取访问令牌以授权您的 API 请求。我们强烈建议您使用客户端库简化此流程。

使用库创建服务帐号凭据

以下标签页显示了使用不同语言创建服务帐号凭据的示例代码:

Java

GoogleCredential credential = new GoogleCredential.Builder().setTransport(httpTransport)
  .setJsonFactory(jsonFactory)
  .setServiceAccountId("ServiceAccountEmail@developer.gserviceaccount.com")
  .setServiceAccountScopes("https://www.googleapis.com/auth/wallet_object.issuer")
  .setServiceAccountPrivateKey(new File("/example/path/to/privatekey.json"))
  .build();

PHP

$client = new Google_Client();
$client->setApplicationName('Wallet Objects App');
$client->setScopes(array('https://www.googleapis.com/auth/wallet_object.issuer'));
$client->setAuthConfigFile('/example/path/to/privatekey.json');

Python

file_path = '/example/path/to/privatekey.json'
credentials = ServiceAccountCredentials.from_json_keyfile_name(
    file_path,
    'https://www.googleapis.com/auth/wallet_object.issuer')

http = httplib2.Http()
http = credentials.authorize(http)

当您执行 REST API 命令(例如插入类)时,将使用生成的凭据。

手动获取访问令牌

要手动获取访问令牌,请参阅将 OAuth 2.0 用于服务器到服务器应用。您需要创建 JSON 网络令牌 (JWT),并使用私钥对其签名,然后以恰当的格式构建访问令牌请求。之后,您的应用会将该令牌请求发送到 Google OAuth 2.0 授权服务器,并获得返回的访问令牌。您的应用只有在收到访问令牌后才能访问 API。若访问令牌过期,您的应用必须重复此过程。

  • JWT 声明集中的 iss 字段需使用服务帐号电子邮件地址,该地址在 Google API 控制台的注册应用部分中生成。
  • JWT 声明集中的 scope 字段列出该应用请求的权限并以空格分隔。
  • 生产应用的有效范围是 https://www.googleapis.com/auth/wallet_object.issuer

完成上述步骤后,请参阅将卡券保存到 Google Pay,了解客户如何轻松地将您网站中的会员卡、礼品卡、优惠、活动门票、登机牌和公交卡保存到 Google Pay。