Method: capture

Initiiert eine Geldbewegung zwischen dem bei Google geführten Kundenkonto eines Kunden und dem Zahlungsabwickler. Die Kombination aus requestId im Header und paymentIntegratorAccountId ist der Idempotenzschlüssel und identifiziert diese Transaktion eindeutig. Alle Mutationen zu dieser Transaktion (Erstattungen) enthalten den Wert requestId im Feld captureRequestId.

Wenn am Endpunkt bei der Verarbeitung der Anfrage ein Fehler auftritt, sollte der Antworttext dieses Endpunkts vom Typ ErrorResponse sein.

Eine Beispielanfrage sieht so aus:


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

Eine Beispielantwort sieht so aus:


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

HTTP-Anfrage

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

Anfragetext

Der Anfragetext enthält Daten mit folgender Struktur:

JSON-Darstellung
{
  "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.
}
Felder
requestHeader

object (RequestHeader)

ERFORDERLICH: Allgemeiner Header für alle Anfragen.

paymentIntegratorAccountId

string

ERFORDERLICH: Dies ist die Zahlungsintegrations-Konto-ID, die vertragliche Beschränkungen bezüglich dieser Transaktion angibt.

transactionDescription

string

ERFORDERLICH: Die Beschreibung der Transaktion, die auf dem Kontoauszug des Kunden angegeben werden kann. Lokalisiert in das userLocale-Format in requestHeader. Dieses Format kann ohne Vorankündigung geändert werden und darf nie geparst werden.

currencyCode

string

ERFORDERLICH: Dreistelliger Währungscode gemäß ISO 4217

amount

string (Int64Value format)

ERFORDERLICH: Der Betrag des Kaufs in Mikros der Währungseinheit.

captureContext

object (CaptureContext)

REQUIRED: Kontext zu dieser Aufnahme.

Union-Feld fopDetails. REQUIRED: Transaktionsdetails für diese Erfassungstransaktion. Für fopDetails ist nur einer der folgenden Werte zulässig:
googlePaymentToken

string

Token, mit dem beide Unternehmen das Konto für Käufe miteinander identifizieren.

mandateDetails

object (MandateDetails)

Zahlungsdetails speziell für Einzugsermächtigungen.

mandateWithNotificationDetails

object (MandateWithNotificationDetails)

Zahlungsdetails speziell für Einzugsermächtigungen, bei denen eine upcomingTransactionNotification erforderlich ist.

Union-Feld account_verification.

Für account_verification ist nur einer der folgenden Werte zulässig:

authenticationRequestId

string

OPTIONAL: requestId der verknüpften Authentifizierungsanfrage. Wenn dieses Feld nicht vorhanden ist, kann dieser Aufnahme keine Authentifizierung zugeordnet werden.

In diesem Fall wurde der Nutzer unmittelbar vor diesem Anruf oder bei der Einrichtung eines automatischen Zahlungsablaufs authentifiziert.

otpVerification

object (OtpVerification)

OPTIONAL: Daten, die zur Bestätigung eines über sendOtp generierten OTP erforderlich sind. Dieser ist nur vorhanden, wenn der Nutzer den Pfad sendOtp verwendet hat.

Antworttext

Antwortobjekt für die Erfassungsmethode.

Bei Erfolg enthält der Antworttext Daten mit der folgenden Struktur:

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

object (ResponseHeader)

REQUIRED: Allgemeiner Header für alle Antworten.

paymentIntegratorTransactionId

string

OPTIONAL: Diese Kennung ist spezifisch für den Integrator und wird vom Integrator generiert. Dies ist die Kennung, anhand derer der Integrator diese Transaktion kennt.

Diese Kennung ist in den Überweisungsdetails enthalten.

userMessage
(deprecated)

string

EINGESTELLT: Eine Beschreibung des Ergebnisses, die dem Nutzer angezeigt wird, wenn das Ergebnis nicht SUCCESS ist.

result

enum (CaptureResultCode)

REQUIRED: Ergebnis dieser Aufnahme.

rawResult

object (RawResult)

OPTIONAL: Rohergebnis dieser Aufnahme. Wird verwendet, um die Risiko-Engine und Analysen von Google zu informieren. Bei abgelehnten Codezuordnungen gehen Daten manchmal verloren. Der Integrator kann Google einen Rohcode zur Verfügung stellen. Beispielsweise kann ein Kreditkarten-Gateway (der Integrator) dieses Feld verwenden, um Google den genauen Ablehnungscode zu senden, der vom VISA-Netzwerk erhalten wurde. In diesem Fall wäre die scope das „Visum“ und die rawCode das, was vom VISA-Netzwerk zurückgegeben wurde.

Dieser Wert ist erforderlich, wenn result nicht SUCCESS ist.

transactionLimit

string (Int64Value format)

OPTIONAL: Wenn das Ergebnis CHARGE_EXCEEDS_TRANSACTION_LIMIT ist, ist dies der maximale Betrag, den der Nutzer für eine Transaktion ausgeben kann (in Mikros). Dieser wird für strukturierte, nutzerorientierte Nachrichten und die Analyse der Ablehnungsrate verwendet.

Dies muss ein Limit bezogen auf den currencyCode in der Anfrage sein.

currentBalance

string (Int64Value format)

OPTIONAL: Wenn das Ergebnis INSUFFICIENT_FUNDS ist, ist dies das aktuell verfügbare Guthaben im Konto des Nutzers (in Mikroeinheiten). Dieser wird für strukturierte, an die Nutzer gerichtete Mitteilungen verwendet.

Dieser Wert muss in derselben Währung wie der currencyCode in der Anfrage angegeben werden.

MandateDetails

Details zum Lastschriftmandat, von dem Daten erhoben werden sollen

JSON-Darstellung
{
  "mandateId": string
}
Felder
mandateId

string

ERFORDERLICH: Die von Google generierte Lastschriftmandat-ID, die während des createMandate-Anrufs gesendet wurde.

MandateWithNotificationDetails

Details zum Lastschriftmandat, aus dem Daten erhoben werden sollen, sowie die erforderlichen Benachrichtigungsdetails.

JSON-Darstellung
{
  "mandateId": string,
  "upcomingTransactionNotificationId": string
}
Felder
mandateId

string

ERFORDERLICH: Die von Google generierte Lastschriftmandat-ID, die während des createMandate-Anrufs gesendet wurde.

upcomingTransactionNotificationId

string

ERFORDERLICH: Die requestId des upcomingTransactionNotification-Aufrufs, der zur Vorabbenachrichtigung zu dieser Transaktion erfolgt ist.

CaptureContext

Dieses Objekt liefert Kontext dazu, wie die Erfassung angefordert wurde.

JSON-Darstellung
{
  "userIpAddress": string
}
Felder
userIpAddress

string

OPTIONAL: Dies ist die IP-Adresse des Geräts des Nutzers, wenn der Kauf von einem Nutzer in einer Sitzung getätigt wurde. Wenn der Nutzer nicht an einer Sitzung teilgenommen hat, bleibt dieses Feld leer. Wenn dies laut Vertrag nicht vorgesehen ist, bleibt es immer leer.

CaptureResultCode

Ergebniscodes für die Erfassung.

Enums
UNKNOWN_RESULT Legen Sie diesen Standardwert niemals fest!
SUCCESS Erfolgreiche Aufnahme, Lieferung der Waren.
CHARGE_EXCEEDS_TRANSACTION_LIMIT Der amount dieser Erfassungsanfrage überschreitet das Transaktionslimit. Wenn dieser Code verwendet wird, wird das Feld „transactionLimit“ für Nutzermitteilungen ausgefüllt.
CHARGE_EXCEEDS_DAILY_LIMIT Dieses Konto kann derzeit nicht für Käufe verwendet werden, da das Tageslimit überschritten wurde.
CHARGE_EXCEEDS_MONTHLY_LIMIT Dieses Konto kann derzeit nicht für Käufe verwendet werden, da das monatliche Limit überschritten wurde.
CHARGE_UNDER_LIMIT Der amount dieser Erfassungsanfrage entspricht nicht dem Mindesttransaktionsbetrag.
INSUFFICIENT_FUNDS Das Konto ist nicht ausreichend gedeckt, um diese Erfassung zu garantieren.
ACCOUNT_DOES_NOT_SUPPORT_CURRENCY Die angeforderte Währung wird von diesem Konto nicht unterstützt.
ACCOUNT_CLOSED

Das beim Integrator gesperrte Nutzerkonto wurde geschlossen.

Durch die Rückgabe dieses Werts wird das Zahlungsmittel des Nutzers bei Google geschlossen. Der Nutzer wird gezwungen, ein neues Instrument hinzuzufügen, indem er den Verknüpfungsablauf noch einmal durchläuft.

ACCOUNT_CLOSED_ACCOUNT_TAKEN_OVER

Das Konto des Nutzers beim Integrator wurde geschlossen. Grund dafür ist eine mögliche Kontoübernahme.

Durch die Rückgabe dieses Werts wird das Zahlungsmittel des Nutzers bei Google geschlossen. Der Nutzer wird gezwungen, ein neues Instrument hinzuzufügen, indem er den Verknüpfungsablauf noch einmal durchläuft.

ACCOUNT_ON_HOLD Das Konto wurde vorübergehend deaktiviert.
ACCOUNT_CLOSED_FRAUD

Das beim Integrator geführte Konto des Nutzers wurde aufgrund eines Betrugs geschlossen.

Durch die Rückgabe dieses Werts wird das Zahlungsmittel des Nutzers bei Google geschlossen. Der Nutzer wird gezwungen, ein neues Instrument hinzuzufügen, indem er den Verknüpfungsablauf noch einmal durchläuft.

GOOGLE_PAYMENT_TOKEN_INVALIDATED_BY_USER

Das Konto ist aktiv, aber das GPT wurde vom Nutzer aufseiten des Integrators ungültig gemacht.

Durch die Rückgabe dieses Werts wird das Zahlungsmittel des Nutzers bei Google geschlossen. Der Nutzer wird gezwungen, ein neues Instrument hinzuzufügen, indem er den Verknüpfungsablauf noch einmal durchläuft.

TOKEN_REFRESH_REQUIRED Bei der Rückgabe muss der Nutzer einen Aktualisierungsvorgang durchlaufen.
OTP_NOT_MATCHED Das OTP entsprach nicht dem, was der Integrator gesendet hat.
OTP_ALREADY_USED OTP wurde bereits verwendet.
RISK_DECLINED

Die Transaktion wurde aufgrund einer Risikoprüfung seitens des Integrators abgelehnt.

Dies ist ein dauerhafter Ausfall der Zahlung, führt jedoch nicht dazu, dass das Zahlungsmittel des Nutzers bei Google geschlossen wird.

NO_GOOD_FUNDING_SOURCE_AVAILABLE Der Nutzer hat in seinem Konto keine funktionierende Zahlungsquelle konfiguriert, mit der er die Transaktion bezahlen kann.
FUNDING_SOURCE_UNAVAILABLE

Der zugrunde liegende Aussteller oder die Zahlungsquelle ist nicht verfügbar. Ein neuer Versuch mit dieser Zahlung ist nicht erfolgreich.

Google wiederholt Zahlungen, wenn ein Partner einen 4xx- oder 5xx-Antwortcode zurückgibt. Aus diesem Grund sollten Partner normalerweise einen dieser Antwortcodes zurückgeben, wenn ein Wiederholungsversuch derselben Zahlung erfolgreich sein könnte, wenn die zugrunde liegende Zahlungsquelle wieder verfügbar ist. Falls die Zahlung aus technischen Gründen weiterhin fehlschlägt, kann der Partner „FUNDING_SOURCE_UNAVAILABLE“ zurückgeben, um Google mitzuteilen, dass die Zahlung nicht wiederholt werden soll.

Hinweis: Google kann diese Zahlung möglicherweise noch einmal mit einer anderen Anfrage-ID wiederholen. Diese Zahlungsanforderung wird jedoch als „Abgelehnt“ markiert.

MANDATE_NOT_ACTIVE Das für diese Aufnahme verwendete Lastschriftmandat ist nicht mehr aktiv. Dieser Rückgabewert führt dazu, dass das Lastschriftmandat des Nutzers bei Google geschlossen wird.
UPCOMING_TRANSACTION_NOTIFICATION_EXPIRED Die Benachrichtigung, die an den Nutzer zu einer wiederkehrenden Einzugsermächtigung gesendet wurde, ist abgelaufen.