- Solicitud HTTP
- Cuerpo de la solicitud
- Cuerpo de la respuesta
- MandateDetails
- MandateWithNotificationDetails
- CaptureContext
- CaptureResultCode
Inicia el movimiento de dinero entre la cuenta de un cliente que administra Google y el procesador de pagos. La combinación de requestId
en el encabezado y paymentIntegratorAccountId
es la clave de idempotencia y, además, identifica esta transacción de forma única. Todas las mutaciones de esta transacción (reembolsos) propagan el valor requestId
en el campo captureRequestId
.
Si el extremo encuentra un error mientras procesa la solicitud, el cuerpo de la respuesta de este extremo debe ser del tipo
.ErrorResponse
A continuación, se muestra una solicitud de ejemplo:
{
"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": {}
}
Esta es una respuesta de ejemplo:
{
"responseHeader": {
"responseTimestamp": "1481900013178"
},
"result": "SUCCESS",
"paymentIntegratorTransactionId": "aW50ZWdyYXRvciB0cmFuc2FjdGlvbiBpZA"
}
Solicitud HTTP
POST https://www.integratorhost.example.com/v1/capture
Cuerpo de la solicitud
El cuerpo de la solicitud contiene datos con la siguiente estructura:
Representación JSON |
---|
{ "requestHeader": { object ( |
Campos | |
---|---|
requestHeader |
OBLIGATORIO: Encabezado común para todas las solicitudes |
paymentIntegratorAccountId |
OBLIGATORIO: Este es el identificador de la cuenta del integrador de pagos que identifica las restricciones contractuales en torno a esta transacción. |
transactionDescription |
OBLIGATORIO: Esta es la descripción de la transacción que se puede incluir en el estado de cuenta del cliente. Se localizó según la userLocale que se encuentra en |
currencyCode |
OBLIGATORIO: El código de moneda ISO 4217 de 3 letras. |
amount |
OBLIGATORIO: El importe de la compra, en micros de la unidad de moneda. |
captureContext |
OBLIGATORIO: Contexto sobre esta captura |
Campo de unión fopDetails . OBLIGATORIO: Detalles de las formas de pago para esta transacción de captura. fopDetails puede ser solo uno de los siguientes: |
|
googlePaymentToken |
Es el token que ambas empresas utilizarán para identificar la cuenta en las compras que se realicen entre ellas. |
mandateDetails |
Son los detalles de pago específicos de los mandatos. |
mandateWithNotificationDetails |
Son los detalles del pago específicos de los mandatos, en los que se requiere un |
Campo de unión
|
|
authenticationRequestId |
OPCIONAL: Si aparece esta información, significa que el usuario se autenticó inmediatamente antes de la llamada, o bien se autenticó cuando se configuró una programación de pagos automáticos. |
otpVerification |
OPCIONAL: Son los datos necesarios para verificar una OTP generada desde |
Cuerpo de la respuesta
Objeto de respuesta para el método de captura.
Si se ejecuta correctamente, el cuerpo de la respuesta contendrá datos con la siguiente estructura:
Representación JSON |
---|
{ "responseHeader": { object ( |
Campos | |
---|---|
responseHeader |
OBLIGATORIO: Encabezado común para todas las respuestas |
paymentIntegratorTransactionId |
OPTIONAL: Este identificador es específico del integrador y lo genera este. Este es el identificador por el que el integrador conoce esta transacción. Para mayor comodidad, este identificador se incluye en los detalles de la remesa. |
userMessage |
OBSOLETO: Es una descripción del resultado que se le mostrará al usuario si el resultado no es |
result |
OBLIGATORIO: Es el resultado de esta captura. |
rawResult |
OPCIONAL: Es el resultado sin procesar de esta captura. Se usa para informar al motor de riesgos y las estadísticas de Google. En las situaciones de mapeo de código de rechazo, a veces se pierden los datos. El integrador puede elegir entregar un código sin procesar a Google. Por ejemplo, una puerta de enlace de tarjeta de crédito (el integrador) puede usar este campo para comunicar a Google el código de rechazo exacto que se recibió de la red VISA. En ese caso, el Este valor es obligatorio si |
transactionLimit |
OPCIONAL: Si el resultado es Debe ser un límite relacionado con |
currentBalance |
OPCIONAL: Si el resultado es Este valor debe estar en la misma moneda que |
MandateDetails
Detalles sobre el mandato desde el que se realiza la captura.
Representación JSON |
---|
{ "mandateId": string } |
Campos | |
---|---|
mandateId |
OBLIGATORIO: El ID de mandato generado por Google que se envió durante la llamada |
MandateWithNotificationDetails
Detalles sobre el mandato para capturar, junto con los detalles de las notificaciones requeridas.
Representación JSON |
---|
{ "mandateId": string, "upcomingTransactionNotificationId": string } |
Campos | |
---|---|
mandateId |
OBLIGATORIO: El ID de mandato generado por Google que se envió durante la llamada |
upcomingTransactionNotificationId |
OBLIGATORIO: El |
CaptureContext
Este objeto proporciona contexto sobre cómo se solicitó la captura.
Representación JSON |
---|
{ "userIpAddress": string } |
Campos | |
---|---|
userIpAddress |
OPCIONAL: Es la dirección IP del dispositivo del usuario si quien realizó la compra durante la sesión. Si el usuario no estuvo en la sesión, el campo se vaciará. Si el contrato específico no estipula la necesidad de este campo, siempre estará vacío. |
CaptureResultCode
Códigos de resultado para la captura
Enumeradores | |
---|---|
UNKNOWN_RESULT |
No establezcas nunca este valor predeterminado. |
SUCCESS |
Captura exitosa, entrega la mercadería. |
CHARGE_EXCEEDS_TRANSACTION_LIMIT |
El amount de esta solicitud de captura supera el límite por transacción. Si se usa este código, propaga el campo transactionLimit con fines de mensajería a los usuarios. |
CHARGE_EXCEEDS_DAILY_LIMIT |
Esta cuenta no se puede usar para realizar compras en este momento porque excedió sus límites diarios. |
CHARGE_EXCEEDS_MONTHLY_LIMIT |
Esta cuenta no se puede usar para realizar compras en este momento porque excedió sus límites mensuales. |
CHARGE_UNDER_LIMIT |
El amount de esta solicitud de captura no cumple con el importe mínimo de transacción. |
INSUFFICIENT_FUNDS |
La cuenta no tiene fondos suficientes para garantizar la captura. |
ACCOUNT_DOES_NOT_SUPPORT_CURRENCY |
Esta cuenta no admite la moneda solicitada. |
ACCOUNT_CLOSED |
Se cerró la cuenta del usuario que tenía el integrador. Si se muestra este valor, se cerrará el instrumento del usuario con Google. El usuario se verá obligado a agregar un instrumento nuevo siguiendo el flujo de asociación nuevamente. |
ACCOUNT_CLOSED_ACCOUNT_TAKEN_OVER |
Se cerró la cuenta del usuario con el integrador, por lo que se sospecha que la cuenta está a cargo. Si se muestra este valor, se cerrará el instrumento del usuario con Google. El usuario se verá obligado a agregar un instrumento nuevo siguiendo el flujo de asociación nuevamente. |
ACCOUNT_ON_HOLD |
La cuenta está suspendida. |
ACCOUNT_CLOSED_FRAUD |
Se cerró la cuenta del usuario que tenía el integrador debido a un fraude. Si se muestra este valor, se cerrará el instrumento del usuario con Google. El usuario se verá obligado a agregar un instrumento nuevo siguiendo el flujo de asociación nuevamente. |
GOOGLE_PAYMENT_TOKEN_INVALIDATED_BY_USER |
La cuenta está activa, pero el usuario del integrador invalidó la etiqueta GPT. Si se muestra este valor, se cerrará el instrumento del usuario con Google. El usuario se verá obligado a agregar un instrumento nuevo siguiendo el flujo de asociación nuevamente. |
TOKEN_REFRESH_REQUIRED |
Para mostrar esto, el usuario debe realizar un flujo de actualización. |
OTP_NOT_MATCHED |
La OTP no coincidió con lo que envió el integrador. |
OTP_ALREADY_USED |
Ya se usó la OTP. |
RISK_DECLINED |
Se rechazó la transacción debido a una verificación de riesgo del integrador. Esto constituye un incumplimiento permanente del pago, pero no provoca que el instrumento del usuario se cierre en Google. |
NO_GOOD_FUNDING_SOURCE_AVAILABLE |
El usuario no tiene ninguna fuente de financiación configurada en su cuenta que pueda pagar la transacción. |
FUNDING_SOURCE_UNAVAILABLE |
La entidad emisora o la fuente de fondos subyacente no está disponible. Si vuelves a intentarlo, no podrás volver a realizar el pago que ya existe. Google volverá a intentar los pagos cuando un socio muestre un código de respuesta 4xx o 5xx. Debido a esto, los socios normalmente deben mostrar uno de esos códigos de respuesta si se puede reintentar el mismo pago cuando la fuente de fondos subyacente esté disponible nuevamente. Sin embargo, si hay motivos técnicos por los que Google seguirá reintentando el pago, el socio puede mostrar "FUNDING_SOURCE_UNAVAILABLE" para indicarle a Google que no debe reintentar el mismo pago. Nota: Google aún puede volver a realizar el pago, pero solo con un requestId diferente. Sin embargo, esta solicitud de pago se marcará como rechazada. |
MANDATE_NOT_ACTIVE |
El mandato utilizado para esta captura ya no está activo. Este valor que se muestra hará que el instrumento de mandato del usuario se cierre con Google. |
UPCOMING_TRANSACTION_NOTIFICATION_EXPIRED |
Venció la notificación que se envió al usuario de un pago de mandato recurrente. |