Method: captureResultNotification

Notifica a Google el resultado de una captura después de que se haya realizado una llamada al método capture o asynchronousCapture.

El valor captureResult es idempotente para este captureRequestId, por lo que no se puede cambiar su valor mediante una llamada posterior a este método.

Si el extremo encuentra un error mientras se procesa la solicitud, la respuesta de este extremo será del tipo ErrorResponse.

Es posible que las respuestas a esta consulta estén vacías si este método no muestra un HTTP 200. El cuerpo de la respuesta está vacío en los casos en que se pueda usar un elemento ErrorResponse con una descripción clara para ayudar a un atacante a comprender el identificador de la cuenta del integrador de pagos de otros integradores. En estos casos, en los que la clave de firma no coincide, no se encontró el identificador del integrador de pago o la clave de encriptación es desconocida, este método mostrará un HTTP 404 con un cuerpo vacío. Si se pudo verificar la firma de la solicitud, se mostrará información adicional sobre el error en el cuerpo de la respuesta.

Una solicitud de ejemplo se ve de la siguiente manera:


{
  "requestHeader": {
    "protocolVersion": {
      "major": 1,
      "minor": 1,
      "revision": 0
    },
    "requestId": "KcgwSKrV76eVNDUbsZ4UA3",
    "requestTimestamp": "1481852928293"
  },
  "paymentIntegratorAccountId": "InvisiCashUSA_USD",
  "captureRequestId": "awNaC510cefae3IJdNEvW2",
  "captureResult": {
    "captureResultCode": "SUCCESS"
  }
}

Una respuesta de ejemplo se ve de la siguiente manera:


{
  "responseHeader": {
    "responseTimestamp": "1481852928324"
  },
  "result": "SUCCESS"
}

Solicitud HTTP

POST https://vgw.googleapis.com/secure-serving/gsp/v1/captureResultNotification/:PIAID

Cuerpo de la solicitud

El cuerpo de la solicitud contiene datos con la siguiente estructura:

Representación JSON
{
  "requestHeader": {
    object (RequestHeader)
  },
  "paymentIntegratorAccountId": string,
  "captureRequestId": string,
  "captureResult": {
    object (CaptureResult)
  },
  "paymentIntegratorTransactionId": string
}
Campos
requestHeader

object (RequestHeader)

OBLIGATORIO: Es un encabezado común para todas las solicitudes.

paymentIntegratorAccountId

string

OBLIGATORIO: Es el identificador de la cuenta del integrador de pagos en el que se produjo la captura.

captureRequestId

string

OBLIGATORIO: Es un identificador único para esta transacción. Este es el requestId generado por Google durante la llamada a capture o asynchronousCapture con la que está asociada esta solicitud.

Es una string con una longitud máxima de 100 caracteres y contiene solo los caracteres "a-z", "A-Z", "0-9", ":", "-" y "_".

captureResult

object (CaptureResult)

OBLIGATORIO: Resultado de esta captura.

paymentIntegratorTransactionId

string

OPCIONAL: Este identificador es específico del integrador y lo genera el integrador. 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

Cuerpo de la respuesta

Objeto de respuesta para el método captureResultNotification.

Si se ejecuta correctamente, el cuerpo de la respuesta contendrá datos con la siguiente estructura:

Representación JSON
{
  "responseHeader": {
    object (ResponseHeader)
  },
  "result": enum (CaptureResultNotificationResultCode)
}
Campos
responseHeader

object (ResponseHeader)

OBLIGATORIO: Es el encabezado común para todas las respuestas.

result

enum (CaptureResultNotificationResultCode)

OBLIGATORIO: Resultado de esta llamada.

Capturarresultado

Información sobre el resultado final de una captura.

Representación JSON
{
  "captureResultCode": enum (CaptureResultCode),
  "rawResult": {
    object (RawResult)
  },

  // Union field FailureDetail can be only one of the following:
  "transactionMaxLimit": string,
  "transactionMinLimit": string,
  "currentBalance": string
  // End of list of possible types for union field FailureDetail.
}
Campos
captureResultCode

enum (CaptureResultCode)

OBLIGATORIO: Es el código de resultado de esta captura.

rawResult

object (RawResult)

OPCIONAL: Resultado sin procesar de esta captura. Se usa para ayudar a informar el motor de riesgos y las estadísticas de Google. En situaciones de rechazo del código, es posible que se pierdan datos. El integrador puede optar por darle a Google un código sin procesar. Por ejemplo, una puerta de enlace de tarjetas de crédito (el integrador) puede utilizar este campo para comunicar a Google el código de rechazo exacto que se recibió de la red VISA. En ese caso, el scope sería "visa" y el rawCode sería lo que mostrara la red VISA.

Este valor es obligatorio si result no es SUCCESS.

Campo de unión FailureDetail.

FailureDetail puede ser una de las siguientes opciones:

transactionMaxLimit

string (Int64Value format)

OPCIONAL: Si captureResultCode es CHARGE_EXCEEDS_TRANSACTION_LIMIT, este es el valor de la transacción máxima permitida. Se usa para los mensajes estructurados y orientados al usuario, y para el análisis del porcentaje de rechazo.

Este importe es de micros del mismo objeto currencyCode que la llamada al método capture o asynchronousCapture original.

transactionMinLimit

string (Int64Value format)

OPCIONAL: Si captureResultCode es CHARGE_UNDER_TRANSACTION_LIMIT, este es el valor de la transacción mínima permitida. Se usa para los mensajes estructurados y orientados al usuario, y para el análisis del porcentaje de rechazo.

Este importe es de micros del mismo objeto currencyCode que la llamada al método capture o asynchronousCapture original.

currentBalance

string (Int64Value format)

OPCIONAL: Si el resultado es INSUFFICIENT_FUNDS, este es el saldo disponible actual en la cuenta del usuario (en micros). Se usa para los mensajes estructurados y orientados a los usuarios.

Este valor debe estar en la misma moneda que currencyCode en la solicitud.

Código de resultado de captura

Códigos de resultado para una captura

Enumeradores
UNKNOWN_RESULT No establezcas este valor predeterminado.
SUCCESS La captura se realizó correctamente.
CHARGE_UNDER_TRANSACTION_LIMIT El importe de captura solicitado no cumple con el importe mínimo por transacción del integrador. Si se usa este código, propaga el campo transactionMinLimit con el importe mínimo de transacción para los mensajes del usuario.
CHARGE_EXCEEDS_TRANSACTION_LIMIT El importe de captura solicitado supera el límite máximo por transacción del integrador. Si se usa este código, propaga el campo transactionMaxLimit con el límite de transacción para fines de mensajería del usuario.
CHARGE_EXCEEDS_DAILY_LIMIT No se puede usar la cuenta del usuario para realizar compras en este momento porque se superó el límite diario.
CHARGE_EXCEEDS_MONTHLY_LIMIT No se puede usar la cuenta del usuario para realizar compras en este momento porque se superó el límite mensual.
INSUFFICIENT_FUNDS Esta cuenta no tiene fondos suficientes para garantizar esta captura.
SUSPECTED_FRAUD El integrador tiene motivos para sospechar que esta transacción es fraudulenta.
ACCOUNT_CLOSED Se cerró la cuenta del usuario que tenía el integrador. Este valor de retorno provocará que el instrumento de pago se cierre con Google. El usuario se verá obligado a agregar un instrumento nuevo.
ACCOUNT_CLOSED_ACCOUNT_TAKEN_OVER Se cerró la cuenta del usuario que tiene el integrador y se sospecha que la cuenta tomó el control. Este valor de retorno provocará que el instrumento de pago se cierre con Google. El usuario se verá obligado a agregar un instrumento nuevo.
ACCOUNT_CLOSED_FRAUD Se cerró la cuenta del usuario que tenía el integrador debido a un fraude. Este valor de retorno provocará que el instrumento de pago se cierre con Google. El usuario se verá obligado a agregar un instrumento nuevo.
ACCOUNT_ON_HOLD La cuenta del usuario está suspendida.
OTP_NOT_MATCHED OTP no coincide con lo que envió el integrador.
OTP_ALREADY_USED La OTP ya se usó.
CAPTURE_REQUEST_EXPIRED El integrador tardó demasiado en captar los fondos del usuario. Google tratará el rechazo como un estado final, por lo que el integrador debe asegurarse de que los fondos del usuario no se obtengan más tarde o que el usuario reciba un reembolso automáticamente si la captura se realiza correctamente.
INVALID_PIN El usuario proporcionó un PIN no válido.
OS_LOCK_FAILED Este flujo de pago requiere un desafío de bloqueo del SO, y el usuario no pudo desbloquear el dispositivo.
PIN_ENTRY_ATTEMPTS_EXHAUSTED Este flujo de pago requiere la entrada del PIN del usuario. El usuario no pudo ingresar el PIN suficientes veces que se quedó sin reintentos.
USER_EXITED_PAYMENT_FLOW El usuario canceló el intento de pago completo (ya sea en el bloqueo del SO o en la pantalla de entrada del PIN).
MONTHLY_FREQUENCY_LIMIT_EXCEEDED No se puede usar la cuenta del usuario para realizar compras en este momento porque se superó el límite mensual de intentos de transacción.
DECLINED_BY_ISSUER

Este código de rechazo nunca debe usarse en estado estable. Se diseñó como un código genérico temporal para usar cuando el integrador encuentra un código de rechazo desconocido de la entidad emisora subyacente del instrumento del usuario. Este código de resultado se puede usar mientras el integrador determina un código de resultado más apropiado para usar o negocia la adición de un código de resultado nuevo a esta especificación.

Es importante destacar que este código de rechazo es realmente un rechazo. Para Google, esta es una disminución permanente. Si el integrador muestra esto, depende de él rastrear el significado real del código del emisor y reembolsar al usuario si determina que el código es realmente SUCCESS.

Si este código de rechazo se utiliza para el mismo código subyacente durante más de una cantidad determinada de días, Google lo considerará como un error y lo rastreará según corresponda con respecto a las sanciones contractuales relacionadas con la corrección de errores.

Resultado sin procesar

Objeto de resultado sin procesar.

Representación JSON
{
  "scope": string,
  "rawCode": string
}
Campos
scope

string

OPCIONAL: El alcance del rawCode puede estar vacío.

rawCode

string

OBLIGATORIO: Código sin procesar del integrador o los subsistemas que contiene.

CaptureResultNotificationResultCode.

Códigos de resultado para el método captureResultNotification

Enumeradores
UNKNOWN_RESULT No establezcas este valor predeterminado.
SUCCESS Se procesó correctamente la notificación de captura de resultados.