サンドボックスの支払いを設定する

エンドツーエンドのプロジェクトの注文では、次の場合にサンドボックス支払いモードを構成できます。 テスト環境を使用してテストできますデータのテスト中 サンドボックス モードと本番環境用の支払いモードを切り替えることができます。目的 カードへの請求を行うことなく、注文エンドツーエンド プロジェクトの支払いをテストする場合は、 サンドボックスお支払いモードとして使用します。本番環境では サンドボックス支払いモードをサポートしています

構成

サンドボックス環境でサンドボックス支払いモードを有効にする手順は次のとおりです。 手順:

  1. Actions Center で、[Configuration] > [Features] に移動します。
  2. [アカウントの機能] カードで [お支払いモード] ラジオボタンを探します。
  3. [サンドボックス] オプションを選択し、[変更を保存] をクリックします。

[サンドボックス モード] が選択されたアカウントの機能カード

クイックテスト環境でサンドボックス支払いモードを有効にする手順は次のとおりです。 手順:

  1. アクション センターで [フィード] に移動します。 > [クイックテスト]
  2. [Use sandbox for GPay] ラジオボタンをオンにします。

サンドボックス モードが選択されたクイックテスト

サンドボックス支払いモードが選択されている場合:

  • エンドツーエンドで注文すると、Google Pay は、 実際のカード情報ではなく、テスト用のカードデータが含まれる。
  • 次のように、isInSandbox フィールドは true に設定されています。 CheckoutRequestMessageSubmitOrderRequestMessage.

Environment、Payment Mode、isInSandbox のさまざまな組み合わせ 次のとおりです。

環境 お支払いモード isInSandbox
クイックテスト サンドボックス true
クイックテスト 本番環境 false
サンドボックス サンドボックス true
サンドボックス 本番環境 false
本番環境 本番環境 false

購入手続きの応答メッセージ

デリバリー&テイクアウト ウェブサービスから送信される CheckoutResponseMessage には以下が含まれます。 PaymentOptions。ユーザーが 購入手続きを設定する サンプルの支払いゲートウェイを使用して、プレースホルダの支払いオプションを指定します。

  • ウェブから送信されるCheckoutResponseMessageを更新してください 適切なトークン化構成を持つサービスに接続します。
で確認できます。 <ph type="x-smartling-placeholder">

支払い方法の例

次の JSON PaymentOptions オブジェクトの例を以下に示します。 サンドボックス キーを使用するさまざまな支払いゲートウェイの CheckoutResponseMessage:

JSON

"paymentOptions": {
    "googleProvidedOptions": {
        "facilitationSpecification": "{\"apiVersion\":2,\"apiVersionMinor\":0,\"merchantInfo\":{\"merchantName\":\"merchantName\"},\"allowedPaymentMethods\":[{\"type\":\"CARD\",\"parameters\":{\"allowedAuthMethods\":[\"PAN_ONLY\"],\"allowedCardNetworks\":[\"VISA\",\"MASTERCARD\"],\"billingAddressRequired\":true,\"cvcRequired\":false},\"tokenizationSpecification\":{\"type\":\"PAYMENT_GATEWAY\",\"parameters\":{\"gatewayMerchantId\":\"YOUR_MERCHANT_ID\",\"gateway\":\"cybersource\"}}}],\"transactionInfo\":{\"currencyCode\":\"USD\",\"totalPriceStatus\":\"ESTIMATED\",\"totalPrice\":\"31.85\"}} "
    }
}

JSON

"paymentOptions": {
    "googleProvidedOptions": {
        "facilitationSpecification": "{\"apiVersion\":2,\"apiVersionMinor\":0,\"merchantInfo\":{\"merchantName\":\"merchantName\"},\"allowedPaymentMethods\":[{\"type\":\"CARD\",\"parameters\":{\"allowedAuthMethods\":[\"PAN_ONLY\"],\"allowedCardNetworks\":[\"VISA\",\"MASTERCARD\"],\"billingAddressRequired\":true,\"cvcRequired\":false},\"tokenizationSpecification\":{\"type\":\"PAYMENT_GATEWAY\",\"parameters\":{\"gateway\":\"braintree\",\"braintree:apiVersion\":\"v1\",\"braintree:sdkVersion\":\"1.4.0\",\"braintree:merchantId\":\"YOUR_MERCHANT_ID\",\"braintree:clientKey\":\"YOUR_BRAINTREE_SANDVOX_OR_PRODUCTION_KEY\"}}}],\"transactionInfo\":{\"currencyCode\":\"USD\",\"totalPriceStatus\":\"ESTIMATED\",\"totalPrice\":\"31.85\"}} "
    }
}

JSON

"paymentOptions": {
    "googleProvidedOptions": {
        "facilitationSpecification": "{\"apiVersion\":2,\"apiVersionMinor\":0,\"merchantInfo\":{\"merchantName\":\"merchantName\"},\"allowedPaymentMethods\":[{\"type\":\"CARD\",\"parameters\":{\"allowedAuthMethods\":[\"PAN_ONLY\"],\"allowedCardNetworks\":[\"VISA\",\"MASTERCARD\"],\"billingAddressRequired\":true,\"cvcRequired\":false},\"tokenizationSpecification\":{\"type\":\"PAYMENT_GATEWAY\",\"parameters\":{\"gateway\":\"stripe\",\"stripe:version\":\"2018-10-31\",\"stripe:publishableKey\":\"YOUR_PRODUCTION_OR_SANDBOX_STRIPE_KEY\"}}}],\"transactionInfo\":{\"currencyCode\":\"USD\",\"totalPriceStatus\":\"ESTIMATED\",\"totalPrice\":\"31.85\"}} "
    }
}

JSON

"paymentOptions": {
    "googleProvidedOptions": {
        "facilitationSpecification": "{\"apiVersion\":2,\"apiVersionMinor\":0,\"merchantInfo\":{\"merchantName\":\"merchantName\"},\"allowedPaymentMethods\":[{\"type\":\"CARD\",\"parameters\":{\"allowedAuthMethods\":[\"PAN_ONLY\"],\"allowedCardNetworks\":[\"VISA\",\"MASTERCARD\"],\"billingAddressRequired\":true,\"cvcRequired\":false},\"tokenizationSpecification\":{\"type\":\"PAYMENT_GATEWAY\",\"parameters\":{\"gateway\":\"stripev2\",\"gatewayMerchantId\":\"YOUR_PRODUCTION_OR_SANDBOX_STRIPE_KEY\"}}}],\"transactionInfo\":{\"currencyCode\":\"USD\",\"totalPriceStatus\":\"ESTIMATED\",\"totalPrice\":\"31.85\"}} "
    }
}

サンドボックス トランザクションにフラグを設定する

サンドボックス支払いモードが有効になっている場合、isInSandbox フィールド リクエストに含まれ、ウェブへの受信リクエストの場合は true に設定 サービス エンドポイント(CheckoutRequestMessageSubmitOrderRequestMessage)。 isInSandbox フィールドが true に設定されている場合、次の操作を行います。

  • トークン化で本番環境キーの代わりにサンドボックス キーを使用する 支払いゲートウェイの設定が必要ですほとんどの決済代行業者は API を提供しています。 鍵を用意する必要があります。
  • ウェブサービス プロバイダとの通信はトリガーしないでください。 サンドボックスでの取引について知る必要がないためです。

取引のサンドボックスが有効になっている場合でも、テスト用のクレジット カードはサポートされていません。 有効にします。取引の際は実際のクレジット カードを使用する必要があります。ただし、 サンドボックス インストルメンテーション トークンには、請求不可能なテストカード情報が含まれています。

<ph type="x-smartling-placeholder">

支払いを処理する

お客様が注文を送信すると、エンドツーエンドの注文処理により、 SubmitOrderRequestMessage ウェブサービスのエンドポイントに接続しますGoogle Pay トークン base-64 でエンコードされた文字列として SubmitOrderRequestMessage instrumentToken 表示されます。お客様のお支払いを処理するには、以下に応じて、以下のいずれかを行います。 お支払いゲートウェイ:

支払いゲートウェイ
Stripe または Braintree Base64 でエンコードされたトークン文字列をデコードし、デコードされたトークン ペイロードに含まれる適切なデータを支払いゲートウェイに送信して、支払いを処理します。
他のすべての支払いゲートウェイ(Stripev2 を含む) Base64 でエンコードされた完全なトークン文字列を支払いゲートウェイ API に送信して、支払いを処理します。Google Pay のお支払い方法トークンの構造には、支払いゲートウェイで支払いを処理するために復号できる暗号化されたフィールドが含まれています。
<ph type="x-smartling-placeholder">

デコードされたペイロードの例

次の例は、instrumentToken で返されるデコードされたペイロードを示しています。 フィールドが表示されます。

<ph type="x-smartling-placeholder">

JSON

この JSON の例は、サービス アカウントの使用時にデコードされた Braintree.nonce フィールドの値を抽出する 値を Braintree に送信して支払いを処理します

{
  "androidPayCards": [{
    "type": "AndroidPayCard",
    "nonce": "aeeb8297-4242...",
    "description": "AndroidPay",
    "consumed": false,
    "details": {
      "cardType": "Visa",
      "lastTwo": "29"
    }
  }]
}

Braintree のコントロール パネルで Google Pay が有効になっていない場合は、 instrumentToken フィールドは、次のエラーにデコードされます。

{
  "error": {
    "message": "Record not found"
  },
  "fieldErrors": []
}

JSON

次の JSON の例は、Stripe を使用する場合にデコードされた支払いトークンを表しています。 id フィールドの値を抽出して Stripe に送信し、 支払いを処理します。

{
  "id": "tok_abcdefg1234...",
  "object": "token",
  "card": {
    "id": "card_abcde...",
    "object": "card",
    "address_city": null,
    "address_country": null,
    "address_line1": null,
    "address_line1_check": null,
    "address_line2": null,
    "address_state": null,
    "address_zip": null,
    "address_zip_check": null,
    "brand": "Visa",
    "country": "US",
    "cvc_check": null,
    "dynamic_last4": "1234",
    "exp_month": 1,
    "exp_year": 2019,
    "funding": "credit",
    "last4": "1234",
    "metadata": {},
    "name": null,
    "tokenization_method": "android_pay"
  },
  "client_ip": "74.125.177.36",
  "created": 1500483670,
  "livemode": false,
  "type": "card",
  "used": false
}

JSON

次の JSON の例は、stripev2 の使用時にデコードされた支払いトークンを表しています。

  {
  "protocolVersion":"ECv2",
  "signature":"MEQCIH6Q4OwQ0jAceFEkGF0JID6sJNXxOEi4r+mA7biRxqBQAiAondqoUpU/bdsrAOpZIsrHQS9nwiiNwOrr24RyPeHA0Q\u003d\u003d",
  "intermediateSigningKey":{
    "signedKey": "{\"keyExpiration\":\"1542323393147\",\"keyValue\":\"MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE/1+3HBVSbdv+j7NaArdgMyoSAM43yRydzqdg1TxodSzA96Dj4Mc1EiKroxxunavVIvdxGnJeFViTzFvzFRxyCw\\u003d\\u003d\"}",
    "signatures": ["MEYCIQCO2EIi48s8VTH+ilMEpoXLFfkxAwHjfPSCVED/QDSHmQIhALLJmrUlNAY8hDQRV/y1iKZGsWpeNmIP+z+tCQHQxP0v"]
  },
  "signedMessage":"{\"tag\":\"jpGz1F1Bcoi/fCNxI9n7Qrsw7i7KHrGtTf3NrRclt+U\\u003d\",\"ephemeralPublicKey\":\"BJatyFvFPPD21l8/uLP46Ta1hsKHndf8Z+tAgk+DEPQgYTkhHy19cF3h/bXs0tWTmZtnNm+vlVrKbRU9K8+7cZs\\u003d\",\"encryptedMessage\":\"mKOoXwi8OavZ\"}"
}
  

JSON

次の JSON の例は、Square の使用時にデコードされた支払いトークンを表しています。

  {
    "signature": "MEYCIQCMAsWCrY2GfHM/gMAKiK3QCKJJOIkjZeTQGzcdWgvrhwIhAJ3mXwe+wmU9z+Apv1rTDsCVQBzayvWzT4ywxytrSPla",
    "protocolVersion": "ECv1",
    "signedMessage": "{\"encryptedMessage\":\"WkYz21EYxojwTqWh6A3oYXtmctu1PlqF+tNYPA4cq017nqj16Ge7kaVR7MI1XG1OrCmcMwP20u5Zb5E28XYan8UI8M4L120orvE9XU1ivZuO4Myq2O3ue8v0lY1MDx8Mnk+5mkAv1kLmzJc91gEQ2leIwrPuMDYqsQUHzTR3Jikh5/v+iWRkyQPKKxgj5c6Erdu/pkg1xV6fQJcHNdq9Jw11zl95x6eQurxw2Uy8v811azGr+noKJbw0uye72MkhmzMS5QKOzwGT9nBfO+zPLYSEewsdOcPbNZF94zk/KU9nxom/gQ+eYEMIZvOj9lO4gQqDqR6DyWyStk7MjeXQTvXWZBI1JpqvOrlTHL0Ct18RpbfOio7hAtafzb0NnqEKlsun+SSpJmvI7U6n6Cnu1JUMUGfT/Jsi6RJ3N6pRw2BubeR1925Xl3jXQnlz5io6X1YRlAcnshZyf6CjBpKES32aTf1m1IHRhZ2Jj6i/g7Y\\u003d\",\"ephemeralPublicKey\":\"BDQA0Cf//BHPcnB0R/GRrWa2g7T1QF97eOhAYy7l45M+kJnsoeL9OaUQV/KIMLvcgbmKkZIm2FQeL7ftd6S4q4c\\u003d\",\"tag\":\"DHtVyXNo+PDr7Thi/EjBBbsr2k7y1SwGIn0D9mmPTJc\\u003d\"}"
  }
    

このトークンを使用して支払いを処理するには、Square の Payment API へのリクエストを含んだ Base-64 エンコードのトークン文字列を source_id フィールドに返し、先頭に gpay: を付けます。

  {
    "idempotency_key": "ID",
    "source_id": "gpay:GOOGLE_PAY_BASE64_ENCODED_TOKEN",
    "amount_money": {
        "amount": 50,
        "currency": "USD"
    },
    "location_id": "LOCATION_ID",
    "billing_address": {
        "postal_code": "11111"
    }
  }

次の例は、Node.js で、Base-64 でエンコードされた Braintree の instrumentToken:

Node.js

function decodeToken(instrumentToken) {
  let decodedString = new Buffer(instrumentToken, 'base64').toString('ascii')
  if (decodedString.androidPayCards) {
    return decodedString.androidPayCards[0].nonce;
  }
}