Method: capture

Veranlasst Geldtransfer zwischen dem bei Google geführten Kundenkonto und dem Zahlungsabwickler. Die Kombination aus requestId im Header und paymentIntegratorAccountId ist der Idempotenzschlüssel und identifiziert diese Transaktion eindeutig. Bei allen Mutationen bei dieser Transaktion (Erstattungen) wird der Wert requestId im Feld captureRequestId eingetragen.

Wenn am Endpunkt bei der Verarbeitung der Anfrage ein Fehler auftritt, sollte der Antworttext von diesem Endpunkt den Typ ErrorResponse haben.

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: Gemeinsamer Header für alle Anfragen.

paymentIntegratorAccountId

string

ERFORDERLICH: Dies ist die Konto-ID des Zahlungsintegrators, die vertragliche Einschränkungen für diese Transaktion angibt.

transactionDescription

string

ERFORDERLICH: Beschreibung der Transaktion, die auf der Abrechnung des Kunden verwendet werden kann. Lokalisiert gemäß der userLocale, die in requestHeader gefunden wurde. Dieses Format kann ohne vorherige Ankündigung geändert und nicht geparst werden.

currencyCode

string

ERFORDERLICH: Der dreistellige Währungscode gemäß ISO 4217.

amount

string (Int64Value format)

ERFORDERLICH: Der Kaufbetrag in Mikros der Währungseinheit.

captureContext

object (CaptureContext)

ERFORDERLICH: Kontext zu dieser Aufnahme.

Union-Feld fopDetails. ERFORDERLICH: FOP-Details für diese Capture-Transaktion. Für fopDetails ist nur einer der folgenden Werte zulässig:
googlePaymentToken

string

Token, das beide Unternehmen verwenden, um das Konto für Käufe untereinander zu identifizieren.

mandateDetails

object (MandateDetails)

Spezielle Zahlungsdetails für Einzugsermächtigungen.

mandateWithNotificationDetails

object (MandateWithNotificationDetails)

Zahlungsdetails für Einzugsermächtigungen, für die 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 zugehörigen Authentifizierungsanfrage. Wenn diese nicht vorhanden ist, kann keine Authentifizierung mit dieser Aufnahme verknüpft werden.

Wenn dieser Wert vorhanden ist, wurde der Nutzer unmittelbar vor diesem Aufruf authentifiziert oder er wurde bei der Einrichtung eines automatischen Zahlungsablaufs authentifiziert.

otpVerification

object (OtpVerification)

OPTIONAL: Daten, die zur Bestätigung eines über sendOtp generierten OTP erforderlich sind. Dies 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)

ERFORDERLICH: Gemeinsamer Header für alle Antworten.

paymentIntegratorTransactionId

string

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

Der Einfachheit halber ist diese ID in den Überweisungsdetails enthalten.

userMessage
(deprecated)

string

EINGESTELLT: Eine Beschreibung des Ergebnisses, das 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 zur Verbesserung der Risikoanalyse und der Risikoanalyse von Google verwendet. Bei abgelehnten Codezuordnungen gehen Daten manchmal verloren. Der Integrator kann Google einen Rohcode zur Verfügung stellen. Beispielsweise kann ein Kreditkarten-Gateway (der Integrationspartner) dieses Feld verwenden, um Google den genauen Ablehnungscode mitzuteilen, der vom VISA-Netzwerk erhalten wurde. In diesem Fall wäre die scope „Visum“. und rawCode entspricht dem Betrag, der 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). Sie wird für strukturierte, an den Nutzer gerichtete Mitteilungen und für die Analyse der Ablehnungsrate verwendet.

Dies muss ein Limit relativ zum 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 Mikros). Sie wird für strukturierte, an den Nutzer gerichtete Werbebotschaften verwendet.

Dieser Wert muss dieselbe Währung haben wie die currencyCode in der Anfrage.

MandateDetails

Details zum Lastschriftmandat, von dem die Aufnahmen gemacht werden sollen.

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

string

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

MandateWithNotificationDetails

Details zum Lastschriftmandat für die Erfassung 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-Aufrufs gesendet wurde.

upcomingTransactionNotificationId

string

ERFORDERLICH: Die requestId des upcomingTransactionNotification-Aufrufs, der zur Benachrichtigung über diese Transaktion durchgeführt wurde.

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 Nutzergeräts, wenn der Kauf von einem Nutzer in einer Sitzung getätigt wurde. Wenn der Nutzer nicht in der Sitzung war, ist dieses Feld leer. Wenn dieses Feld im Vertrag nicht benötigt wird, ist es immer leer.

CaptureResultCode

Ergebniscodes für die Erfassung.

Enums
UNKNOWN_RESULT Legen Sie diesen Standardwert niemals fest.
SUCCESS Die Aufnahme war erfolgreich, die Ware wird geliefert.
CHARGE_EXCEEDS_TRANSACTION_LIMIT Der amount dieser Erfassungsanfrage überschreitet das Limit pro Transaktion. Wenn dieser Code verwendet wird, füllen Sie das Feld „transactionLimit“ für Mitteilungen an Nutzer aus.
CHARGE_EXCEEDS_DAILY_LIMIT Dieses Konto kann momentan nicht für Käufe verwendet werden, da das Tageslimit überschritten ist.
CHARGE_EXCEEDS_MONTHLY_LIMIT Dieses Konto kann momentan 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 Aufnahme zu garantieren.
ACCOUNT_DOES_NOT_SUPPORT_CURRENCY Die gewünschte Währung wird in diesem Konto nicht unterstützt.
ACCOUNT_CLOSED

Das beim Integrator geführte Nutzerkonto wurde geschlossen.

Wird dieser Wert zurückgegeben, wird das Zahlungsmittel des Nutzers mit Google geschlossen. Der Nutzer wird gezwungen, ein neues Zahlungsmittel hinzuzufügen, indem er den Verknüpfungsvorgang noch einmal durchläuft.

ACCOUNT_CLOSED_ACCOUNT_TAKEN_OVER

Das Nutzerkonto beim Integrator wurde geschlossen, da eine Kontoübernahme vermutet wird.

Wird dieser Wert zurückgegeben, wird das Zahlungsmittel des Nutzers mit Google geschlossen. Der Nutzer wird gezwungen, ein neues Zahlungsmittel hinzuzufügen, indem er den Verknüpfungsvorgang noch einmal durchläuft.

ACCOUNT_ON_HOLD Das Konto wurde vorübergehend deaktiviert.
ACCOUNT_CLOSED_FRAUD

Das Konto des Integrators wurde wegen Betrugs geschlossen.

Wird dieser Wert zurückgegeben, wird das Zahlungsmittel des Nutzers mit Google geschlossen. Der Nutzer wird gezwungen, ein neues Zahlungsmittel hinzuzufügen, indem er den Verknüpfungsvorgang noch einmal durchläuft.

GOOGLE_PAYMENT_TOKEN_INVALIDATED_BY_USER

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

Wird dieser Wert zurückgegeben, wird das Zahlungsmittel des Nutzers mit Google geschlossen. Der Nutzer wird gezwungen, ein neues Zahlungsmittel hinzuzufügen, indem er den Verknüpfungsvorgang noch einmal durchläuft.

TOKEN_REFRESH_REQUIRED Für die Rückgabe muss der Nutzer einen Aktualisierungsvorgang durchlaufen.
OTP_NOT_MATCHED Das OTP stimmte nicht mit den vom Integrator gesendeten Informationen überein.
OTP_ALREADY_USED OTP wurde bereits verwendet.
RISK_DECLINED

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

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

NO_GOOD_FUNDING_SOURCE_AVAILABLE Für den Nutzer wurde in seinem Konto keine funktionierende Zahlungsquelle konfiguriert, mit der die Transaktion bezahlt werden kann.
FUNDING_SOURCE_UNAVAILABLE

Der zugrunde liegende Aussteller oder die Zahlungsquelle ist nicht verfügbar. Der Versuch, diese Zahlung erneut auszuführen, schlägt fehl.

Google versucht, Zahlungen zu wiederholen, wenn ein Partner einen 4xx- oder 5xx-Antwortcode zurückgibt. Daher sollten Partner normalerweise einen dieser Antwortcodes zurückgeben, wenn eine Wiederholung derselben Zahlung erfolgreich sein kann, wenn die zugrunde liegende Zahlungsquelle wieder verfügbar ist. Sollte ein Zahlungsversuch aus technischen Gründen weiterhin fehlschlagen, kann der Partner „FUNDING_SOURCE_UNAVAILABLE“ zurückgeben. , um Google mitzuteilen, dass diese Zahlung nicht wiederholt werden soll.

Hinweis: Google kann diese Zahlung weiterhin wiederholen, allerdings nur mit einer anderen requestId. Die Zahlungsanforderung wird jedoch als abgelehnt gekennzeichnet.

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 mit Google geschlossen wird.
UPCOMING_TRANSACTION_NOTIFICATION_EXPIRED Die Benachrichtigung, die der Nutzer für eine wiederkehrende Einzugsermächtigung erhalten hat, ist abgelaufen.