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イベント(有効な場合)が送信されます❸。
モバイルアプリの利用
お客様がモバイルアプリ内でGoogle Pay決済を開始するには、まず決済方法としてGoogle Payを選択します❶。その後、使用するクレジットカードまたはデビットカードを選択します❷。お客様が決済を確定されます ❸。Opn Paymentsは課金が完了したことを通知するWebhookイベント(有効な場合)を送信します❹。
実装
Google Payのブランドガイドライン (ウェブサイト、 Android) に従って、ウェブサイトやAndroidアプリにGoogle Payの決済ボタンを追加してください。お客様がボタンをタップし、カードを選択すると、カード情報を含むGoogle PayトークンがGoogleから届きます。このトークンをクライアント側のライブラリ (Omise.js または Android SDK) に送信すると、 Charge(課金)APIで使用可能なカードトークンが取得できます。
Opn PaymentsはGoogle Payトークンを機密性の高いカード情報と同様に扱います。そのため、PCI DSSに準拠していない場合、このトークンをサーバーで使用するためには、まずカード型トークン に変換する必要があります。詳しくは「決済を行う」ページをご覧ください。
Google Payで課金を作成するには、以下のAPIリクエストを行ってください。
- ユーザーがGoogle Payボタンから支払いを開始した際に、GoogleからGoogle Payトークンを取得する。
- Omise.jsやAndroid SDKを使用して、Google Payトークンからカードトークンを作成する。
- 手順2で取得したカードトークンを使って、新規課金を作成する。
- 課金完了のWebhookイベントを受信後、課金を取得してその状態を確認する(任意だが推奨)。
以下のシーケンス図は、カードトークンを取得する方法を示しています。
事前に登録したOmiseの決済フォームを利用すると、Google Payボタンが表示され、利用可能なカードトークンが自動的に返されます。シークレットキーを使用して、サーバー上で課金を作成してください。
Google Payトークンの取得
Google PayのウェブサイトまたはAndroidの開発者向けドキュメントに従って、Google Pay ボタンをレンダリングし、Google Payトークンを取得します。APIリクエストでは、以下のフィールドが次のガイドラインに従っていることを確認してください。
- フィールド
allowedAuthMethods
にはPAN_ONLY
のみ含まれていること。 - フィールド
allowedCardNetworks
は、Capability APIからサポートされているカードブランドが反映されていること。 - フィールド
gateway
はomise
に設定されていること。 - フィールド
gatewayMerchantId
は、Opn Paymentsのパブリックキーであること。
リクエスト送信後、レスポンスにtoken
in the responseの名前で新しいGoogle Payトークンが返されます。
Google PayのウェブサイトまたはAndroidのブランドガイドラインに沿った実装であるかを確認してください。
カードトークンの作成
Google Payトークンを受け取ったら、以下のトークン化パラメータを使用して新しいカードトークンを作成します。
名称 | タイプ | 説明 |
---|---|---|
method |
string | (必須) googlepay の文字列に設定します。 |
data |
string | (必須) Google PayトークンPaymentMethodTokenizationData objectのtoken フィールドを参照のこと。 |
billing_name |
string | (任意だが推奨)カード保有者の名前。Address objectのname フィールドを参照のこと。 |
billing_city |
string | (任意だが推奨)請求先都市。Address objectのlocality フィールドを参照のこと。 |
billing_country |
string | (任意だが推奨) 2文字のISO 3166 codeコードによる請求先の国名。 Address objectのcountryCode フィールドを参照のこと。 |
billing_postal_code |
string | (任意だが推奨)請求先の郵便番号。Address objectのpostalCode フィールドを参照のこと。 |
billing_state |
string | (任意だが推奨) 請求先の州。Address object のadministrativeArea フィールドを参照のこと。 |
billing_street1 |
string | (任意だが推奨) 請求先住所1。Address objectのaddress1 フィールドを参照のこと。 |
billing_street2 |
string | (任意)請求先住所2Address objectのaddress2 フィールドを参照のこと。 |
billing_phone_number |
string | (任意) 請求先の電話番号。Address objectの phoneNumber フィールドを参照のこと。 |
デフォルトでは、カード保有者の名前と請求先住所の情報はカードトークンに添付されず、その場合の名前は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
)で生成されたカードトークンは、通常のトークンと比較していくつかの違いがあります。
- このカードトークンには、カードに適用されたトークン化方法を示すフィールド
tokenization_method
があります。 - このカードトークンは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の統合チェックリストに遵守していることを確認してください。