メインコンテンツへスキップ

Google Pay

Google Pay(TM)を有効にすると、お客様はGoogleアカウントに紐づけられたクレジットカードまたはデビットカードで決済できるようになります。このガイドでは、決済フローとサービスの実装手順について説明します。

利用規約

Google Payを利用することにより、Googleの利用規約およびサービス利用規約に同意したものとみなされます。

対応地域

地域通貨返金可否最小APIバージョン
タイTHB2017-11-02
日本JPY2017-11-02
シンガポールSGD2017-11-02
マレーシアMYR2017-11-02

有効化の方法

Google Payを有効にするには、support@omise.coまでこの機能のリクエストをメールでお送りください。

決済フロー

Google PayはWebサイトおよびAndroidデバイスでの決済に対応しています。Google Payで決済することを選択したお客様は、プラットフォームに組み込まれたGoogle Payボタンをタップまたはクリックして取引を開始します。すでにGoogleアカウントにカードを紐づけているお客様は、すぐに希望のカードを選択できます。まだカードを紐づけていないお客様は、新しいカードを紐づけるオプションが表示されます。

お客様が希望のカードを選択して決済を確認すると、通常のクレジットカード決済フローと同様にカードに課金されます。つまり、アカウントの現在のカード処理設定(例:3-Dセキュアが有効かどうか)もGoogle Pay取引に適用されます。

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

Google Pay決済を開始するには、お客様がWebサイトでのチェックアウト時にGoogle Payを希望の支払い方法として選択します❶。次に、お客様は希望のクレジットカードまたはデビットカードを選択します❷。確認後、Omiseは課金が完了したことを示すWebhookイベントを送信します(有効な場合)❸。

Google Payデスクトップフロー

モバイルアプリケーションでの利用

Google Pay決済を開始するには、お客様がモバイルアプリケーションでGoogle Payを希望の支払い方法として選択します❶。次に、お客様は希望のクレジットカードまたはデビットカードを選択します❷。お客様は決済を確認します❸。Omiseは課金が完了したことを示すWebhookイベントを送信します(有効な場合)❹。

Google Payモバイルフロー

実装

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

OmiseはGoogle Payトークンを機密性の高いカードデータと同様に扱います。そのため、PCI-DSSライセンスをお持ちでない場合は、サーバーで使用する前にこれらのトークンをカードトークンに変換する必要があります。詳細はカード情報の収集をご覧ください。

要約すると、Google Payで課金を作成するには以下のAPIリクエストを行います:

  1. お客様がGoogle Payボタンで決済を開始したときに、GoogleからGoogle Payトークンを取得します。
  2. Omise.jsまたはAndroid SDKを使用して、Google Payトークンからカードトークンを作成します。
  3. ステップ2で取得したカードトークンを使用して新しい課金を作成します。
  4. 課金完了のWebhookイベントを受信後、課金を取得してステータスを確認します(任意ですが推奨)。

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

Omiseの組み込み決済フォームを使用する場合、Google Payボタンが提供され、使用可能なカードトークンが自動的に返されます。シークレットキーを使用してサーバーで課金を作成してください。

Google Payトークンの取得

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

  • allowedAuthMethodsフィールドにはPAN_ONLYのみを含める必要があります。
  • allowedCardNetworksフィールドはCapability APIでサポートされているカードブランドを反映する必要があります。
  • gatewayフィールドはomiseに設定します。
  • gatewayMerchantIdフィールドはOmiseのパブリックキーです。

リクエストが送信されると、レスポンスのtokenという名前で新しいGoogle Payトークンが返されます。

実装がGoogle PayのWebまたはAndroidブランドガイドラインにも準拠していることを確認してください。

カードトークンの作成

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

名前説明
methodstring必須googlepay文字列を設定します。
datastring必須)Google Payトークン。PaymentMethodTokenizationDataオブジェクトtokenフィールドを参照してください。
billing_namestring任意、推奨)カード所有者名。Addressオブジェクトnameフィールドを参照してください。
billing_citystring任意、推奨)請求先住所の市区町村。Addressオブジェクトlocalityフィールドを参照してください。
billing_countrystring任意、推奨)請求先住所の国(2文字のISO 3166コード)。AddressオブジェクトcountryCodeフィールドを参照してください。
billing_postal_codestring任意、推奨)請求先住所の郵便番号。AddressオブジェクトpostalCodeフィールドを参照してください。
billing_statestring任意、推奨)請求先住所の都道府県。AddressオブジェクトadministrativeAreaフィールドを参照してください。
billing_street1string任意、推奨)請求先住所の番地1。Addressオブジェクトaddress1フィールドを参照してください。
billing_street2string任意)請求先住所の番地2。Addressオブジェクトaddress2フィールドを参照してください。
billing_phone_numberstring任意)請求先住所の電話番号。AddressオブジェクトphoneNumberフィールドを参照してください。
請求先情報

デフォルトでは、カード所有者名と請求先住所はカードトークンに付加されず、その場合は名前が「Google Pay」として表示されます。この動作を変更するには、Googleへの決済リクエスト時に請求先住所パラメータを指定してください。レスポンスの請求先情報はAddressオブジェクトで確認できます。

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\"}"}',

// 請求先情報をここに追加します(任意)
billing_name: 'John Doe',
billing_street1: '1600 Amphitheatre Parkway',
};

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

id属性がトークン識別子です(toknで始まります)。

課金の作成

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

  1. これらのカードトークンには、どのトークン化方式が適用されたかを示すtokenization_methodフィールドがあります。
  2. これらのカードトークンはCustomers APIでは使用できません。

追加オプション

組み込み決済フォームを使用する場合、Google Pay APIをより詳細に制御するための追加設定が可能です。関連するパラメータを以下に説明します。

データ属性パラメータ説明
data-googlepay-merchant-idgooglepayMerchantIdGoogle PayのマーチャントID(本番トラフィックを受け付ける場合は必須)。
data-googlepay-request-billing-addressgooglepayRequestBillingAddresstrueに設定すると、カード所有者名と請求先住所がカードトークンに付加されます。これを指定すると、米国、英国、カナダのカード所有者の承認率が向上します。
data-googlepay-request-phone-numbergooglepayRequestPhoneNumberカード所有者の請求先住所がリクエストされている場合、trueに設定するとカード所有者の電話番号もカードトークンに付加されます。

サポートされているパラメータの完全なリストはこちらで確認できます。

テストと本番稼働

完全なユーザージャーニーを完了するには、Googleアカウントを持ち、課金可能なカードを紐づけているか、Googleが提供するテストカードのいずれかを使用する必要があります。Google Pay環境がテストモードの場合、Google Payトークンのカード番号は常に4111 1111 1111 1111になります。Omiseのテストキーでこのカードに課金して、課金成功をシミュレートできます。

本番稼働するには、Google Pay APIのmerchantIdフィールドにマーチャントIDが必要です。これはGoogle Pay Business Consoleに登録することで取得できます。本番稼働の準備中は、Google PayのWebまたはAndroid統合チェックリストにも準拠していることを確認してください。

関連リソース