Recursos para IA

Capturar pago autorizado

La finalización de un pago sucede después de la captura del pago autorizado, lo que significa que se puede debitar de la tarjeta el monto reservado para la compra.

Hay dos formas de capturar un pago autorizado:

  • Captura del monto total de una reserva: en el que se captura el monto total del pago reservado.
  • Captura del monto inferior al reservado: en la que se captura el monto parcial del pago reservado.
El tiempo límite para realizar la captura del pago autorizado es de 7 días desde su creación.

A continuación describimos en detalle cada una de las opciones y cómo ejecutarlas.

Capturar monto total

Para capturar el monto total de una reserva, envía el valor a capturar al parámetro transaction_amount y ejecuta la solicitud a través de los códigos disponibles a continuación.

<?php
  use MercadoPago\Client\Payment\PaymentClient;


  MercadoPagoConfig::setAccessToken("YOUR_ACCESS_TOKEN");

  $client = new PaymentClient();
  $request_options = new RequestOptions();
  $request_options->setCustomHeaders(["X-Idempotency-Key: <SOME_UNIQUE_VALUE>"]);

  $client->capture($payment_id, $request_options);
?>

La respuesta va a devolver que el pago se encuentra aprobado y acreditado.

{
  ...
  "status": "approved",
  "status_detail": "accredited",
  ...
  "captured": true,
  ...
}

Capturar monto parcial

Para capturar un monto inferior al reservado, envía el valor a capturar al parámetro transaction_amount y ejecuta la solicitud a través de los códigos disponibles a continuación.

Esta función solo está disponible para tarjetas de bandera Visa, Cabal, Master y American Express.
No es posible captar un monto mayor al monto reservado. En ese caso, deberás cancelar la reserva y generar una nueva con el monto que deseas captar.
<?php

  MercadoPago\SDK::setAccessToken("ENV_ACCESS_TOKEN");

  $payment = MercadoPago\Payment::find_by_id($payment_id);
  $payment->transaction_amount = 75;
  $payment->capture = true;
  $payment->update();
?>

La respuesta va a devolver que el pago se encuentra aprobado y acreditado.

{
  ...
  "status": "approved",
  "status_detail": "accredited",
  ...
  "transaction_amount": 75,
  ...
  "captured": true,
  ...
}