- 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 mantiene Google y el procesador de pagos. La combinación de requestId
en el encabezado y paymentIntegratorAccountId
es la clave de idempotencia, que identifica de forma única esta transacción. 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": {}
}
Una respuesta de ejemplo se ve de la siguiente manera:
{
"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 |
REQUIRED: Encabezado común para todas las solicitudes |
paymentIntegratorAccountId |
REQUIRED: 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 localiza en userLocale que se encuentra en |
currencyCode |
OBLIGATORIO: Código de moneda ISO 4217 de 3 letras |
amount |
OBLIGATORIO: Indica el importe de la compra, en micros, de la unidad de moneda. |
captureContext |
OBLIGATORIO: Contexto sobre esta captura. |
Campo de unión fopDetails . OBLIGATORIO: Incluye los detalles de FOP de esta transacción de captura. fopDetails puede ser solo uno de los siguientes: |
|
googlePaymentToken |
El token que usarán ambas empresas para identificar la cuenta en las compras que se realicen entre ellas. |
mandateDetails |
Detalles del pago específicos de los mandatos |
mandateWithNotificationDetails |
Son los detalles del pago específicos de los mandatos, para los que se requiere un |
Campo de unión
|
|
authenticationRequestId |
OPCIONAL: Si está presente, entonces el usuario se autenticó inmediatamente antes de esta llamada o se autenticó cuando se configuró una programación de pagos automatizada. |
otpVerification |
OPCIONAL: Datos necesarios para verificar una OTP generada a partir de |
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 |
REQUIRED: Encabezado común para todas las respuestas |
paymentIntegratorTransactionId |
OPCIONAL: Este identificador es específico del integrador y lo genera este. Este es el identificador con 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 ayudar a fundamentar el motor de riesgos y las estadísticas de Google. En situaciones en las que se genera una asignación de código de rechazo, a veces se pierden los datos. El integrador puede optar por darle a Google un código sin procesar. 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, la Este valor es obligatorio si |
transactionLimit |
OPCIONAL: Si el resultado es Debe ser un límite relativo al |
currentBalance |
OPCIONAL: Si el resultado es Este valor debe coincidir con la moneda que |
MandateDetails
Detalles sobre el mandato de la captura.
Representación JSON |
---|
{ "mandateId": string } |
Campos | |
---|---|
mandateId |
OBLIGATORIO: El ID de mandato generado por Google que se envió durante la llamada a |
MandateWithNotificationDetails
Detalles sobre el mandato que se debe capturar, junto con los detalles de 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 a |
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 un usuario realizó la compra durante una sesión. Si el usuario no estuvo en la sesión, este campo estará vacío. Si el contrato en particular no estipula la necesidad de este campo, siempre estará vacío. |
CaptureResultCode
Códigos de resultado para la captura.
Enumeraciones | |
---|---|
UNKNOWN_RESULT |
No establezcas nunca este valor predeterminado. |
SUCCESS |
Captura los productos correctamente, así que entrega los artículos. |
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 para enviar mensajes 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 la transacción. |
INSUFFICIENT_FUNDS |
Esta cuenta no tiene fondos suficientes para garantizar esta captura. |
ACCOUNT_DOES_NOT_SUPPORT_CURRENCY |
Esta cuenta no admite la moneda solicitada. |
ACCOUNT_CLOSED |
Se cerró la cuenta del usuario que se retuvo con el integrador. Devolver este valor hará que el instrumento del usuario se cierre con Google. El usuario se verá obligado a agregar un nuevo instrumento 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 se realizó una apropiación de la cuenta. Devolver este valor hará que el instrumento del usuario se cierre con Google. El usuario se verá obligado a agregar un nuevo instrumento siguiendo el flujo de asociación nuevamente. |
ACCOUNT_ON_HOLD |
La cuenta está suspendida. |
ACCOUNT_CLOSED_FRAUD |
La cuenta del usuario que se retuvo con el integrador se cerró debido a un fraude. Devolver este valor hará que el instrumento del usuario se cierre con Google. El usuario se verá obligado a agregar un nuevo instrumento siguiendo el flujo de asociación nuevamente. |
GOOGLE_PAYMENT_TOKEN_INVALIDATED_BY_USER |
La cuenta está activa, pero el usuario invalidó la GPT por parte del integrador. Devolver este valor hará que el instrumento del usuario se cierre con Google. El usuario se verá obligado a agregar un nuevo instrumento siguiendo el flujo de asociación nuevamente. |
TOKEN_REFRESH_REQUIRED |
Para que se muestre, el usuario tendrá que pasar por 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 riesgos del lado del integrador. Esto es un error permanente para este pago, pero no causa que se cierre el instrumento del usuario en Google. |
NO_GOOD_FUNDING_SOURCE_AVAILABLE |
El usuario no tiene ninguna fuente de financiación que funcione y esté configurada en su cuenta para pagar la transacción. |
FUNDING_SOURCE_UNAVAILABLE |
La entidad emisora o la fuente de los fondos subyacentes no están disponibles. Si se intenta realizar de nuevo este pago, no se realizará correctamente. Google volverá a intentar los pagos cuando un socio devuelva un código de respuesta 4xx o 5xx. Debido a esto, los socios normalmente deben devolver uno de esos códigos de respuesta si un reintento de este mismo pago puede realizarse correctamente cuando la fuente de fondos subyacente vuelva a estar disponible. Sin embargo, si hay motivos técnicos por los que Google vuelve a intentar el pago y sigue fallando, el socio puede mostrar "FUNDING_SOURCE_UNAVAILABLE". para indicarle a Google que no debe reintentar este mismo pago. Nota: Google aún puede reintentar este pago, pero con un requestId diferente, pero esta solicitud de pago se marcará como rechazada. |
MANDATE_NOT_ACTIVE |
El mandato que se usó para esta captura ya no está activo. Este valor que se muestra hará que se cierre el instrumento de mandato del usuario con Google. |
UPCOMING_TRANSACTION_NOTIFICATION_EXPIRED |
Venció la notificación que se envió al usuario por un pago de mandato recurrente. |