Mark Ku's Blog

時空背景

因工作需要美國及德國電商網站,需要界接 Google Pay。

先前也有分享 Apple Pay on Web + Cybersource

程式串接前需提前準備的項目

  • 網站需要 Https 環境
  • Google 開發者帳號( 25 美金 / 只需繳交一次 )
  • 非直接對接Google Pay,則需要金流商戶 ( 本篇採用 cybersource )
  • 頁面設計需符合 Google Pay UI 規範

Google Pay 付款流程

當使用者按下Google Pay 付款按鈕,會員可以選擇可付款信用卡 > 選取完信用卡後,前端會在 onLoadPaymentData 事件 拿到 Google Pay Token,此時帶著 Google Pay Token Call 自己的後端 API,向金流商請求建立訂單。

Google Pay 設定

首先,至 Google Pay 開發者平台,登入 Google Pay 開發者帳號 > 透過主控台管理整合作業

Google Pay API 開發者網站介面截圖
Google Pay API 開發者網站介面截圖

啟用 Google Pay 後,填寫『商家檔案』

Google Pay 主控台商家檔案設定介面
Google Pay 主控台商家檔案設定介面

Google Pay API > 開始使用

Google Pay API 開發者主控台介面,左側選單
Google Pay API 開發者主控台介面,左側選單

填寫欲整合 Google Pay 網站域名,整合類型選擇『閘道』

Google Pay 網站整合填寫域名與類型
Google Pay 網站整合填寫域名與類型

先跳過此步,後面網站若實作完成 Google Pay 頁面後,依據審核要求,截圖上傳送審,經 Google 審核通過後,才能使用 PRODUCTION 環境。

Google Pay API 控制台設定閘道與上傳流程截圖
Google Pay API 控制台設定閘道與上傳流程截圖

送審後會禁止修改,並提示正在審核中

整合審核中禁止修改提示
整合審核中禁止修改提示

接著我們來到前端網站

安裝 Google Pay Button 套件

npm i @google-pay/button-react --save

撰寫程式碼

  const googlePayProcessResult = (paymentData) => {
    return checkStock()  // 檢查庫存     
      .then((res) => {
        const paymentDataString = paymentData.paymentMethodData.tokenizationData.token;
        const paymentDataBase64 = btoa(paymentDataString);

        let param: IPaymentProcessRequest = { PaymentTokenObject: paymentDataBase64 };
        // call 自己的後端,並透過自己後端和金流商交易
        digitalProcessResult(param).then((res) => {
		  if(res.IsSuccess === true){
		    alert('交易成功')
		  } 		
		});
      });
  };

<GooglePayButton
environment="PRODUCTION" // 審核通過才能使用
buttonType="short"
paymentRequest={{
  apiVersion: 2,
  apiVersionMinor: 0,
  allowedPaymentMethods: [
    {
      type: 'CARD',
      parameters: {
        allowedAuthMethods: ['PAN_ONLY', 'CRYPTOGRAM_3DS'],
        allowedCardNetworks: ['MASTERCARD', 'VISA'],
      },
      tokenizationSpecification: {
        type: 'PAYMENT_GATEWAY',
        parameters: {
          gateway: 'cybersource', 
          gatewayMerchantId: 'letgo_account', // cybersource 後台商戶號 ( 非 android 商戶號 )
        },
      },
    },
  ],
  merchantInfo: {
    merchantId: 'ABB121232', // google pay developer merchantId
    merchantName: 'LetGo',
  },
  transactionInfo: {
    totalPriceStatus: 'FINAL',
    totalPriceLabel: 'Total',
    totalPrice: numberFormat(degitalPayPrice, 2),
    currencyCode: 'USD',
    countryCode: 'US',
  },
}}
onLoadPaymentData={googlePayProcessResult}
/>

Google Pay 商戶號 ( merchantInfo.merchantInfo ) 非常隱秘,千萬別填錯了,我因為填錯搞了很久。

Google Pay Console網頁整合介面顯示商戶號
Google Pay Console網頁整合介面顯示商戶號

金流閘道商戶號 ( gatewayMerchantId )

Cybersource介面Merchant ID輸入框
Cybersource介面Merchant ID輸入框

全部頁面實作完成,送審通過就能正常收款。(蠻有效率的一至兩天就能收到信了)

Google Pay API整合申請因內容不符被要求補件
Google Pay API整合申請因內容不符被要求補件

最後,實作後端交易的 API,將前端傳遞的 Google Pay Token 傳到,Cybersource REST API 做交易。

參考資料

使用 Google Pay 在網路上快速結帳
在Web端接入Google Pay
Radial Payments & Fraud Documentation - Google Pay Web Integration
How to Integrate GooglePay in React

作者

Mark Ku

擁有 10+ 年經驗的資深軟體工程師,現為 AI 應用 Builder,專注於大型平台架構與簡化複雜系統設計,從電商系統到訂閱與收費平台,結合 AI Agent、AI 整合與自動化開發,打造高效率且可持續演進的產品技術基礎。閱讀更多

覺得這篇有幫助?

作者做的免費工具、每日 Podcast 與電子報,都在這裡。

Mark Ku · 本文採用 CC BY 4.0 授權,轉載請註明作者並附上原文連結。

留言

訂閱電子報

訂閱後即時收到新文章通知,不錯過任何技術分享。

提交即表示同意接收電子報,隨時可

熱門文章

View all
Mark Ku
··604

Oracle Cloud 永久免費方案 Linux 主機及固定 IP :0 元打造雲端解決方案

Oracle Cloud 永久免費方案 Linux 主機及固定 IP :0 元打造雲端解決方案
Mark Ku
··471

告別 Postman 收費陷阱!開源 Git 原生 API 測試神器 Bruno 實戰指南

告別 Postman 收費陷阱!開源 Git 原生 API 測試神器 Bruno 實戰指南
Mark Ku
··329

一款免費開源類似於 Notion 類知識庫系統 — Outline Wiki 佈署與備份全攻略

一款免費開源類似於 Notion 類知識庫系統 — Outline Wiki 佈署與備份全攻略
Mark Ku
··240

打造高效 API 管理平台:從 0 開始部署 Kong Gateway - Part 1

打造高效 API 管理平台:從 0 開始部署 Kong Gateway - Part 1
Mark Ku
··235

訓練自己的 AI 語音:硬體門檻、開源模型比較與 LoRA 微調

訓練自己的 AI 語音:硬體門檻、開源模型比較與 LoRA 微調
Mark Ku
··216

在 Ubuntu 上設置 Samba 來共享資料夾,讓 Windows 11 用戶可以存取

在 Ubuntu 上設置 Samba 來共享資料夾,讓 Windows 11 用戶可以存取

讀者也在看