取得 REST API 的存取權

有了 Google Pay API for Passes,使用者就能在 Google Pay 應用程式中新增及管理會員卡、儲值卡、優惠、活動票券、登機證和大眾運輸票證。如要開始使用這個 API,請先註冊您的專案、將專案連結至 Google Pay API for Passes Merchant Center,然後針對 OAuth 2.0 設定網路服務。

1. 申請

申請取得 Google Pay API for Passes 的存取權。提交表單之後,支援團隊會與您聯絡來確認用途,並為您建立 Google Pay API for Passes 帳戶。

2. 註冊應用程式

凡是要存取 Google API 的應用程式,都必須透過 API 控制台註冊。完成這項註冊程序即可取得一組值,只有 Google 和您的應用程式可以存取這些資訊 (包含用戶端 ID、電子郵件地址和私密金鑰)。在 Google Pay API for Passes 帳戶建立期間,您可以按照下列步驟註冊應用程式:

  1. 申請取得 Google Pay API for Passes 的存取權。如果您已申請過,可以略過這個步驟。
  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 Passes 帳戶

在 Google Pay API for Passes Merchant Center 網站中,您可以管理帳戶、所有相關類別與物件。支援團隊為您建立完 Google Pay API for Passes 帳戶之後,請按照下列步驟將服務帳戶電子郵件地址連結至新的帳戶:

  1. 前往 Google Pay API for Passes Merchant Center
  2. 從清單中選取您的帳戶。畫面上會顯示「帳戶資訊」頁面。
  3. 按一下 [分享],畫面上會顯示分享設定。
  4. 複製在註冊應用程式一節中使用的金鑰服務帳戶電子郵件地址 (結尾是 @<your_domain>.iam.gserviceaccount.com),然後將其貼入 Invite people 欄位。
  5. 確認權限下拉式選單已設為 [可編輯],然後按一下 [傳送]。服務帳戶現已連結至您的 Google Pay API for Passes 帳戶,現在即可向 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 Web Token (JWT) 並使用私密金鑰進行簽署,然後以適當的格式建立存取憑證要求。建立要求後,您的應用程式會向 Google OAuth 2.0 授權伺服器傳送憑證要求,接著伺服器會傳回存取憑證。您的應用程式必須先收到存取憑證才能存取 API。存取憑證到期時,應用程式必須重複這個程序。

  • JWT 請求集內的 iss 欄位使用的服務帳戶電子郵件地址,是您在註冊應用程式一節中透過 Google API 控制台產生的地址。
  • JWT 請求集內的 scope 欄位為應用程式所要求權限的清單,其中各權限以空格分隔。
  • 正式版應用程式的有效範圍為 https://www.googleapis.com/auth/wallet_object.issuer

完成上述步驟後,請參閱將票證儲存至 Google Pay 一文,瞭解客戶如何透過你的網站將會員卡、儲值卡、優惠、活動票券、登機證和大眾運輸票證輕鬆儲存至 Google Pay。