疑難排解

網頁疑難排解指南涵蓋下列主題的問題和疑問。

註冊與存取權

整合過程中,您可能會遇到下列錯誤。如果發生這些錯誤,這份清單會提供實用的疑難排解建議。

這個商家未啟用 Google Pay
網站設定 PRODUCTION 環境時,Google Pay API 需要 Google merchantId。PaymentsClientGoogle merchantId 會透過 Google Pay 和錢包主控台,與一或多個完整網域建立關聯。如需更多資訊,請查看傳回的錯誤詳細資料。
這個商家尚未完成註冊,無法使用 Google Pay API。請前往控制台 (https://pay.google.com/business/console) 進行驗證。
您尚未完成 Google Pay API 網站註冊程序。請參閱「申請正式版存取權」,瞭解如何使用 Google Pay 和錢包主控台註冊,並將網站使用 Google Pay API 的方式送交審核。
這個商家檔案無法使用這項功能
Google 尚未設定您的網站使用 Google Pay API。請參閱「申請正式版存取權」,透過 Google Pay 和錢包主控台,將您的網站使用 Google Pay API 的方式送交審核。
這項 Google Pay API 整合功能已停用,如需詳細資訊,請與我們聯絡 (https://developers.google.com/pay/api/faq#how-to-get-support)。
如要進一步瞭解重新啟用 Google 帳戶的 Google Pay API 必須完成哪些步驟,請
與我們聯絡
您的網域「example.com」未註冊使用此 API
結帳網域與你使用的 merchantId 沒有關聯。請確認 merchantId 參數正確無誤,且網域已透過 Google Pay 和錢包主控台註冊。
應在安全的環境中呼叫 Google Pay API!
Google Pay API 只能在處於安全環境的網站中使用。詳情請參閱「安全環境」。
找不到這個商家資料的金鑰
如要完成 DIRECTtokenizationSpecification type 的整合作業,請透過 Google Pay 和錢包主控台向 Google 註冊公開加密金鑰。

merchantId

整合過程中,您可能會遇到下列 merchantId 相關錯誤。如果發生這些錯誤,這份清單會提供實用的疑難排解建議。

必須設定 merchantId!
PaymentDataRequest 內的 merchantId 參數必須設為透過 Google Pay 和錢包主控台提供的值。只有在使用為 PRODUCTION 環境設定的 PaymentsClient 時,才需要 merchantId 參數。請參閱我們的整合檢查清單,將您的網站使用 Google Pay API 的方式送交審核,並取得您的 merchantId
merchantId 不是字串
PaymentDataRequest 中的 merchantId 參數一律為字串。呼叫 API 前,請確認使用的 merchantId 參數類型為字串。
尚未註冊 merchantId。
PaymentDataRequest 中的 merchantId 參數必須透過 Google Pay 和錢包主控台佈建。 詳情請參閱「申請正式版存取權」。

閘道有效性

在整合過程中,您可能會遇到下列與閘道有效性相關的錯誤。如果發生這些錯誤,這份清單會提供實用的疑難排解建議。

不明閘道「yourgateway」
Google 目前不支援你在 paymentMethodTokenizationParameters.parameters 中指定的閘道參數。如要進一步瞭解閘道 ID 和相關聯的欄位 (例如 gatewayMerchantId),請與閘道聯絡。
閘道「範例」無法在正式上線模式中使用
範例閘道參數值僅用於測試的目的,無法用於針對 PRODUCTION 環境設定的 PaymentsClient。如要進一步瞭解您需要設定以用於 Google Pay API 的 PaymentMethodTokenizationSpecification 值,請聯絡您的閘道。

物件有效性

在整合過程中,您可能會遇到下列與物件有效性相關的錯誤。如果發生這些錯誤,這份清單會提供實用的疑難排解建議。

Google Pay 的 PaymentDataRequest 不是有效的 JSON
提供給 loadPaymentData 的參數一律必須是有效的 PaymentDataRequest 物件。
請務必設定 transactionInfo!
PaymentDataRequest 中的 transactionInfo 參數必須一律為有效的 TransactionInfo 物件。

直接商家

在整合過程中,您可能會遇到下列與直接商家相關的錯誤。如果發生這些錯誤,這份清單會提供實用的疑難排解建議。

驗證簽章
如果 merchantId 有誤,您可能會遇到簽名驗證錯誤。 當您在 TEST 環境中使用 Tink paymentmethodtoken 程式庫時,就可能會發生這種情況。如要避免發生這個問題,請將下列程式碼的 <您的商家 ID>YOUR_MERCHANT_ID 替換成 12345678901234567890
.recipientId("merchant:YOUR_MERCHANT_ID")
無法解密代碼
如果您使用 Tink paymentmethodtoken 程式庫解密權杖,請注意下列事項:
  • 確認 Google Pay API 回應環境與 Tink paymentmethodtoken 環境相對應。詳情請參閱以下示例:
    • 如果 Google Pay API 回應是由 TEST 環境傳回,則 Tink 會指向測試環境來進行解密。
  • 在系統將 Google Pay API 回應傳送至 Tink 之前,請勿修改相關內容。另外,請一併確保您傳送的是 Google Pay API 回應所傳回的完整代碼。詳情請參閱以下附註:
  • 確認您擁有的私密金鑰與您先前透過 Google 註冊的公開金鑰相關聯。
在 Windows 中產生公開和私密金鑰組
如果您使用 Windows 系統,並且希望根據「 使用 OpenSSL 產生私密與公開金鑰組」中提及的步驟操作,請確認您已經電腦上安裝 Cygwin,這樣您才能執行 Linux 指令。

錯誤物件

錯誤物件是來自用戶端 JavaScript 方法的遭拒 Promise 所傳回的物件。

PaymentsError
這個物件包含有關用戶端 JavaScript 方法所傳回的錯誤詳細資料。這些錯誤可能不會顯示在向使用者顯示的對話方塊中。
屬性 類型 說明
statusCode 字串 說明錯誤類型的短碼。
statusMessage 字串 向開發人員顯示的訊息,其中說明遇到的錯誤和可能的修正步驟。
常見錯誤
這個物件顯示您可能會在所有 JavaScript 方法中遇到的錯誤。請務必查看 Google Play 管理中心,瞭解其他錯誤訊息。
狀態碼 說明
BUYER_ACCOUNT_ERROR 目前 Google 使用者無法提供付款資訊。
DEVELOPER_ERROR

已傳送的參數格式不正確。 在所有設定的環境中,瀏覽器主控台都可能會顯示一則錯誤訊息

MERCHANT_ACCOUNT_ERROR

存取 Google Pay API 的網站沒有適當權限。這可能是因為設定不正確,或在要求中設定了錯誤的商家 ID。詳情請查看 statusMessage 欄位。如果繼續發生這個問題,請與支援小組聯絡

INTERNAL_ERROR 一般伺服器錯誤。

CardInfo

什麼是 CardInfo 功能?
Google Pay 會向消費者指出 Google Pay 付款按鈕連結了信用卡,並顯示信用卡組織和卡片末四碼。
為什麼我的實作項目沒有顯示 CardInfo 功能?

如要使用 CardInfo 功能,必須符合下列條件:

為什麼 Google Pay 付款按鈕會無限期載入?
請勿移除 onLoad 事件監聽器。如果移除onLoad 事件監聽器,可能會導致 Google Pay 付款按鈕無限期載入。
為什麼點選 Google Pay 付款按鈕後,系統沒有顯示付款提示?
將事件監聽器回呼指派給 ButtonOptions.onClick 事件。

OR_BIBED_15 個錯誤

整合過程中,您可能會遇到 OR_BIBED_15 錯誤。如果發生這項錯誤,請參考這份清單中的疑難排解建議。

使用 WebView
請按照 AndroidiOS 的指南操作,確保整合項目與 WebView 相容。
Cross-Origin-Opener-Policy HTTP 回應標頭
如果 Cross-Origin-Opener-Policy HTTP 回應標頭設為 same-origin,瀏覽器可能無法開啟必要彈出式視窗,導致使用者無法完成交易。請嘗試將標頭值變更為 same-origin-allow-popups,以減少這些問題。
使用者點選事件與呼叫 loadPaymentData() 之間的時間差
如果點選 Google Pay 按鈕 (或類似的結帳按鈕) 後,到呼叫 loadPaymentData() 前發生延遲 (例如:setTimeout()、額外的網路呼叫或類似的長時間執行邏輯),可能會觸發瀏覽器的彈出式視窗封鎖機制。 建議您不要在使用者點擊和 loadPaymentData() 呼叫之間設定延遲。