Method: disburseFunds

Inicia el movimiento de dinero entre el procesador de pagos y la cuenta del cliente. 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 propagan el valor requestId en el campo disburseFundsRequestId.

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": "liUrreQY233839dfFFb24gaQM",
    "requestTimestamp": "1502220434778"
  },
  "paymentIntegratorAccountId": "InvisiCashUSA_USD",
  "upiDetails": {
      "vpa": "foo@icici"
  },
  "transactionDescription": "Google - Music",
  "currencyCode": "INR",
  "amount": "208000000"
}

Esta es una respuesta de ejemplo:


{
  "responseHeader": {
    "responseTimestamp": "1481900013178"
  },
  "paymentIntegratorTransactionId": "aW50ZWdyYXRvciB0cmFuc2FjdGlvbiBpZA",
  "disburseFundsResult": {
    "disburseFundsResultCode": "SUCCESS"
  }
}

Solicitud HTTP

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

Cuerpo de la solicitud

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

Representación JSON
{
  "requestHeader": {
    object (RequestHeader)
  },
  "paymentIntegratorAccountId": string,
  "transactionDescription": string,
  "currencyCode": string,
  "amount": string,

  // Union field destinationFopDetails can be only one of the following:
  "upiDetails": {
    object (UpiDetails)
  }
  // End of list of possible types for union field destinationFopDetails.
}
Campos
requestHeader

object (RequestHeader)

OBLIGATORIO: Encabezado común para todas las solicitudes

paymentIntegratorAccountId

string

OBLIGATORIO: Este es el identificador de la cuenta del integrador de pagos que identifica las restricciones contractuales en torno a esta transacción.

transactionDescription

string

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 requestHeader. Este formato se puede cambiar sin previo aviso y nunca se debe analizar.

currencyCode

string

OBLIGATORIO: El código de moneda ISO 4217 de 3 letras.

amount

string (Int64Value format)

OBLIGATORIO: El importe de la compra, en micros de la unidad de moneda.

Campo de unión destinationFopDetails.

destinationFopDetails puede ser una de las siguientes opciones:

upiDetails

object (UpiDetails)

OPCIONAL: Detalles del pago específicos de los instrumentos de UPI

Cuerpo de la respuesta

Objeto de respuesta para el método de desembolso de fondos.

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

Representación JSON
{
  "responseHeader": {
    object (ResponseHeader)
  },
  "paymentIntegratorTransactionId": string,
  "disburseFundsResult": {
    object (DisburseFundsResult)
  }
}
Campos
responseHeader

object (ResponseHeader)

OBLIGATORIO: Encabezado común para todas las respuestas

paymentIntegratorTransactionId

string

OBLIGATORIO: 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.

disburseFundsResult

object (DisburseFundsResult)

OBLIGATORIO: Es el resultado de la llamada de desembolso de los fondos.

UpiDetails

Detalles sobre la cuenta de UPI a la que se desembolsará.

Representación JSON
{
  "vpa": string
}
Campos
vpa

string

OBLIGATORIO: Es la dirección de pago virtual (VPA) del usuario que se usó para transferir dinero mediante el protocolo UPI. Por ejemplo, foo@icici.

DisburseFundsResult

Información sobre el resultado final del desembolso.

Representación JSON
{
  "disburseFundsResultCode": enum (DisburseFundsResultCode),
  "rawResult": {
    object (RawResult)
  },

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

enum (DisburseFundsResultCode)

OBLIGATORIO: Es el código de resultado de este desembolso.

rawResult

object (RawResult)

OPCIONAL: El resultado sin procesar de este desembolso. 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 scope sería "visa" y el rawCode sería la red VISA que se haya devuelto.

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 disburseFundsResultCode es DISBURSEMENT_EXCEEDS_TRANSACTION_LIMIT, este es el valor de la cantidad máxima de transacciones permitidas. Se usa para el análisis de la tasa de rechazo y los mensajes estructurados para los usuarios.

Esta cantidad es de micros del mismo currencyCode que la llamada de método disburseFunds original.

transactionMinLimit

string (Int64Value format)

OPCIONAL: Si disburseFundsResultCode es DISBURSEMENT_UNDER_TRANSACTION_LIMIT, este es el valor de la transacción mínima permitida. Se usa para el análisis de la tasa de rechazo y los mensajes estructurados para los usuarios.

Esta cantidad es de micros del mismo currencyCode que la llamada de método disburseFunds original.

DisburseFundsResultCode

Códigos de resultado para una llamada de desembolso de fondos

Enumeradores
UNKNOWN_RESULT No establezcas nunca este valor predeterminado.
SUCCESS Se realizó correctamente el desembolso.
DISBURSEMENT_UNDER_TRANSACTION_LIMIT El importe del desembolso 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 la transacción para enviar mensajes a los usuarios.
DISBURSEMENT_EXCEEDS_TRANSACTION_LIMIT El importe del desembolso 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 transacciones para enviar mensajes a los usuarios.
ACCOUNT_CLOSED Se cerró la cuenta del usuario que tenía el integrador. Este valor que se muestra hará que el instrumento del usuario 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 con el integrador, por lo que se sospecha que la cuenta está a cargo. Este valor que se muestra hará que el instrumento del usuario 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 que se muestra hará que el instrumento del usuario se cierre con Google. El usuario se verá obligado a agregar un instrumento nuevo.
ACCOUNT_ON_HOLD La cuenta del usuario está suspendida.

RawResult

Objeto de resultado sin procesar.

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

string

OPTIONAL: El alcance del legalCode puede estar vacío.

rawCode

string

OBLIGATORIO: Es el código sin procesar del integrador o los subsistemas que contiene.