Method: capture

Inicjuje przepływ środków między kontem klienta należącym do Google a firmą obsługującą płatności. Kombinacja typu requestId w nagłówku i paymentIntegratorAccountId to klucz idempotentności, który 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)

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

paymentIntegratorAccountId

string

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

transactionDescription

string

WYMAGANE: to jest opis transakcji, który można umieścić na wyciągu klienta. Zlokalizowana zgodnie z ustawieniami użytkownika w języku: requestHeader. Ten format można zmienić bez powiadomienia. Nie wolno go analizować.

currencyCode

string

WYMAGANE: trzyliterowy kod waluty w standardzie ISO 4217.

amount

string (Int64Value format)

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

captureContext

object (CaptureContext)

WYMAGANE: kontekst dotyczący tego zapisu.

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

string

Token, którego obie firmy będą używać do identyfikowania konta na potrzeby wzajemnych zakupów.

mandateDetails

object (MandateDetails)

Dane do płatności specyficzne dla upoważnień.

mandateWithNotificationDetails

object (MandateWithNotificationDetails)

Dane do płatności dotyczące upoważnień, gdy wymagany jest upcomingTransactionNotification.

Pole sumy account_verification.

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

authenticationRequestId

string

OPCJONALNE: requestId powiązanego żądania uwierzytelnienia. Jeśli go nie ma, oznacza to, że nie można powiązać z tym zapisem żadnego uwierzytelniania.

Jeśli tak jest, użytkownik został uwierzytelniony bezpośrednio przed tym połączeniem lub podczas ustawiania harmonogramu płatności automatycznych.

otpVerification

object (OtpVerification)

OPCJONALNIE: dane niezbędne do weryfikacji hasła jednorazowego wygenerowanego na podstawie danych z sendOtp. Ten element występuje tylko wtedy, gdy użytkownik przeszedł ścieżkę 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)

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

paymentIntegratorTransactionId

string

OPCJONALNY: ten identyfikator jest powiązany z integratorem i jest przez niego generowany. Jest to identyfikator, za pomocą którego integrator zna tę transakcję.

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

userMessage
(deprecated)

string

WYCOFANY: opis wyniku, który będzie wyświetlany użytkownikowi, jeśli wynik nie jest wartością SUCCESS.

result

enum (CaptureResultCode)

WYMAGANE: wynik tego przechwytywania.

rawResult

object (RawResult)

OPCJONALNY: nieprzetworzony wynik tego zapisu. Dane są używane do przekazywania informacji do programu wykrywającego zagrożenia Google i analiz. 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 tym przypadku scope będzie to „wiza”. a rawCode to wszystko, 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 do analizy ustrukturyzowanego przesyłania wiadomości dla użytkowników i analizy współczynnika odrzuceń.

Musi to być limit w odniesieniu do elementu currencyCode w żądaniu.

currentBalance

string (Int64Value format)

OPCJONALNIE: jeśli Wynik to INSUFFICIENT_FUNDS, oznacza to, że jest to aktualne dostępne saldo na koncie użytkownika (w mikro). Służy do tworzenia ustrukturyzowanych komunikatów kierowanych do użytkowników.

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

MandateDetails

Szczegóły upoważnienia do przechwytywania.

Zapis JSON
{
  "mandateId": string
}
Pola
mandateId

string

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

MandateWithNotificationDetails

Szczegółowe informacje o upoważnieniu, z którego ma pochodzić dane, 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 wywołania createMandate.

upcomingTransactionNotificationId

string

WYMAGANE: requestId wywołania upcomingTransactionNotification, które zostało wysłane w celu wcześniejszego powiadomienia o tej transakcji.

CaptureContext

Ten obiekt dostarcza informacji o tym, w jaki sposób wysłano żądanie przechwycenia.

Zapis JSON
{
  "userIpAddress": string
}
Pola
userIpAddress

string

OPCJONALNIE: jest to adres IP urządzenia użytkownika, jeśli zakup został dokonany przez użytkownika w sesji. Jeśli użytkownika nie było w sesji, pole będzie opróżniane. Jeśli konkretna umowa nie przewiduje, że to pole jest wymagane, będzie ono zawsze puste.

CaptureResultCode

Kody wyników do przechwycenia.

Wartości w polu enum
UNKNOWN_RESULT Nigdy nie ustawiaj tej wartości domyślnej.
SUCCESS Pomyślne zdjęcie. Dostarcz towary.
CHARGE_EXCEEDS_TRANSACTION_LIMIT Wartość amount tego żądania zapisu przekracza limit na transakcję. Jeśli ten kod jest używany, wypełnij pole „transactionLimit” w celu wyświetlania wiadomości użytkownikom.
CHARGE_EXCEEDS_DAILY_LIMIT W tej chwili nie możesz dokonywać zakupów na tym koncie, ponieważ przekroczono limit dzienny.
CHARGE_EXCEEDS_MONTHLY_LIMIT Tego konta nie można teraz używać do zakupów, ponieważ przekroczono miesięczny limit.
CHARGE_UNDER_LIMIT amount tego żądania zapisu nie spełnia wymagań minimalnej kwoty transakcji.
INSUFFICIENT_FUNDS Na tym koncie nie ma wystarczających środków, aby zagwarantować wykonanie tego zdjęcia.
ACCOUNT_DOES_NOT_SUPPORT_CURRENCY To konto nie obsługuje żądanej waluty.
ACCOUNT_CLOSED

Konto użytkownika przypisane do integratora 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, wykonując ponownie proces tworzenia powiązania.

ACCOUNT_CLOSED_ACCOUNT_TAKEN_OVER

Konto użytkownika u integratora zostało zamknięte. Istnieje podejrzenie przejęcia konta.

Zwrócenie tej wartości spowoduje zamknięcie instrumentu użytkownika przez Google. Użytkownik będzie musiał dodać nowy instrument, wykonując ponownie proces tworzenia 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, wykonując ponownie proces tworzenia 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, wykonując ponownie proces tworzenia powiązania.

TOKEN_REFRESH_REQUIRED Zwrócenie tej wartości wymaga od użytkownika przejścia procesu odświeżania.
OTP_NOT_MATCHED Hasło jednorazowe nie odpowiada temu, 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 niepowodzenie w przypadku tej płatności, ale nie powoduje zamknięcia instrumentu płatności przez Google.

NO_GOOD_FUNDING_SOURCE_AVAILABLE Na koncie użytkownika nie ma skonfigurowanego żadnego działającego źródła finansowania, z którego można zapłacić za transakcję.
FUNDING_SOURCE_UNAVAILABLE

Wydawca bazowy lub źródło środków jest niedostępny. Jeśli spróbujesz ponownie, próba dokonania tej płatności się nie powiedzie.

Google ponawia próbę dokonania 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 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 ponowienie próby płatności przez Google nadal się nie powiedzie, partner może zwrócić kwotę „FUNDING_SOURCE_UNAVAILABLE” , aby poinformować Google, że ta płatność nie powinna ponawiać próby płatności.

Uwaga: Google może ponownie spróbować zrealizować tę płatność, ale z innym identyfikatorem requestId. Ta prośba o płatność zostanie oznaczona jako odrzucona.

MANDATE_NOT_ACTIVE Upoważnienie użyte do tego zapisu nie jest już aktywne. Ta wartość zwrócona spowoduje zamknięcie przez Google instrumentu płatniczego, którego używasz do upoważnień użytkownika.
UPCOMING_TRANSACTION_NOTIFICATION_EXPIRED Powiadomienie wysłane do użytkownika o cyklicznej płatności za polecenie wygasło.