Google Pay API PaymentRequest チュートリアル
コレクションでコンテンツを整理
必要に応じて、コンテンツの保存と分類を行います。
PaymentRequest
では、Google Pay API とその他のサポートされているお支払い方法を組み合わせて使用できます。
手順 1: PaymentDataRequest オブジェクトを作成する
支払いゲートウェイとサポートするお支払い方法を指定して PaymentDataRequest
オブジェクトを構成します。複数のお支払い方法の間で一貫性を保つため、Google Pay API ではなくブラウザの PaymentRequest
options
引数を使用して配送先住所、メールアドレス、電話番号を取得することをおすすめします。お支払い認証情報とオプションの請求先住所のみを受け取る場合は、Google Pay API を使用してください。
const googlePaymentDataRequest = {
environment: 'TEST',
apiVersion: 2,
apiVersionMinor: 0,
merchantInfo: {
// A merchant ID is available after approval by Google.
// @see {@link https://developers.google.com/pay/api/web/guides/test-and-deploy/integration-checklist}
// merchantId: '12345678901234567890',
merchantName: 'Example Merchant'
},
allowedPaymentMethods: [{
type: 'CARD',
parameters: {
allowedAuthMethods: ["PAN_ONLY", "CRYPTOGRAM_3DS"],
allowedCardNetworks: ["AMEX", "DISCOVER", "INTERAC", "JCB", "MASTERCARD", "VISA"]
},
tokenizationSpecification: {
type: 'PAYMENT_GATEWAY',
// Check with your payment gateway on the parameters to pass.
// @see {@link https://developers.google.com/pay/api/web/reference/request-objects#gateway}
parameters: {
'gateway': 'example',
'gatewayMerchantId': 'exampleGatewayMerchantId'
}
}
}]
};
ステップ 2: Google Pay API のサポートを宣言する
Google Pay API のお支払い方法の ID とその構成を methodData
パラメータに追加し、このパラメータを PaymentRequest
に渡します。
const methodData = [
{supportedMethods: 'https://google.com/pay', data: googlePaymentDataRequest},
{supportedMethods: 'basic-card'}
];
まとめ
次の例は、Google Pay API とその他のサポートされているお支払い方法を PaymentRequest
でまとめて実装する方法を示しています。
<div id="checkout">
<button id="buyButton">Checkout</button>
</div>
<script>
const allowedCardNetworks = ["AMEX", "DISCOVER", "INTERAC", "JCB", "MASTERCARD", "VISA"];
const allowedCardAuthMethods = ["PAN_ONLY", "CRYPTOGRAM_3DS"];
if (window.PaymentRequest) {
const request = createPaymentRequest();
request.canMakePayment()
.then(function(result) {
if (result) {
// Display PaymentRequest dialog on interaction with the existing checkout button
document.getElementById('buyButton')
.addEventListener('click', onBuyClicked);
}
})
.catch(function(err) {
showErrorForDebugging(
'canMakePayment() error! ' + err.name + ' error: ' + err.message);
});
} else {
showErrorForDebugging('PaymentRequest API not available.');
}
/**
* Show a PaymentRequest dialog after a user clicks the checkout button
*/
function onBuyClicked() {
createPaymentRequest()
.show()
.then(function(response) {
// Dismiss payment dialog.
response.complete('success');
handlePaymentResponse(response);
})
.catch(function(err) {
showErrorForDebugging(
'show() error! ' + err.name + ' error: ' + err.message);
});
}
/**
* Define your unique Google Pay API configuration
*
* @returns {object} data attribute suitable for PaymentMethodData
*/
function getGooglePaymentsConfiguration() {
return {
environment: 'TEST',
apiVersion: 2,
apiVersionMinor: 0,
merchantInfo: {
// A merchant ID is available after approval by Google.
// 'merchantId':'12345678901234567890',
merchantName: 'Example Merchant'
},
allowedPaymentMethods: [{
type: 'CARD',
parameters: {
allowedAuthMethods: allowedCardAuthMethods,
allowedCardNetworks: allowedCardNetworks
},
tokenizationSpecification: {
type: 'PAYMENT_GATEWAY',
// Check with your payment gateway on the parameters to pass.
// @see {@link https://developers.google.com/pay/api/web/reference/request-objects#gateway}
parameters: {
'gateway': 'example',
'gatewayMerchantId': 'exampleGatewayMerchantId'
}
}
}]
};
}
/**
* Create a PaymentRequest
*
* @returns {PaymentRequest}
*/
function createPaymentRequest() {
// Add support for the Google Pay API.
const methodData = [{
supportedMethods: 'https://google.com/pay',
data: getGooglePaymentsConfiguration()
}];
// Add other supported payment methods.
methodData.push({
supportedMethods: 'basic-card',
data: {
supportedNetworks:
Array.from(allowedCardNetworks, (network) => network.toLowerCase())
}
});
const details = {
total: {label: 'Test Purchase', amount: {currency: 'USD', value: '1.00'}}
};
const options = {
requestPayerEmail: true,
requestPayerName: true
};
return new PaymentRequest(methodData, details, options);
}
/**
* Process a PaymentResponse
*
* @param {PaymentResponse} response returned when a user approves the payment request
*/
function handlePaymentResponse(response) {
const formattedResponse = document.createElement('pre');
formattedResponse.appendChild(
document.createTextNode(JSON.stringify(response.toJSON(), null, 2)));
document.getElementById('checkout')
.insertAdjacentElement('afterend', formattedResponse);
}
/**
* Display an error message for debugging
*
* @param {string} text message to display
*/
function showErrorForDebugging(text) {
const errorDisplay = document.createElement('code');
errorDisplay.style.color = 'red';
errorDisplay.appendChild(document.createTextNode(text));
const p = document.createElement('p');
p.appendChild(errorDisplay);
document.getElementById('checkout').insertAdjacentElement('afterend', p);
}
</script>
お支払い方法のパラメータ一覧
PaymentRequest
で渡される Google Pay API の構成は、Google Pay API JavaScript クライアント ライブラリで使用される PaymentDataRequest
オブジェクトと似ていますが、次の点が異なります。
environment
プロパティは、PaymentOptions
に示す文字列値と一致するオブジェクトで設定します。
transactionInfo
プロパティは省略します。その代わりに、合計金額と通貨は PaymentRequest
に渡す details
引数で指定します。
PaymentRequest
のお支払い方法データ プロパティで指定する、Google Pay API のお支払い方法に関するその他のオブジェクト プロパティは次のとおりです。
プロパティ |
型 |
必須/オプション |
説明 |
environment |
文字列 |
オプション |
PRODUCTION : 有効な Google 販売者 ID が指定され、ドメイン用に構成されている場合に、請求可能なお支払い方法を返します。
TEST : テスト用に返されるダミーのお支払い方法(デフォルト)
|
特に記載のない限り、このページのコンテンツはクリエイティブ・コモンズの表示 4.0 ライセンスにより使用許諾されます。コードサンプルは Apache 2.0 ライセンスにより使用許諾されます。詳しくは、Google Developers サイトのポリシーをご覧ください。Java は Oracle および関連会社の登録商標です。
最終更新日 2024-10-16 UTC。
[null,null,["最終更新日 2024-10-16 UTC。"],[[["\u003cp\u003eGoogle Pay can be integrated with other payment methods using the Payment Request API, primarily supported by Chrome.\u003c/p\u003e\n"],["\u003cp\u003eTo ensure wider compatibility, use the Google Pay API JavaScript client library with a branded Google Pay button.\u003c/p\u003e\n"],["\u003cp\u003eImplementing Google Pay involves creating a PaymentDataRequest object to specify payment details and configuring the Payment Request API to include Google Pay as a supported method.\u003c/p\u003e\n"],["\u003cp\u003eThe Google Pay API configuration in Payment Request is similar to the PaymentDataRequest object in the Google Pay API JavaScript library, with minor differences in environment and transaction information handling.\u003c/p\u003e\n"]]],["This guide outlines using the Google Pay API within the `PaymentRequest` API. Key actions include: creating a `PaymentDataRequest` object to define payment gateway and accepted methods, such as card types and authentication methods. Add Google Pay's identifier and configuration to the `methodData` parameter for `PaymentRequest`. This configuration involves setting environment (e.g., 'TEST'), API versions, and merchant information. Shipping details should be requested through `PaymentRequest` options. Configure `environment` and use the `details` argument for pricing.\n"],null,["# Google Pay API PaymentRequest Tutorial\n\nThe Google Pay API can be used in conjunction with other supported\npayment methods in\n[`PaymentRequest`](https://developer.mozilla.org/en-US/docs/Web/API/PaymentRequest \"MDN: PaymentRequest documentation\").\n| **Important:** Chrome is currently the only web browser supporting the Payment Request API with third-party payment methods, including Google Pay. Sites wishing to implement Google Pay as a standalone payment method should use the [Google Pay API JavaScript client library](/pay/api/web/guides/tutorial) with a [branded Google Pay button](/pay/api/web/guides/brand-guidelines) to reach a broader Google audience across multiple browsers and platforms.\n\nStep 1: Create a PaymentDataRequest object\n------------------------------------------\n\nConfigure a\n[`PaymentDataRequest`](/pay/api/web/reference/request-objects#PaymentDataRequest)\nobject specifying your payment gateway and accepted methods of payment.\nWe recommend you obtain shipping address, email address, and phone number\nthrough the browser's `PaymentRequest` `options` argument,\nnot the Google Pay API, for consistency across payment methods.\nUse the Google Pay API to receive only the payment credentials and\noptional billing address. \n\n```javascript\nconst googlePaymentDataRequest = {\n environment: 'TEST',\n apiVersion: 2,\n apiVersionMinor: 0,\n merchantInfo: {\n // A merchant ID is available after approval by Google.\n // @see {@link https://developers.google.com/pay/api/web/guides/test-and-deploy/integration-checklist}\n // merchantId: '12345678901234567890',\n merchantName: 'Example Merchant'\n },\n allowedPaymentMethods: [{\n type: 'CARD',\n parameters: {\n allowedAuthMethods: [\"PAN_ONLY\", \"CRYPTOGRAM_3DS\"],\n allowedCardNetworks: [\"AMEX\", \"DISCOVER\", \"INTERAC\", \"JCB\", \"MASTERCARD\", \"VISA\"]\n },\n tokenizationSpecification: {\n type: 'PAYMENT_GATEWAY',\n // Check with your payment gateway on the parameters to pass.\n // @see {@link https://developers.google.com/pay/api/web/reference/request-objects#gateway}\n parameters: {\n 'gateway': 'example',\n 'gatewayMerchantId': 'exampleGatewayMerchantId'\n }\n }\n }]\n};\n```\n\nStep 2: Declare Google Pay API support\n--------------------------------------\n\nAdd the Google Pay API payment method identifier and its configuration to\nthe `methodData` parameter passed to `PaymentRequest`. \n\n```javascript\nconst methodData = [\n {supportedMethods: 'https://google.com/pay', data: googlePaymentDataRequest}\n];\n```\n\nPutting it all together\n-----------------------\n\nThe following example shows an implementation of the Google Pay API with\nother supported payment methods in `PaymentRequest`: \n\n```html\n\u003cdiv id=\"checkout\"\u003e\n \u003cbutton id=\"buyButton\"\u003eCheckout\u003c/button\u003e\n\u003c/div\u003e\n\n\u003cscript\u003e\nconst allowedCardNetworks = [\"AMEX\", \"DISCOVER\", \"INTERAC\", \"JCB\", \"MASTERCARD\", \"VISA\"];\nconst allowedCardAuthMethods = [\"PAN_ONLY\", \"CRYPTOGRAM_3DS\"];\nif (window.PaymentRequest) {\n const request = createPaymentRequest();\n\n request.canMakePayment()\n .then(function(result) {\n if (result) {\n // Display PaymentRequest dialog on interaction with the existing checkout button\n document.getElementById('buyButton')\n .addEventListener('click', onBuyClicked);\n }\n })\n .catch(function(err) {\n showErrorForDebugging(\n 'canMakePayment() error! ' + err.name + ' error: ' + err.message);\n });\n} else {\n showErrorForDebugging('PaymentRequest API not available.');\n}\n\n/**\n * Show a PaymentRequest dialog after a user clicks the checkout button\n */\nfunction onBuyClicked() {\n createPaymentRequest()\n .show()\n .then(function(response) {\n // Dismiss payment dialog.\n response.complete('success');\n handlePaymentResponse(response);\n })\n .catch(function(err) {\n showErrorForDebugging(\n 'show() error! ' + err.name + ' error: ' + err.message);\n });\n}\n\n/**\n * Define your unique Google Pay API configuration\n *\n * @returns {object} data attribute suitable for PaymentMethodData\n */\nfunction getGooglePaymentsConfiguration() {\n return {\n environment: 'TEST',\n apiVersion: 2,\n apiVersionMinor: 0,\n merchantInfo: {\n // A merchant ID is available after approval by Google.\n // 'merchantId':'12345678901234567890',\n merchantName: 'Example Merchant'\n },\n allowedPaymentMethods: [{\n type: 'CARD',\n parameters: {\n allowedAuthMethods: allowedCardAuthMethods,\n allowedCardNetworks: allowedCardNetworks\n },\n tokenizationSpecification: {\n type: 'PAYMENT_GATEWAY',\n // Check with your payment gateway on the parameters to pass.\n // @see {@link https://developers.google.com/pay/api/web/reference/request-objects#gateway}\n parameters: {\n 'gateway': 'example',\n 'gatewayMerchantId': 'exampleGatewayMerchantId'\n }\n }\n }]\n };\n}\n\n/**\n * Create a PaymentRequest\n *\n * @returns {PaymentRequest}\n */\nfunction createPaymentRequest() {\n // Add support for the Google Pay API.\n const methodData = [{\n supportedMethods: 'https://google.com/pay',\n data: getGooglePaymentsConfiguration()\n }];\n\n const details = {\n total: {label: 'Test Purchase', amount: {currency: 'USD', value: '1.00'}}\n };\n\n const options = {\n requestPayerEmail: true,\n requestPayerName: true\n };\n\n return new PaymentRequest(methodData, details, options);\n}\n\n/**\n * Process a PaymentResponse\n *\n * @param {PaymentResponse} response returned when a user approves the payment request\n */\nfunction handlePaymentResponse(response) {\n const formattedResponse = document.createElement('pre');\n formattedResponse.appendChild(\n document.createTextNode(JSON.stringify(response.toJSON(), null, 2)));\n document.getElementById('checkout')\n .insertAdjacentElement('afterend', formattedResponse);\n}\n\n/**\n * Display an error message for debugging\n *\n * @param {string} text message to display\n */\nfunction showErrorForDebugging(text) {\n const errorDisplay = document.createElement('code');\n errorDisplay.style.color = 'red';\n errorDisplay.appendChild(document.createTextNode(text));\n const p = document.createElement('p');\n p.appendChild(errorDisplay);\n document.getElementById('checkout').insertAdjacentElement('afterend', p);\n}\n\u003c/script\u003e\n```\n\nPayment method parameter list\n-----------------------------\n\nThe Google Pay API configuration passed in `PaymentRequest` is similar to the\n[`PaymentDataRequest`](/pay/api/web/reference/request-objects#PaymentDataRequest)\nobject used by the Google Pay API JavaScript client library with a few exceptions:\n\n- An `environment` property should be set on the object matching a string value described in [`PaymentOptions`](/pay/api/web/reference/request-objects#PaymentOptions)\n- The `transactionInfo` property should be omitted. Total price and currency should instead be specified in the `details` argument passed to `PaymentRequest`\n\nAdditional object properties specified for the Google Pay API payment method in a `PaymentRequest` payment method data property:\n\n| Property | Type | Necessity | Description |\n|---------------|--------|-----------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| `environment` | string | optional | - `PRODUCTION`: return chargeable methods of payment when a valid Google merchant ID is specified and configured for the domain - `TEST`: dummy payment methods returned suitable for testing (default) |"]]