सैंडबॉक्स पेमेंट सेट अप करें

एंड-टू-एंड प्रोजेक्ट को ऑर्डर करने से, क्विक टेस्ट या सैंडबॉक्स एनवायरमेंट का इस्तेमाल करते समय, सैंडबॉक्स पेमेंट मोड को कॉन्फ़िगर करने की सुविधा मिलती है. अपने डेटा फ़ीड की जांच करते समय, सैंडबॉक्स और प्रोडक्शन पेमेंट मोड के बीच स्विच किया जा सकता है. कार्ड से शुल्क लिए बिना, अपने ऑर्डर से जुड़े एंड-टू-एंड प्रोजेक्ट के लिए मिले पेमेंट की जांच करने के लिए, सैंडबॉक्स का इस्तेमाल करें. इसके लिए, पेमेंट मोड का इस्तेमाल करें. प्रोडक्शन एनवायरमेंट, सैंडबॉक्स पेमेंट मोड के साथ काम नहीं करता.

कॉन्फ़िगरेशन

सैंडबॉक्स एनवायरमेंट में सैंडबॉक्स पेमेंट मोड चालू करने के लिए, यह तरीका अपनाएं:

  1. कार्रवाई केंद्र में, कॉन्फ़िगरेशन > सुविधाएं पर जाएं.
  2. खाते की सुविधाएं कार्ड पर, पेमेंट मोड रेडियो बटन ढूंढें.
  3. सैंडबॉक्स विकल्प चुनें और बदलाव सेव करें पर क्लिक करें.

सैंडबॉक्स मोड वाला खाता सुविधाओं वाला कार्ड चुना गया

क्विक टेस्ट एनवायरमेंट में सैंडबॉक्स पेमेंट मोड चालू करने के लिए, यह तरीका अपनाएं:

  1. कार्रवाई केंद्र में, फ़ीड > क्विक टेस्ट पर जाएं.
  2. GPay के लिए सैंडबॉक्स का इस्तेमाल करें रेडियो बटन को चुनें.

सैंडबॉक्स मोड के साथ त्वरित परीक्षण चुना गया

सैंडबॉक्स पेमेंट मोड चुनने पर:

  • ऑर्डरिंग एंड-टू-एंड टूल, Google Pay को ऐसे इंस्ट्रुमेंट टोकन लौटाने के लिए कॉन्फ़िगर करता है जिनमें कार्ड की असल जानकारी के बजाय टेस्ट कार्ड का डेटा होता है.
  • CheckoutRequestMessage और SubmitOrderRequestMessage में, isInSandbox फ़ील्ड को true पर सेट किया गया है.

एनवायरमेंट, पेमेंट मोड, और isInSandbox के अलग-अलग कॉम्बिनेशन इस तरह दिए गए हैं:

एनवायरमेंट पेमेंट मोड isInSandbox
तेज़ और आसान टेस्ट सैंडबॉक्स सही
तेज़ और आसान टेस्ट प्रोडक्शन false
सैंडबॉक्स सैंडबॉक्स सही
सैंडबॉक्स प्रोडक्शन false
प्रोडक्शन प्रोडक्शन false

चेकआउट रिस्पॉन्स मैसेज

खाने का ऑर्डर देने वाली वेब सेवा से मिले CheckoutResponseMessage में, PaymentOptions शामिल है. चेकआउट सेट अप करते समय, पेमेंट गेटवे के उदाहरण का इस्तेमाल करके प्लेसहोल्डर पेमेंट के विकल्प दिए जाते हैं.

  • अपनी वेब सेवा से भेजे गए CheckoutResponseMessage को सही टोकनाइज़ेशन कॉन्फ़िगरेशन के साथ अपडेट करना न भूलें.

पैसे चुकाने के विकल्प के उदाहरण

सैंडबॉक्स कुंजियों का इस्तेमाल करके, अलग-अलग पेमेंट गेटवे के लिए CheckoutResponseMessage से, JSON PaymentOptions ऑब्जेक्ट के उदाहरण यहां दिए गए हैं:

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 फ़ील्ड को अनुरोध में शामिल किया जाता है. साथ ही, आपके वेब सर्विस एंडपॉइंट (CheckoutRequestMessage और SubmitOrderRequestMessage) पर आने वाले अनुरोधों के लिए, इसे true पर सेट किया जाता है. isInSandbox फ़ील्ड को true पर सेट करने पर, ये काम करें:

  • अपने पेमेंट गेटवे के लिए, टोकनाइज़ेशन कॉन्फ़िगरेशन में प्रोडक्शन कुंजियों के बजाय सैंडबॉक्स कुंजियों का इस्तेमाल करें. ज़्यादातर पेमेंट प्रोसेसर, सैंडबॉक्स और प्रोडक्शन, दोनों के लिए एपीआई कुंजियां उपलब्ध कराते हैं.
  • वेब सेवा देने वाली कंपनी, आम तौर पर किसी रेस्टोरेंट, से कोई भी बातचीत ट्रिगर न करें, क्योंकि उन्हें किसी भी सैंडबॉक्स लेन-देन के बारे में सूचना देने की ज़रूरत नहीं होती.

ट्रांज़ैक्शन सैंडबॉक्स चालू होने पर भी, टेस्ट क्रेडिट कार्ड काम नहीं करते हैं. लेन-देन करते समय, आपको असली क्रेडिट कार्ड का इस्तेमाल करना होगा. हालांकि, सैंडबॉक्स इंस्ट्रुमेंट के टोकन में टेस्ट कार्ड की ऐसी जानकारी होती है जिसके लिए शुल्क नहीं लिया जाता.

पेमेंट प्रोसेस करें

जब कोई ग्राहक अपना ऑर्डर सबमिट करता है, तो Ordering End-to-End आपके वेब सर्विस एंडपॉइंट पर SubmitOrderRequestMessage का ऑर्डर भेजता है. Google Pay टोकन को SubmitOrderRequestMessage instrumentToken फ़ील्ड में, बेस-64 कोड में बदली गई स्ट्रिंग के तौर पर शामिल किया जाता है. ग्राहक का पेमेंट प्रोसेस करने के लिए, पेमेंट गेटवे के आधार पर इनमें से कोई एक काम करें:

पेमेंट गेटवे
स्ट्राइप या ब्रेनट्री Base-64 कोड में बदले गए टोकन स्ट्रिंग को डिकोड करें. साथ ही, पेमेंट प्रोसेस करने के लिए, डिकोड किए गए टोकन पेलोड में मौजूद डेटा को अपने पेमेंट गेटवे पर भेजें.
अन्य सभी पेमेंट गेटवे (इसमें Stripev2 शामिल है) पेमेंट प्रोसेस करने के लिए, base-64 कोड में बदली गई पूरी टोकन स्ट्रिंग अपने पेमेंट गेटवे एपीआई पर भेजें. Google Pay के पेमेंट के तरीके के टोकन के स्ट्रक्चर में एन्क्रिप्ट (सुरक्षित) किए गए फ़ील्ड होते हैं. इन्हें आपका पेमेंट गेटवे, पेमेंट प्रोसेस करने के लिए डिक्रिप्ट कर सकता है.

डिकोड किए गए पेलोड का उदाहरण

नीचे दिए गए उदाहरण, अलग-अलग पेमेंट गेटवे के लिए instrumentToken फ़ील्ड में लौटाए गए डिकोड किए गए पेलोड दिखाते हैं:

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

टोकन का इस्तेमाल करके पेमेंट प्रोसेस करने के लिए, base-64 कोड में बदली गई टोकन स्ट्रिंग को gpay से शुरू होने वाले source_id फ़ील्ड में Square के पेमेंट एपीआई पर अनुरोध करें.

  {
    "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 कोड में बदले गए instrumentToken को Braintree से डिकोड करता है:

Node.js

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