Method: capture

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

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

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

जेएसओएन के काेड में दिखाना
{
  "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 पाथ से गुज़रता हो.

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

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

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

जेएसओएन के काेड में दिखाना
{
  "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 "वीज़ा" होगा और rawCode, VISA नेटवर्क के बराबर होगा.

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

transactionLimit

string (Int64Value format)

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

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

currentBalance

string (Int64Value format)

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

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

MandateDetails

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

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

string

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

MandateWithNotificationDetails

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

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

string

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

upcomingTransactionNotificationId

string

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

CaptureContext

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

जेएसओएन के काेड में दिखाना
{
  "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

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

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

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

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

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

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

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

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

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

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