Method: capture

Inicjuje przesyłanie pieniędzy między kontem klienta przechowywanym w Google a podmiotem przetwarzającym płatności. Kombinacja requestId w nagłówku i paymentIntegratorAccountId jest kluczem idempotentności i jednoznacznie identyfikuje tę transakcję. Wszystkie mutacje w tej transakcji (zwroty środków) wypełniają wartość requestId w polu captureRequestId.

Jeśli podczas przetwarzania żądania punkt końcowy napotka błąd, treść odpowiedzi z tego punktu końcowego powinna być typu ErrorResponse.

Przykładowe żądanie wygląda tak:


{
  "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": {}
}

Przykładowa odpowiedź wygląda tak:


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

Żądanie HTTP

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

Treść żądania

Treść żądania zawiera dane o następującej strukturze:

Zapis 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.
}
Pola
requestHeader

object (RequestHeader)

REQUIRED: wspólny nagłówek dla wszystkich żądań.

paymentIntegratorAccountId

string

WYMAGANE: to identyfikator konta integratora płatności, który określa ograniczenia umowne dotyczące tej transakcji.

transactionDescription

string

REQUIRED: to opis transakcji, który może zostać umieszczony na wyciągu klienta. Przetłumaczony na wartość userLocale z pliku requestHeader. Ten format można zmienić bez powiadomienia i nigdy nie można go analizować.

currencyCode

string

WYMAGANE: 3-literowy kod waluty w formacie ISO 4217

amount

string (Int64Value format)

REQUIRED: kwota zakupu wyrażona w mikro jednostki waluty.

captureContext

object (CaptureContext)

REQUIRED: kontekst tego zapisu.

Pole sumy fopDetails. REQUIRED: szczegóły formy płatności dla tej transakcji Capture. fopDetails może mieć tylko jedną z tych wartości:
googlePaymentToken

string

Token, którego obie firmy będą używać do identyfikowania konta do dokonywania zakupów między sobą.

mandateDetails

object (MandateDetails)

Szczegóły płatności dotyczące upoważnienia.

mandateWithNotificationDetails

object (MandateWithNotificationDetails)

Dane do płatności związane z upoważnieniami (jeśli wymagany jest upcomingTransactionNotification).

Pole sumy account_verification.

account_verification może mieć tylko jedną z tych wartości:

authenticationRequestId

string

OPCJONALNIE: requestId powiązanego żądania uwierzytelniania. Jeśli ta wartość nie jest dostępna, z tym zapisem nie można powiązać żadnego uwierzytelniania.

Jeśli ten parametr występuje, użytkownik został uwierzytelniony bezpośrednio przed tym połączeniem lub uwierzytelniony podczas konfigurowania harmonogramu płatności automatycznych.

otpVerification

object (OtpVerification)

OPCJONALNIE: dane niezbędne do weryfikacji hasła jednorazowego wygenerowanego za pomocą sendOtp. Jest widoczny tylko wtedy, gdy użytkownik korzystał z ścieżki sendOtp.

Treść odpowiedzi

Obiekt odpowiedzi dla metody przechwytywania.

W przypadku powodzenia treść żądania zawiera dane o następującej strukturze:

Zapis JSON
{
  "responseHeader": {
    object (ResponseHeader)
  },
  "paymentIntegratorTransactionId": string,
  "userMessage": string,
  "result": enum (CaptureResultCode),
  "rawResult": {
    object (RawResult)
  },
  "transactionLimit": string,
  "currentBalance": string
}
Pola
responseHeader

object (ResponseHeader)

REQUIRED: wspólny nagłówek wszystkich odpowiedzi.

paymentIntegratorTransactionId

string

OPCJONALNIE: ten identyfikator jest specyficzny dla integratora i jest przez niego generowany. Jest to identyfikator, na podstawie którego integrator zna tę transakcję.

Dla ułatwienia ten identyfikator jest podany w szczegółach płatności

userMessage
(deprecated)

string

WYCOFANE: opis wyniku, który wyświetla się użytkownikowi, jeśli wynik nie jest SUCCESS.

result

enum (CaptureResultCode)

REQUIRED: wynik przechwytywania.

rawResult

object (RawResult)

OPTIONAL: nieprzetworzony wynik przechwytywania; Informacje są wykorzystywane w celu informowania silnika ryzyka i analiz Google. W przypadku mapowania kodu odrzucenia czasami dochodzi do utraty danych. Integrator może przekazać Google nieprzetworzony kod. Brama karty kredytowej (integrator) może na przykład użyć tego pola, by przekazać Google dokładny kod odrzucenia otrzymany z sieci VISA. W takim przypadku wartością scope jest „visa”, a rawCode – tym, co zwróciła sieć VISA.

Ta wartość jest wymagana, jeśli result nie ma wartości SUCCESS.

transactionLimit

string (Int64Value format)

OPCJONALNIE: jeśli wynik to CHARGE_EXCEEDS_TRANSACTION_LIMIT, jest to maksymalna kwota, jaką użytkownik może wydać na transakcję (w mikro). Służy on do przygotowywania uporządkowanych wiadomości kierowanych do użytkowników i analizowania współczynnika odrzuceń.

Musi to być limit w stosunku do wartości currencyCode w żądaniu.

currentBalance

string (Int64Value format)

OPCJONALNIE: jeśli wynik to INSUFFICIENT_FUNDS, jest to aktualne dostępne saldo na koncie użytkownika (w mikro). Służy do tworzenia ustrukturyzowanych komunikatów wyświetlanych użytkownikom.

Ta wartość musi być w tej samej walucie co currencyCode w żądaniu.

MandateDetails

Szczegółowe informacje o upoważnieniu do robienia zdjęć.

Zapis JSON
{
  "mandateId": string
}
Pola
mandateId

string

WYMAGANE: wygenerowany przez Google identyfikator upoważnienia, który został wysłany podczas rozmowy createMandate.

MandateWithNotificationDetails

Szczegółowe informacje o upoważnieniu, z którego pochodzą, oraz o wymaganych powiadomieniach.

Zapis JSON
{
  "mandateId": string,
  "upcomingTransactionNotificationId": string
}
Pola
mandateId

string

WYMAGANE: wygenerowany przez Google identyfikator upoważnienia, który został wysłany podczas rozmowy createMandate.

upcomingTransactionNotificationId

string

REQUIRED: requestId z wywołania upcomingTransactionNotification, które zostało wysłane w celu wstępnego powiadomienia o tej transakcji.

CaptureContext

Ten obiekt dostarcza informacji o tym, jak zażądano przechwytywania.

Zapis JSON
{
  "userIpAddress": string
}
Pola
userIpAddress

string

OPCJONALNIE: jest to adres IP urządzenia użytkownika, jeśli zakupu dokonał w trakcie sesji użytkownika. Jeśli użytkownika nie było w sesji, pole jest puste. Jeśli w umowie nie określono potrzeby wypełnienia tego pola, to pole zawsze będzie puste.

CaptureResultCode

Kody wyników do przechwytywania.

Wartości w polu enum
UNKNOWN_RESULT Nigdy nie ustawiaj tej wartości domyślnej.
SUCCESS Udało się zarejestrować, dostarczyć towary.
CHARGE_EXCEEDS_TRANSACTION_LIMIT amount tego żądania przechwytywania przekracza limit na transakcję. Jeśli ten kod jest używany, wypełnij pole transactionLimit na potrzeby komunikacji z użytkownikami.
CHARGE_EXCEEDS_DAILY_LIMIT Nie możesz w tej chwili użyć tego konta do zakupów, ponieważ zostało przekroczone dzienne limity.
CHARGE_EXCEEDS_MONTHLY_LIMIT Nie możesz w tej chwili użyć tego konta do zakupów, ponieważ przekroczyło miesięczne limity.
CHARGE_UNDER_LIMIT amount tego żądania zapisu nie spełnia minimalnej kwoty transakcji.
INSUFFICIENT_FUNDS Na tym koncie nie ma wystarczających środków, aby zagwarantować przejęcie.
ACCOUNT_DOES_NOT_SUPPORT_CURRENCY To konto nie obsługuje żądanej waluty.
ACCOUNT_CLOSED

Konto użytkownika powiązane z integratorem zostało zamknięte.

Zwrócenie tej wartości spowoduje zamknięcie instrumentu użytkownika przez Google. Użytkownik będzie musiał dodać nowy instrument, ponownie przechodząc proces powiązania.

ACCOUNT_CLOSED_ACCOUNT_TAKEN_OVER

Konto użytkownika w usłudze integratora zostało zamknięte. Podejrzewamy przejęcie konta.

Zwrócenie tej wartości spowoduje zamknięcie instrumentu użytkownika przez Google. Użytkownik będzie musiał dodać nowy instrument, ponownie przechodząc proces powiązania.

ACCOUNT_ON_HOLD Konto jest wstrzymane.
ACCOUNT_CLOSED_FRAUD

Konto użytkownika powiązane z integratorem zostało zamknięte z powodu oszustwa.

Zwrócenie tej wartości spowoduje zamknięcie instrumentu użytkownika przez Google. Użytkownik będzie musiał dodać nowy instrument, ponownie przechodząc proces powiązania.

GOOGLE_PAYMENT_TOKEN_INVALIDATED_BY_USER

Konto jest aktywne, ale tag GPT został unieważniony przez użytkownika po stronie integratora.

Zwrócenie tej wartości spowoduje zamknięcie instrumentu użytkownika przez Google. Użytkownik będzie musiał dodać nowy instrument, ponownie przechodząc proces powiązania.

TOKEN_REFRESH_REQUIRED Zwrócenie tego wyniku wymaga od użytkownika przejścia przez proces odświeżania.
OTP_NOT_MATCHED Hasło jednorazowe nie jest zgodne z tym, co wysłał integrator.
OTP_ALREADY_USED Hasło jednorazowe zostało już użyte.
RISK_DECLINED

Transakcja została odrzucona z powodu kontroli ryzyka po stronie integratora.

Jest to trwała nieudana próba płatności, ale nie powoduje to zamknięcia instrumentu płatności użytkownika w Google.

NO_GOOD_FUNDING_SOURCE_AVAILABLE Użytkownik nie ma na swoim koncie żadnego działającego źródła finansowania, które mogłoby zapłacić za transakcję.
FUNDING_SOURCE_UNAVAILABLE

Wydawca lub źródło środków jest niedostępne. Próba ponowienia próby nie powiedzie się.

Ponawiamy próby płatności, gdy partner zwróci kod odpowiedzi 4xx lub 5xx. Z tego powodu partnerzy powinni zwykle zwracać jeden z tych kodów odpowiedzi, jeśli ponowna próba dokonania tej samej płatności może się udać, gdy źródło środków będzie ponownie dostępne. Jeśli jednak z przyczyn technicznych Google ponowienie próby płatności nie powiedzie się, partner może zwrócić wartość „FUNDING_SOURCE_UNAVAILABLE”, aby poinformować Google, że nie należy ponawiać próby dokonania tej samej płatności.

Uwaga: Google nadal może ponowić tę płatność, ale z użyciem innego identyfikatora żądania, ta prośba zostanie jednak oznaczona jako odrzucona.

MANDATE_NOT_ACTIVE Upoważnienie użyte do tego zapisu nie jest już aktywne. Ta wartość zwracana spowoduje zamknięcie instrumentu rozliczeniowego użytkownika w Google.
UPCOMING_TRANSACTION_NOTIFICATION_EXPIRED Powiadomienie wysłane do użytkownika w związku z cyklicznym obciążeniem wygasło.