Integración API - módulo de reembolsos
Esta funcionalidad te permite solicitar la cancelación y reembolso de transacciones que fueron pagadas con tarjeta de crédito; y que por motivos de insatisfacción del comprador, múltiples cargos en la misma compra, o en donde el comprador no ha recibido el producto o servicio, requieren la devolución del dinero.
Podrás realizar la solicitud de reembolso empleando el método Refund o Void que se encuentra dispuesto para este fin. Una vez se realiza la solicitud, un agente de servicio al cliente PayU se encargara de validar la información y la justificación de la petición para aprobar la solicitud y realizar el reembolso o declinar la solicitud en caso de que no cumpla los requisitos.
Adicionalmente, podrás consultar el estado de la solicitud de reembolso empleando la API de Consultas disponible para tal fin.
- Solo se podrán realizar solicitudes de reembolso para transacciones con Autorización y captura con estado Capturada que hayan sido realizadas con tarjeta de crédito. En caso de que la solicitud haga referencia a un medio de pago diferente (medios de pago en efectivo, transferencia bancaria), la solicitud será Declinada por el agente de servicio al cliente PayU.
- El sistema solo creará una solicitud para cada petición de reembolso, si envías varias veces la petición de una misma transacción, el sistema solo registrara una solicitud en el módulo y te indicará que la petición ya se encuentra registrada.
- Si una orden o transacción ya fue reembolsada, el sistema indicara que no es posible realizar nuevamente la petición. PayU solo acepta solicitudes de reembolso de transacciones que se encuentran con estado Capturada
- Si una solicitud de reembolso de una orden o transacción fue previamente Declinada, podrás volver a realizar la solicitud de reembolso si así lo consideras necesario.
- Una vez que realizas la solicitud, el monto de la transacción pasa a ser parte del Saldo Congelado de tu cuenta PayU hasta que se dé la respuesta a la solicitud. Si la solicitud de reembolso es Aprobada, el valor de la transacción será debitado del Saldo Congelado ya que es reembolsado al pagador. Si la solicitud de reembolso es Declinada, el valor de la transacción se liberará del Saldo Congelado y retornara al Saldo disponible de tu cuenta PayU.
Solicitar reembolso
Si una transacción se encuentra con estado “Capturada”, podrás emplear el método Refund para realizar la solicitud de reembolso.
Si deseas consumir el servicio deberás apuntar las peticiones a la siguiente URL:Producción: https://api.payulatam.com/payments-api/4.0/service.cgi
Debes enviar de manera obligatoria los siguientes parámetros:
- 1. Id de la orden.
- 2. Id de la transacción.
- 3. El tipo de solicitud que será REFUND.
- 4. Razón para solicitar el reembolso o cancelación de la transacción.
{ "language": "es", "command": "SUBMIT_TRANSACTION", "merchant": { "apiKey": "P4yU*********L4t4mC0l", "apiLogin": "CoM3r*******c1o5" }, "transaction": { "order": { "id": "45678901" }, "type": "REFUND", "reason": "Reason for requesting the refund or cancellation of the transaction", "parentTransactionId": "8795a432-12ab-34cd-1234-a9876bc54321" }, "test": false }
<request> <language>es</language> <command>SUBMIT_TRANSACTION</command> <merchant> <apiKey>P4yU*********L4t4mC0l</apiKey> <apiLogin>CoM3r*******c1o5</apiLogin> </merchant> <transaction> <order> <id>45678901</id> </order> <type>REFUND</type> <reason>Reason for requesting the refund or cancellation of the transaction.</reason> <parentTransactionId>8795a432-12ab-34cd-1234-a9876bc54321</parentTransactionId> </transaction> <isTest>false</isTest> </request>
{ "code": "SUCCESS", "error": null, "transactionResponse": { "orderId": 5831055, "transactionId": null, "state": "PENDING", "paymentNetworkResponseCode": null, "paymentNetworkResponseErrorMessage": null, "trazabilityCode": null, "authorizationCode": null, "pendingReason": "PENDING_REVIEW", "responseCode": null, "errorCode": null, "responseMessage": "5831055", "transactionDate": null, "transactionTime": null, "operationDate": null, "extraParameters": null } }
<paymentResponse> <code>SUCCESS</code> <transactionResponse> <orderId>45678901</orderId> <state>PENDING</state> <pendingReason>PENDING_REVIEW</pendingReason> <responseMessage>Mensaje de respuesta</responseMessage> </transactionResponse> </paymentResponse>
Consultar respuesta
Consultar a través del Módulo Administrativo PayU.
Para realizar la consulta por medio del módulo administrativo, debes ingresar con su usuario y contraseña, acceder a la pestaña Reportes, acceder en el menú lateral a Órdenes, e ingresar el Id de la Orden que se desea consultar en los filtros de búsqueda.
El sistema presentara la información de la orden, y mostrará las transacciones asociadas. Una vez la solicitud de reembolso sea aprobada o declinada, en la orden se mostrara un nuevo registro tipo Reembolso con su respectivo estado, ya sea Aprobada o Declinada, según la solución dada por el agente de Servicio al cliente.
Consultar a través del API
Para ejecutar la consulta de tu solicitud de canelación por medio de la API, debes enviar la siguiente petición:
{ "test": false, "language": "en", "command": "ORDER_DETAIL", "merchant": { "apiLogin": "P4yU*********L4t4mC0l", "apiKey": "CoM3r*******c1o5" }, "details": { "orderId": 45678901 } }
<request> <language>en</language> <command>ORDER_DETAIL</command> <merchant> <apiLogin>P4yU*********L4t4mC0l</apiLogin> <apiKey>CoM3r*******c1o5</apiKey> </merchant> <details class="java.util.HashMap"> <entry> <string>orderId</string> <object class="java.lang.Integer">45678901</object> </entry> </details> <isTest>false</isTest> </request>
{ "code": "SUCCESS", "result": { "payload": { "id": "45678901", "accountId": "543210", "status": "CAPTURED", "referenceCode": "2014-05-29 12:59:59", "description": "Sale description", "language": "es", "transactions": [ { "id": "8366e912-11ac-41cd-8413-a4955ab44713", "creditCard": { "maskedNumber": "411111******1111", "name": "Cardholder name", "issuerBank": "bank 123" }, "type": "AUTHORIZATION_AND_CAPTURE", "paymentMethod": "VISA", "paymentCountry": "CO", "transactionResponse": { "state": "APPROVED", "paymentNetworkResponseCode": "1", "trazabilityCode": "397985698", "authorizationCode": "678901", "responseCode": "APPROVED", "operationDate": "2014-05-29T12:59:59" } } . . . ] } } }
<reportingResponse> <code>SUCCESS</code> <result> <payload class="order"> <id>45678901</id> <accountId>543210</accountId> <status>CAPTURED</status> <referenceCode>2014-05-29 12:59:59</referenceCode> <description>Descripción venta</description> <language>es</language> <transactions> <transaction> <id>8366e912-11ac-41cd-8413-a4955ab44713</id> <creditCard> <maskedNumber>411111******1111</maskedNumber> <name>Nombre del tarjetahabiente</name> <issuerBank>Banco Mundial</issuerBank> </creditCard> <type>AUTHORIZATION_AND_CAPTURE</type> <paymentMethod>VISA</paymentMethod> <paymentCountry>CO</paymentCountry> <transactionResponse> <state>APPROVED</state> <paymentNetworkResponseCode>1</paymentNetworkResponseCode> <trazabilityCode>397985698</trazabilityCode> <authorizationCode>678901</authorizationCode> <responseCode>APPROVED</responseCode> <operationDate>2014-05-29T12:59:59</operationDate> </transactionResponse> . . . </transaction> </transactions> </payload> </result> </reportingResponse>
{ "code": "SUCCESS", "result": { "payload": { "id": "3987200", "accountId": "512321", "status": "CANCELLED", "referenceCode": "REF00123456", "description": "Descripción venta", "language": "es", "transactions": [ { "id": "e8421426-8519-4150-9f00-b22737b85719", "type": "REFUND", "parentTransactionId": "ab752190-84db-4dd4-b010-3c72a619363b", "paymentMethod": "VISA", "source": "CANCELLATION_MODULE", "paymentCountry": "CO", "transactionResponse": { "state": "APPROVED", "responseCode": "NOT_ACCEPTED_TRANSACTION" }, "additionalValues": { . . . } } . . . ] } } }
<reportingResponse> <code>SUCCESS</code> <result> <payload class="order"> <id>3987200</id> <accountId>512321</accountId> <status>CANCELLED</status> <referenceCode>REF00123456</referenceCode> <description>Descripción venta</description> <language>es</language> <transactions> <transaction> <id>57d6411a-9757-4ff5-81e0-e60522e4a1b5</id> <type>REFUND</type> <parentTransactionId>ffe0cdd1-fc6e-42d6-a431-44426999aa59</parentTransactionId> <paymentMethod>VISA</paymentMethod> <paymentCountry>CO</paymentCountry> <transactionResponse> <state>APPROVED</state> <trazabilityCode>00000000</trazabilityCode> <authorizationCode>00000000</authorizationCode> <responseCode>APPROVED</responseCode> <operationDate>2014-05-30T16:20:58</operationDate> </transactionResponse> <additionalValues> . . . <extraParameters> <entry> <string>MANUAL_REFUND</string> <string>true</string> </entry> <entry> <string>ORDER_CANCELLATION_CODE</string> <string>REQUESTED_BY_MERCHANT</string> </entry> <entry> <string>REVERSAL_ACCOUNT_OPERATIONS</string> <string>false</string> </entry> </extraParameters> </transaction> . . . </transactions> . . . </payload> </result> </reportingResponse>
{ "reportingResponse": { "code": "SUCCESS", "result": { "payload": { "-class": "order", "id": "3987200", "accountId": "512321", "status": "CAPTURED", "referenceCode": "REF00123456", "description": "Sale Description", "language": "es", "transactions": { "transaction": { "id": "e8421426-8519-4150-9f00-b22737b85719", "type": "REFUND", "parentTransactionId": "ab752190-84db-4dd4-b010-3c72a619363b", "paymentMethod": "VISA", "source": "CANCELLATION_MODULE", "paymentCountry": "CO", "transactionResponse": { "state": "DECLINED", "responseCode": "NOT_ACCEPTED_TRANSACTION" }, "additionalValues": { . . . } } . . . } } } } }
<reportingResponse> <code>SUCCESS</code> <result> <payload class="order"> <id>3987200</id> <accountId>512321</accountId> <status>CAPTURED</status> <referenceCode>REF00123456</referenceCode> <description>Descripción venta</description> <language>es</language> <transactions> <transaction> <id>e8421426-8519-4150-9f00-b22737b85719</id> <type>REFUND</type> <parentTransactionId>ab752190-84db-4dd4-b010-3c72a619363b</parentTransactionId> <paymentMethod>VISA</paymentMethod> <source>CANCELLATION_MODULE</source> <paymentCountry>CO</paymentCountry> <transactionResponse> <state>DECLINED</state> <responseCode>NOT_ACCEPTED_TRANSACTION</responseCode> </transactionResponse> </transaction> . . . </transactions> <additionalValues> . . . </additionalValues> </payload> </result> </reportingResponse>