Method: capture

Google के पास मौजूद ग्राहक के खाते और पेमेंट प्रोसेस करने वाली कंपनी के बीच पैसे ट्रांसफ़र करता है. हेडर और paymentIntegratorAccountId में requestId का कॉम्बिनेशन, अनजाने में लगने वाली कुंजी है. साथ ही, यह इस ट्रांज़ैक्शन की खास तौर पर पहचान करता है. इस लेन-देन (रिफ़ंड) में किए गए सभी बदलावों से, captureRequestId फ़ील्ड में requestId की वैल्यू अपने-आप भर जाती है.

अगर अनुरोध को प्रोसेस करते समय एंडपॉइंट को कोई गड़बड़ी मिलती है, तो इस एंडपॉइंट से मिलने वाले रिस्पॉन्स का मुख्य हिस्सा ErrorResponse का होना चाहिए.

अनुरोध का एक उदाहरण यह दिखता है:


{
  "requestHeader": {
    "protocolVersion": {
      "major": 1,
      "minor": 0,
      "revision": 0
    },
    "requestId": "bWVyY2hhbnQgdHJhbnNhY3Rpb24gaWQ",
    "requestTimestamp": "1502220196077"
  },
  "paymentIntegratorAccountId": "InvisiCashUSA_USD",
  "googlePaymentToken": "ZXhhbXBsZSB1bmlxdWUgcGF5bWVudCB0b2tlbiB2YWx1ZQ",
  "transactionDescription": "Google - Music",
  "currencyCode": "INR",
  "amount": "728000000",
  "captureContext": {}
}

जवाब का एक उदाहरण ऐसा दिखता है:


{
  "responseHeader": {
    "responseTimestamp": "1481900013178"
  },
  "result": "SUCCESS",
  "paymentIntegratorTransactionId": "aW50ZWdyYXRvciB0cmFuc2FjdGlvbiBpZA"
}

एचटीटीपी अनुरोध

POST https://www.integratorhost.example.com/v1/capture

अनुरोध का मुख्य भाग

अनुरोध के मुख्य हिस्से में, यहां दिए गए स्ट्रक्चर का डेटा शामिल होता है:

JSON के काेड में दिखाना
{
  "requestHeader": {
    object (RequestHeader)
  },
  "paymentIntegratorAccountId": string,
  "transactionDescription": string,
  "currencyCode": string,
  "amount": string,
  "captureContext": {
    object (CaptureContext)
  },

  // Union field fopDetails can be only one of the following:
  "googlePaymentToken": string,
  "mandateDetails": {
    object (MandateDetails)
  },
  "mandateWithNotificationDetails": {
    object (MandateWithNotificationDetails)
  }
  // End of list of possible types for union field fopDetails.

  // Union field account_verification can be only one of the following:
  "authenticationRequestId": string,
  "otpVerification": {
    object (OtpVerification)
  }
  // End of list of possible types for union field account_verification.
}
फ़ील्ड
requestHeader

object (RequestHeader)

ज़रूरी: सभी अनुरोधों के लिए सामान्य हेडर.

paymentIntegratorAccountId

string

ज़रूरी: यह पेमेंट इंटिग्रेटर खाता आइडेंटिफ़ायर है, जो इस लेन-देन से जुड़ी अनुबंध की सीमाओं की पहचान करता है.

transactionDescription

string

ज़रूरी: यह उस लेन-देन का ब्यौरा है जिसे ग्राहक के स्टेटमेंट में दिखाया जा सकता है. requestHeader में मिले userLocale के हिसाब से. इस फ़ॉर्मैट को बिना किसी सूचना के बदला जा सकता है और इसे कभी पार्स नहीं करना चाहिए.

currencyCode

string

ज़रूरी: ISO 4217 वाला तीन अक्षर वाला मुद्रा कोड

amount

string (Int64Value format)

ज़रूरी है: खरीदारी की रकम, मुद्रा इकाई के माइक्रो में.

captureContext

object (CaptureContext)

ज़रूरी है: इस कैप्चर के बारे में कॉन्टेक्स्ट.

यूनियन फ़ील्ड fopDetails. ज़रूरी: कैप्चर किए गए इस लेन-देन के लिए एफ़ओपी की जानकारी. fopDetails इनमें से सिर्फ़ एक हो सकता है:
googlePaymentToken

string

टोकन, जिसे दोनों कंपनियां एक-दूसरे के बीच खरीदारी के लिए खाते की पहचान करने के लिए इस्तेमाल करेंगी.

mandateDetails

object (MandateDetails)

मैंडेट के हिसाब से पेमेंट के तरीके की जानकारी.

mandateWithNotificationDetails

object (MandateWithNotificationDetails)

मैंडेट के लिए पेमेंट के तरीके की जानकारी, जहां upcomingTransactionNotification ज़रूरी है.

यूनियन फ़ील्ड account_verification.

account_verification इनमें से सिर्फ़ एक हो सकता है:

authenticationRequestId

string

ज़रूरी नहीं: पुष्टि करने से जुड़े अनुरोध का requestId. अगर यह मौजूद नहीं है, तो इस कैप्चर के लिए पुष्टि नहीं की जा सकती.

अगर यह जानकारी मौजूद है, तो इसका मतलब है कि इस कॉल से ठीक पहले उपयोगकर्ता की पुष्टि की गई थी या पेमेंट अपने-आप होने की सुविधा सेट अप करते समय उपयोगकर्ता की पुष्टि हुई थी.

otpVerification

object (OtpVerification)

ज़रूरी नहीं: sendOtp से जनरेट किए गए ओटीपी की पुष्टि के लिए ज़रूरी डेटा. यह सिर्फ़ तब मौजूद होता है, जब उपयोगकर्ता sendOtp पाथ से गुज़रा हो.

जवाब का मुख्य भाग

कैप्चर करने के तरीके के लिए रिस्पॉन्स ऑब्जेक्ट.

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

JSON के काेड में दिखाना
{
  "responseHeader": {
    object (ResponseHeader)
  },
  "paymentIntegratorTransactionId": string,
  "userMessage": string,
  "result": enum (CaptureResultCode),
  "rawResult": {
    object (RawResult)
  },
  "transactionLimit": string,
  "currentBalance": string
}
फ़ील्ड
responseHeader

object (ResponseHeader)

ज़रूरी: सभी जवाबों के लिए सामान्य हेडर.

paymentIntegratorTransactionId

string

ज़रूरी नहीं: यह आइडेंटिफ़ायर खास तौर पर इंटिग्रेटर के लिए होता है और इसे इंटिग्रेटर से जनरेट किया जाता है. यह वह आइडेंटिफ़ायर है जिसके ज़रिए इंटिग्रेटर को इस ट्रांज़ैक्शन के बारे में पता चलता है.

सुविधा के लिए, भेजे जाने वाले पैसे की जानकारी में यह आइडेंटिफ़ायर शामिल होता है

userMessage
(deprecated)

string

अस्वीकार किया गया: अगर नतीजा SUCCESS नहीं है, तो उपयोगकर्ता को दिखाए जाने वाले नतीजे का ब्यौरा.

result

enum (CaptureResultCode)

ज़रूरी है: इस कैप्चर का नतीजा.

rawResult

object (RawResult)

ज़रूरी नहीं: इस कैप्चर का रॉ नतीजा. इस डेटा का इस्तेमाल, Google के रिस्क इंजन और आंकड़ों की जानकारी देने के लिए किया जाता है. कोड-मैपिंग अस्वीकार करने की स्थितियों में, कभी-कभी डेटा मिट जाता है. इंटिग्रेटर के पास Google को रॉ कोड देने का विकल्प होता है. उदाहरण के लिए, क्रेडिट कार्ड गेटवे (इंटीग्रेटर) इस फ़ील्ड का इस्तेमाल करके, Google को अस्वीकार करने के लिए उसी कोड का इस्तेमाल कर सकता है जो VISA नेटवर्क से मिला है. इस मामले में, scope "वीज़ा" होगा और VISA नेटवर्क से मिलने वाली रकम rawCode होगी.

अगर result, SUCCESS नहीं है, तो यह वैल्यू ज़रूरी है.

transactionLimit

string (Int64Value format)

ज़रूरी नहीं: अगर नतीजा CHARGE_EXCEEDS_TRANSACTION_LIMIT है, तो यह वह ज़्यादा से ज़्यादा रकम है जिसे उपयोगकर्ता किसी लेन-देन पर खर्च कर सकता है (माइक्रो में). इसका इस्तेमाल स्ट्रक्चर्ड, उपयोगकर्ताओं को दिखने वाले मैसेज, और अस्वीकार किए जाने की दर का विश्लेषण करने के लिए किया जाता है.

यह सीमा, अनुरोध किए जाने पर currencyCode के हिसाब से होनी चाहिए.

currentBalance

string (Int64Value format)

ज़रूरी नहीं: अगर नतीजा INSUFFICIENT_FUNDS है, तो यह उपयोगकर्ता के खाते (माइक्रो में) का मौजूदा बैलेंस है. इसका इस्तेमाल व्यवस्थित, उपयोगकर्ता को दी जाने वाली मैसेज सेवा के लिए किया जाता है.

यह वैल्यू, अनुरोध किए गए currencyCode की मुद्रा में ही होनी चाहिए.

MandateDetails

उस मैंडेट की जानकारी जिससे हासिल करना है.

JSON के काेड में दिखाना
{
  "mandateId": string
}
फ़ील्ड
mandateId

string

ज़रूरी है: Google का जनरेट किया गया मैंडेट आईडी, जो createMandate कॉल के दौरान भेजा गया था.

MandateWithNotificationDetails

मैंडेट से जुड़ी ज़रूरी जानकारी और इससे जुड़ी ज़रूरी जानकारी.

JSON के काेड में दिखाना
{
  "mandateId": string,
  "upcomingTransactionNotificationId": string
}
फ़ील्ड
mandateId

string

ज़रूरी है: Google का जनरेट किया गया मैंडेट आईडी, जो createMandate कॉल के दौरान भेजा गया था.

upcomingTransactionNotificationId

string

ज़रूरी है: upcomingTransactionNotification कॉल का requestId, जो इस लेन-देन के बारे में पहले से सूचना देने के लिए किया गया था.

CaptureContext

यह ऑब्जेक्ट, कैप्चर करने का अनुरोध करने के तरीके के बारे में जानकारी देता है.

JSON के काेड में दिखाना
{
  "userIpAddress": string
}
फ़ील्ड
userIpAddress

string

ज़रूरी नहीं: अगर उपयोगकर्ता ने सेशन में खरीदारी की है, तो यह उपयोगकर्ता के डिवाइस का आईपी पता होता है. अगर उपयोगकर्ता, सेशन में नहीं था, तो यह फ़ील्ड खाली हो जाएगा. अगर कोई खास अनुबंध इस फ़ील्ड की ज़रूरत को पूरा नहीं करता है, तो यह हमेशा खाली रहेगा.

CaptureResultCode

कैप्चर करने के लिए नतीजों के कोड.

Enums
UNKNOWN_RESULT कभी भी इस डिफ़ॉल्ट वैल्यू को सेट न करें!
SUCCESS सामान कैप्चर कर लिया गया, डिलीवर किया जा चुका है.
CHARGE_EXCEEDS_TRANSACTION_LIMIT इस कैप्चर अनुरोध की amount प्रति लेन-देन सीमा से ज़्यादा है. अगर इस कोड का इस्तेमाल किया जाता है, तो उपयोगकर्ता मैसेज सेवा के लिए transactionLimit फ़ील्ड को भरता है.
CHARGE_EXCEEDS_DAILY_LIMIT फ़िलहाल, इस खाते से खरीदारी नहीं की जा सकती, क्योंकि आपने रोज़ाना इस्तेमाल की तय सीमा पार कर ली है.
CHARGE_EXCEEDS_MONTHLY_LIMIT फ़िलहाल, इस खाते से खरीदारी नहीं की जा सकती, क्योंकि आपने यह महीने की तय सीमाएं पार कर ली हैं.
CHARGE_UNDER_LIMIT इस कैप्चर अनुरोध का amount, कम से कम लेन-देन राशि की शर्त पूरी नहीं करता है.
INSUFFICIENT_FUNDS इस कैप्चर की गारंटी के लिए इस खाते में काफ़ी रकम नहीं है.
ACCOUNT_DOES_NOT_SUPPORT_CURRENCY इस खाते में अनुरोध की गई मुद्रा काम नहीं करती.
ACCOUNT_CLOSED

इंटिग्रेटर के पास मौजूद उपयोगकर्ता का खाता बंद कर दिया गया है.

इस मान को लौटाने से उपयोगकर्ता का डिवाइस Google के साथ बंद हो जाएगा. फिर से असोसिएशन फ़्लो का इस्तेमाल करके, उपयोगकर्ता को एक नया इंस्ट्रुमेंट जोड़ना होगा.

ACCOUNT_CLOSED_ACCOUNT_TAKEN_OVER

इंटिग्रेटर के साथ काम करने वाले उपयोगकर्ता का खाता बंद कर दिया गया है. संदिग्ध खाते का अधिग्रहण कर लिया गया है.

इस मान को लौटाने से उपयोगकर्ता का डिवाइस Google के साथ बंद हो जाएगा. फिर से असोसिएशन फ़्लो का इस्तेमाल करके, उपयोगकर्ता को एक नया इंस्ट्रुमेंट जोड़ना होगा.

ACCOUNT_ON_HOLD खाते पर कुछ समय के लिए रोक लगा दी गई है.
ACCOUNT_CLOSED_FRAUD

धोखाधड़ी के कारण, इंटिग्रेटर के पास मौजूद उपयोगकर्ता का खाता बंद कर दिया गया है.

इस मान को लौटाने से उपयोगकर्ता का डिवाइस Google के साथ बंद हो जाएगा. फिर से असोसिएशन फ़्लो का इस्तेमाल करके, उपयोगकर्ता को एक नया इंस्ट्रुमेंट जोड़ना होगा.

GOOGLE_PAYMENT_TOKEN_INVALIDATED_BY_USER

खाता चालू है, लेकिन इंटिग्रेटर की ओर से GPT को उपयोगकर्ता ने अमान्य कर दिया है.

इस मान को लौटाने से उपयोगकर्ता का डिवाइस Google के साथ बंद हो जाएगा. फिर से असोसिएशन फ़्लो का इस्तेमाल करके, उपयोगकर्ता को एक नया इंस्ट्रुमेंट जोड़ना होगा.

TOKEN_REFRESH_REQUIRED इसे वापस करने के लिए, उपयोगकर्ता को रीफ़्रेश फ़्लो से गुज़रना होगा.
OTP_NOT_MATCHED ओटीपी मेल नहीं खाता. यह इंटिग्रेटर ने भेजा है.
OTP_ALREADY_USED ओटीपी पहले ही इस्तेमाल कर लिया गया है.
RISK_DECLINED

इंटिग्रेटर की ओर से जोखिम की जांच की वजह से, लेन-देन को अस्वीकार कर दिया गया है.

यह इस भुगतान के लिए एक स्थायी विफलता है, लेकिन इसके कारण Google में उपयोगकर्ता के डिवाइस को बंद नहीं किया जाता.

NO_GOOD_FUNDING_SOURCE_AVAILABLE उपयोगकर्ता के पास अपने खाते पर कॉन्फ़िगर किया गया कोई ऐसा चालू फ़ंडिंग स्रोत नहीं है, जो लेन-देन का भुगतान करने में सक्षम हो.
FUNDING_SOURCE_UNAVAILABLE

मौजूदा जारी करने वाला या फ़ंड के सोर्स की जानकारी उपलब्ध नहीं है. अगर फिर से कोशिश की जाती है, तो पेमेंट नहीं हो पाएगा.

जब कोई पार्टनर 4xx या 5xx रिस्पॉन्स कोड वापस भेजता है, तो Google फिर से पेमेंट करने की कोशिश करेगा. इसलिए, पार्टनर को आम तौर पर इनमें से कोई एक रिस्पॉन्स कोड दिखाना चाहिए. ऐसा तब करना चाहिए, जब फ़ंड का सोर्स फिर से उपलब्ध हो जाने पर उसी पेमेंट को दोबारा करने की कोशिश की जाए. हालांकि, अगर कुछ तकनीकी वजहों से Google पेमेंट की फिर से कोशिश नहीं कर पाता है, तो पार्टनर "FUNDING_SOURCE_UNAVAILABLE" लौटा सकता है इससे Google को बताया जा सकता है कि उसे दोबारा पेमेंट करने की कोशिश नहीं करनी चाहिए.

ध्यान दें: Google अब भी इस पेमेंट को दोबारा करने की कोशिश कर सकता है. हालांकि, यह अनुरोध किसी दूसरे अनुरोध आईडी के साथ ही किया जाएगा, लेकिन इस अनुरोध को 'अस्वीकार किया गया' के तौर पर मार्क किया जाएगा.

MANDATE_NOT_ACTIVE इस कैप्चर के लिए इस्तेमाल किया गया मैंडेट अब चालू नहीं है. इस रिटर्न वैल्यू की वजह से, उपयोगकर्ता का मैंडेट इंस्ट्रुमेंट, Google के साथ बंद हो जाएगा.
UPCOMING_TRANSACTION_NOTIFICATION_EXPIRED उपयोगकर्ता को बार-बार होने वाले मैंडेट का पेमेंट करने के लिए भेजी गई सूचना की समयसीमा खत्म हो गई है.