Google Pay

このページで扱うトピック

Google Pay™を有効にすると、Googleアカウントに登録されたクレジットカードやデビットカードを使って、お客様が商品を購入できるようになります。このガイドでは、決済の流れやサービスを導入するための手順を説明します。

Google Payを利用することにより、Googleのs/aup) and 利用規定and 利用規約に同意したことになります。

有効にする方法

  • サービスを利用可能な国: 日本, タイ、シンガポール、マレーシア
  • 最小のAPIバージョン: 2017-11-02

決済フロー

Google Payは、ウェブサイト上やAndroid端末での決済に対応しています。お客様は、Google Pay決済を選択し、プラットフォームに組み込まれたGoogle Payボタンをタップまたはクリックすることで決済取引を開始できます。Googleアカウントにカード情報を登録しているお客様は、すぐにカード決済を利用できます。そうでない場合には、新しいクレジットカードを追加するオプションが表示されます。

お客様が使用するクレジットカードを選択し、決済を確定させると、通常の カード決済フローと同じようにクレジットカードに課金されます。つまり、加盟店の現在のカード処理設定(例えば、 3Dセキュアが有効になっているかなど)は、Google Payの取引にも適用されます。

デスクトップ用ブラウザの利用

お客様がウェブサイト上でGoogle Pay決済を利用するには、まずお支払いの際に、決済方法としてGoogle Payを選択します❶。その後、使用するクレジットカードまたはデビットカードを選択します❷。Opn Paymentsが決済を確認すると、課金が完了したことを通知するWebhookイベント(有効な場合)が送信されます❸。

Desktop

モバイルアプリの利用

お客様がモバイルアプリ内でGoogle Pay決済を開始するには、まず決済方法としてGoogle Payを選択します❶。その後、使用するクレジットカードまたはデビットカードを選択します❷。お客様が決済を確定されます ❸。Opn Paymentsは課金が完了したことを通知するWebhookイベント(有効な場合)を送信します❹。

Mobile

実装

Google Payのブランドガイドライン (ウェブサイトAndroid) に従って、ウェブサイトやAndroidアプリにGoogle Payの決済ボタンを追加してください。お客様がボタンをタップし、カードを選択すると、カード情報を含むGoogle PayトークンがGoogleから届きます。このトークンをクライアント側のライブラリ (Omise.js または Android SDK) に送信すると、 Charge(課金)APIで使用可能なカードトークンが取得できます。

Opn PaymentsはGoogle Payトークンを機密性の高いカード情報と同様に扱います。そのため、PCI DSSに準拠していない場合、このトークンをサーバーで使用するためには、まずカード型トークン に変換する必要があります。詳しくは「決済を行う」ページをご覧ください。

Google Payで課金を作成するには、以下のAPIリクエストを行ってください。

  1. ユーザーがGoogle Payボタンから支払いを開始した際に、GoogleからGoogle Payトークンを取得する。
  2. Omise.jsAndroid SDKを使用して、Google Payトークンからカードトークンを作成する。
  3. 手順2で取得したカードトークンを使って、新規課金を作成する。
  4. 課金完了のWebhookイベントを受信後、課金を取得してその状態を確認する(任意だが推奨)。

以下のシーケンス図は、カードトークンを取得する方法を示しています。

sequenceDiagram participant お客様 participant Google participant Omise.js participant 加盟店 お客様 ->> Google : Google Payボタンで決済を依頼 Google -->> Customer : Google Payトークンを返す お客様 ->> Omise.js : Google Payトークンを転送する Omise.js ->> 加盟店 : 加盟店がカードトークンを取得

事前に登録したOmiseの決済フォームを利用すると、Google Payボタンが表示され、利用可能なカードトークンが自動的に返されます。シークレットキーを使用して、サーバー上で課金を作成してください。

Google Payトークンの取得

Google PayのウェブサイトまたはAndroidの開発者向けドキュメントに従って、Google Pay ボタンをレンダリングし、Google Payトークンを取得します。APIリクエストでは、以下のフィールドが次のガイドラインに従っていることを確認してください。

  • フィールド allowedAuthMethodsにはPAN_ONLYのみ含まれていること。
  • フィールド allowedCardNetworksは、Capability APIからサポートされているカードブランドが反映されていること。
  • フィールド gatewayomiseに設定されていること。
  • フィールド gatewayMerchantIdは、Opn Paymentsのパブリックキーであること。

リクエスト送信後、レスポンスにtoken in the responseの名前で新しいGoogle Payトークンが返されます。

Google PayのウェブサイトまたはAndroidのブランドガイドラインに沿った実装であるかを確認してください。

カードトークンの作成

Google Payトークンを受け取ったら、以下のトークン化パラメータを使用して新しいカードトークンを作成します。

名称 タイプ 説明
method string (必須) googlepayの文字列に設定します。
data string (必須) Google PayトークンPaymentMethodTokenizationData objecttokenフィールドを参照のこと。
billing_name string (任意だが推奨)カード保有者の名前。Address objectnameフィールドを参照のこと。
billing_city string (任意だが推奨)請求先都市。Address objectlocalityフィールドを参照のこと。
billing_country string (任意だが推奨) 2文字のISO 3166 codeコードによる請求先の国名。 Address objectcountryCodeフィールドを参照のこと。
billing_postal_code string (任意だが推奨)請求先の郵便番号。Address objectpostalCodeフィールドを参照のこと。
billing_state string (任意だが推奨) 請求先の州。Address objectadministrativeAreaフィールドを参照のこと。
billing_street1 string (任意だが推奨) 請求先住所1。Address objectaddress1フィールドを参照のこと。
billing_street2 string (任意)請求先住所2Address objectaddress2フィールドを参照のこと。
billing_phone_number string (任意) 請求先の電話番号。Address objectphoneNumberフィールドを参照のこと。

デフォルトでは、カード保有者の名前と請求先住所の情報はカードトークンに添付されず、その場合の名前はGoogle Payとして表示されます。この動作を無効にするには、Googleに支払いをリクエストする際に請求先住所のパラメータを指定してください。課金情報は、レスポンスに含まれるAddress objectで確認できます。

Omise.jsの場合、createToken関数の第1引数でトークン入力タイプを tokenizationに設定し、第2引数でトークン化パラメータを送信してください。

Omise.setPublicKey("your_omise_public_key");

tokenParameters = {
  method: 'googlepay',
  data: '{\"signature\":\"MEQCIA+wGZttxT13yz599zQjYugoz5kClNSmVa39vKv6ZOenAiARRtHQ0aYSrfd3oWhB\/ZtEeJs3ilT\/J0pYz1EWnzU2fw\\u003d\\u003d\",\"intermediateSigningKey\":{\"signedKey\":\"{\\\"keyValue\\\":\\\"MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEev+pVoUgtoS+y8Ecz3c72OFBD3d74XJOcnRxVmCV+2TJTW1g4d0UhDkhHeURhHQNvJPyBFHfYIUUj\/EYhYAzgQ\\\\u003d\\\\u003d\\\",\\\"keyExpiration\\\":\\\"1647856171825\\\"}\",\"signatures\":[\"MEYCIQClXfVcil7qaG2btVbyzf6x1\/MqCTbbJM\/tGN4iME4M9wIhANL53daWJHdDPpKxR3M\/Jis4WPVb093PW7fChj\/gCQUS\"]},\"protocolVersion\":\"ECv2\",\"signedMessage\":\"{\\\"encryptedMessage\\\":\\\"4JighTc0b1HhRQu+NgQN1XQWWOeB4YyR5cMFi8Vu3FeWHAjPtGs3LjrdpWhJhWekURzD6BZCbg1xakYvAMsahoTyUzDLtNpKmlglFpVjBSSYkPKFT6xovTKsWS7xC\/x9AvJsATtotwN8TTiP3+1dXtLLFClnCTkg9vEvChvXq0FwnrUOBtMiWukBY84R2rpzqNuZoh6gdvWHgPP6RczhtERg+kqKdd4\/UnKE8ElzOWYDmZoJvFhxU\/O97vHW1ohOe8ut94bxiPH6DB82Ec87Mu\/oArsGMpsnFVsWzIcLX+q+KayGRbKxPQzV726fO7GipG94KiF7YfCk1r+D+jkFR7x0ev6l+XRoTz+PKIlhrcn3DEYJudJAP\/Xh2kj\/csnLn4XdKV0aZ5Ua3IauA4fQl80pAo9foujiRGwagHHOfnp6iMjA\/CdG9SNQS3eUdsxtlJKPoK4rtv7cwISNQvoCWMv748YvV3f+LEOWf8couRgrxPCPbk1vO8TfNOgSAjULzRs+C1xy6\/j5aZU46PpomEClDWrujMAcDVqCnExTx2QE9IAb4n02V6UxWv8Dgqv5TsRKjPe7WSCO0+jRWAvs6wBBUbFPHvEe4do+rQ\\\\u003d\\\\u003d\\\",\\\"ephemeralPublicKey\\\":\\\"BGJhfH3jWMmZtIALmYr7fWxYSNSCFoAT9MCOcbCZdO3LmP6njpGk9LISmr+H1Wk9XUZuMvNQmMHE+yFzW\/sA5lg\\\\u003d\\\",\\\"tag\\\":\\\"d9a6aVaoIEQm+bTjd5M2HL7+OeIup0Jb6rM1CN7v3NQ\\\\u003d\\\"}\"}',

  // Add your billing information here (optional)
  billing_name: 'John Doe',
  billing_street1: '1600 Amphitheatre Parkway',
};

Omise.createToken('tokenization', tokenParameters, function(statusCode, response) {
  console.log(response)
});

Android SDKを使用する場合は、以下のコードスニペットを参照してください。より詳細な使用例は、OmiseのGitHub repositoryで確認できます。

private val client = Client("your_omise_public_key")

val tokenizationParam = TokenizationParam(
    method = "googlepay",
    data = "{\"signature\":\"MEQCIA+wGZttxT13yz599zQjYugoz5kClNSmVa39vKv6ZOenAiARRtHQ0aYSrfd3oWhB\/ZtEeJs3ilT\/J0pYz1EWnzU2fw\\u003d\\u003d\",\"intermediateSigningKey\":{\"signedKey\":\"{\\\"keyValue\\\":\\\"MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEev+pVoUgtoS+y8Ecz3c72OFBD3d74XJOcnRxVmCV+2TJTW1g4d0UhDkhHeURhHQNvJPyBFHfYIUUj\/EYhYAzgQ\\\\u003d\\\\u003d\\\",\\\"keyExpiration\\\":\\\"1647856171825\\\"}\",\"signatures\":[\"MEYCIQClXfVcil7qaG2btVbyzf6x1\/MqCTbbJM\/tGN4iME4M9wIhANL53daWJHdDPpKxR3M\/Jis4WPVb093PW7fChj\/gCQUS\"]},\"protocolVersion\":\"ECv2\",\"signedMessage\":\"{\\\"encryptedMessage\\\":\\\"4JighTc0b1HhRQu+NgQN1XQWWOeB4YyR5cMFi8Vu3FeWHAjPtGs3LjrdpWhJhWekURzD6BZCbg1xakYvAMsahoTyUzDLtNpKmlglFpVjBSSYkPKFT6xovTKsWS7xC\/x9AvJsATtotwN8TTiP3+1dXtLLFClnCTkg9vEvChvXq0FwnrUOBtMiWukBY84R2rpzqNuZoh6gdvWHgPP6RczhtERg+kqKdd4\/UnKE8ElzOWYDmZoJvFhxU\/O97vHW1ohOe8ut94bxiPH6DB82Ec87Mu\/oArsGMpsnFVsWzIcLX+q+KayGRbKxPQzV726fO7GipG94KiF7YfCk1r+D+jkFR7x0ev6l+XRoTz+PKIlhrcn3DEYJudJAP\/Xh2kj\/csnLn4XdKV0aZ5Ua3IauA4fQl80pAo9foujiRGwagHHOfnp6iMjA\/CdG9SNQS3eUdsxtlJKPoK4rtv7cwISNQvoCWMv748YvV3f+LEOWf8couRgrxPCPbk1vO8TfNOgSAjULzRs+C1xy6\/j5aZU46PpomEClDWrujMAcDVqCnExTx2QE9IAb4n02V6UxWv8Dgqv5TsRKjPe7WSCO0+jRWAvs6wBBUbFPHvEe4do+rQ\\\\u003d\\\\u003d\\\",\\\"ephemeralPublicKey\\\":\\\"BGJhfH3jWMmZtIALmYr7fWxYSNSCFoAT9MCOcbCZdO3LmP6njpGk9LISmr+H1Wk9XUZuMvNQmMHE+yFzW\/sA5lg\\\\u003d\\\",\\\"tag\\\":\\\"d9a6aVaoIEQm+bTjd5M2HL7+OeIup0Jb6rM1CN7v3NQ\\\\u003d\\\"}\"}",

    // Add your billing information here (optional)
    billing_name = "John Doe",
    billing_street1 = "1600 Amphitheatre Parkway"
)

val request = Token.CreateTokenRequestBuilder(tokenization = tokenizationParam).build()

client.send(request, object: RequestListener<Token>{
    override fun onRequestSucceed(model: Token) {
        // you created a token
    }

    override fun onRequestFailed(throwable: Throwable) {
        // something bad happened
    }
})

テスト用に、curlを使用して同じリクエストを作成することができます。この例はテストモードでのみ使用可能ですのでご注意ください。ライブモードではGoogle Payトークンをクライアント側から送信する必要があります。

curl https://vault.omise.co/tokens \
  -u $OMISE_PUBLIC_KEY: \
  -d 'tokenization[method]=googlepay' \
  --data-urlencode 'tokenization[data]={"signature":"MEUCIQDY1e/dzFAZUkRXXjXBKFN1AeKDdtnspf3yHUaxNF0iLAIgbmAccscWk9KxyiJO/uSjdjBd3rUnDU4ow5hlhDgW0wM\u003d","intermediateSigningKey":{"signedKey":"{\"keyValue\":\"MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEa6knFzfre2if/qjHGrPXRJI4R0fa5gDiw53ZLQIF319MCV1ht0lyMl1jc8+MtPfoTENSicQap6Cs8Fl+83apfg\\u003d\\u003d\",\"keyExpiration\":\"1656417412574\"}","signatures":["MEUCIEWY90SXfDoRMVPs8YZy7u0t1B/UZ0WNP6Ibq/OyrbkzAiEAmvxPrtmkE6mEOGzkv39Cpn6OiwqMVwMv01adhafXJto\u003d"]},"protocolVersion":"ECv2","signedMessage":"{\"encryptedMessage\":\"VI+tGn08DwzYavfneViUCQ0hp59zS9lHmBEDhQEANhPOnka2PAvzyeNNLwmkLHF4fglKtQD70WJBfTbLG5PuFttnPXZN56pU/pnv8MgHdkdkzgeoT3fDWL8G00nQ8dM2lCRjS8lSgKrs0tdd5a0VbuH/OZ8TRaQ8LuaWtmXuwtVXTi7clCe3G977FPJmm1upq50wxS/q1W0Yr296J6pNfA4tQ3v5fWnJBwaypsn7fjqM5p4DK5X9Q2tmHQjSjL6VR8o/ojL9RxMZCrAl6X/ZodipD/0uQmtz7Q/T8VBdgZVa6pptGmmxdbLRa0EPXEJpiQpqlleibIzleQakpNcdLaauMCjlXhTobdCqCkvZ6oTlTmRQ3pddowUKeOMaqT5rGAOL9Z6XAbcw2/WCEC6DXPAPR9ba8C+W5iBjA6FcbRf2P0WvHM/2uPe7Dz+rj9tGaGt+E97eCXXiZ+PV9CELghpfZmqrkc58llBThDDLwN/2vBW1UYIWJQCyPSJttzdM3Cyc5CGBNXcQ+O9z7GUZXhLoyu4T7s+8hxlKYLJ++WhmWAJ1ybYywkBmcbdKmhYkoJ/D85qe4UqvpmA3Hhz6w9gNDQteRY/kQEd/ZQ\\u003d\\u003d\",\"ephemeralPublicKey\":\"BOxUCtd20nc4LxB2hUlFAGxo6rx9R2bP+5FRPuOhLLVhvAy5QyoSyku9JDXwsRh07u/EDQN8Hf7e/mtBrg7vaAs\\u003d\",\"tag\":\"5gC0Mw+mNmDInoIK+K1AIN+siXyyJp6afQjhUMK+5Io\\u003d\"}"}'
{
  "object": "token",
  "id": "tokn_test_5s7p3w9z0xhnily5g3j",
  "livemode": false,
  "location": "https://vault.omise.co/tokens/tokn_test_5s7p3w9z0xhnily5g3j",
  "used": false,
  "charge_status": "unknown",
  "card": {
    "object": "card",
    "id": "card_test_5s7p3w9ygewzs8yfliv",
    "livemode": false,
    "location": null,
    "deleted": false,
    "street1": null,
    "street2": null,
    "city": null,
    "state": null,
    "phone_number": null,
    "postal_code": null,
    "country": "us",
    "financing": "credit",
    "bank": "JPMORGAN CHASE BANK N.A.",
    "brand": "Visa",
    "fingerprint": "uHGUFYpH0GCcilfcEdJWQe/+j/FLNfXsZKeW5Xrydc4=",
    "first_digits": null,
    "last_digits": "1111",
    "name": "Google Pay",
    "expiration_month": 12,
    "expiration_year": 2027,
    "security_code_check": true,
    "tokenization_method": "googlepay",
    "created_at": "2022-06-21T02:32:10Z"
  },
  "created_at": "2022-06-21T02:32:10Z"
}

id 属性は、(toknで始まる)トークン識別子です。

課金の作成

受け取ったトークンを使ってカードに課金する場合は、「クレジットカード決済」を参照してください。特定のトークン化方式(googlepay)で生成されたカードトークンは、通常のトークンと比較していくつかの違いがあります。

  1. このカードトークンには、カードに適用されたトークン化方法を示すフィールドtokenization_methodがあります。
  2. このカードトークンはCustomers(顧客)APIで使用することはできません。

追加オプション

Omise既成デザインの決済フォームを使用する場合、追加の構成を設定して、Google Pay APIをより細かく管理することができます。関連するパラメータを以下に示します。

データ属性 パラメータ 説明
data-googlepay-merchant-id googlepayMerchantId Google Payの加盟店ID(ライブトラフィックを受け入れる際に必要)。
data-googlepay-request-billing-address googlepayRequestBillingAddress カード保有者の名前と請求先住所をカードトークンに添付する場合は、trueを設定します。この情報により、米国、英国、カナダのクレジットカード会員に対するオーソリ成功率が向上します。
data-googlepay-request-phone-number googlepayRequestPhoneNumber trueに設定することで、カード保有者の請求先住所が要求された場合に、カードトークンにカード保有者の電話番号も添付されます。

対応するパラメータの一覧は、こちらをご覧ください。

テストモードとライブモードへの移行

課金方法を体験するには、Googleアカウントを取得し、それに課金可能なカードを登録するか、Googleが提供する利用可能なテストカードのいずれかを使用する必要があります。Google Pay環境がテストモードの場合、Google Payトークンのカード番号は常に4111 1111 1111 1111になります。Opn Paymentsのテストキーを使用してカードに課金すれば、課金の方法をシミュレーションすることができます。

ライブモードに移行するには、Google Pay APIのmerchantIdフィールドで使用される加盟店IDが必要です。Google Pay Business Consoleに登録することで取得できます。ローンチの準備段階で、Google PayのウェブサイトまたはAndroidの統合チェックリストに遵守していることを確認してください。

Omiseは、お客様のウェブサイト全般における利便性を向上するためにクッキーを利用し、お客様のアクセス、閲覧履歴に関する情報を収集します。 当社のウェブサイトを閲覧し続けることにより、お客様は当社のプライバシーポリシーに同意することとします。 詳細はこちら