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, que identifica de forma única esta transacción. Todas las mutaciones de esta transacción propagan el valor de 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"
}

Una respuesta de ejemplo se ve de la siguiente manera:


{
  "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)

REQUIRED: Encabezado común para todas las solicitudes

paymentIntegratorAccountId

string

REQUIRED: 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 localiza en userLocale que se encuentra en requestHeader. Este formato se puede cambiar sin previo aviso y nunca se debe analizar.

currencyCode

string

OBLIGATORIO: Código de moneda ISO 4217 de 3 letras

amount

string (Int64Value format)

OBLIGATORIO: Indica 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: Son los 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)

REQUIRED: Encabezado común para todas las respuestas

paymentIntegratorTransactionId

string

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

disburseFundsResult

object (DisburseFundsResult)

OBLIGATORIO: Es el resultado de la llamada para desembolsar fondos.

UpiDetails

Detalles sobre la cuenta de UPI a la que se debe realizar el desembolso.

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

string

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

DisburseFundsResult

Información sobre el resultado final de un 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 del resultado de este desembolso.

rawResult

object (RawResult)

OPCIONAL: Es el resultado sin procesar de este desembolso. 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 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 disburseFundsResultCode es DISBURSEMENT_EXCEEDS_TRANSACTION_LIMIT, este es el valor de la transacción máxima permitida. Se utiliza para los mensajes estructurados orientados al usuario y el análisis del porcentaje de rechazos.

Esta cantidad es de micros de la misma 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 utiliza para los mensajes estructurados orientados al usuario y el análisis del porcentaje de rechazos.

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

DisburseFundsResultCode

Códigos de resultado para llamadas de desembolso de fondos.

Enumeraciones
UNKNOWN_RESULT No establezcas nunca este valor predeterminado.
SUCCESS El desembolso se realizó correctamente.
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 se retuvo con el integrador. Este valor de retorno 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 se realizó una apropiación de la cuenta. Este valor de retorno hará que el instrumento del usuario se cierre con Google. El usuario se verá obligado a agregar un instrumento nuevo.
ACCOUNT_CLOSED_FRAUD La cuenta del usuario que se retuvo con el integrador se cerró debido a un fraude. Este valor de retorno 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

OPCIONAL: El alcance del código sin procesar, puede estar vacío.

rawCode

string

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