Gestiona pagos

→Flujo de Mercado Pago obligatorio (sólo para países con Mercado Pago)
→Flujo de devolución de dinero en cuenta por ventas canceladas
→¿Cómo tu app toma conocimiento de una compra?
→Recibir una notificación
→Pagos
→Escenario de pagos múltiples
→Identificar dos pagos
→Obtener información de un pago
→Obtener información del pago siendo vendedor


Flujo de Mercado Pago obligatorio (sólo para países con Mercado Pago)

¿Cómo saber si un site tiene Mercado Pago activo? Para obtener esa información deberás realizar la siguiente llamada:

curl -X GET https://api.mercadolibre.com/sites/MLA

Si obtienes "MLAMP" como respuesta dentro de los "payment_method_ids" podrás trabajar sin problemas con este flujo. Aclaración: MLAMP es el ID del método de pago Mercado Pago:

curl -X GET https://api.mercadolibre.com/payment_methods/MLAMP

Dentro de nuestra plataforma encontrarás orders que pueden entrar por el flujo obligatorio de Mercado Pago como único medio de pago y otras que no. Los escenarios que se presentan a continuación son en los que podrás encontrar esta opción de manera obligatoria:

  • Todas las órdenes de MLB.
  • Todas las órdenes de MLA y MLM por venta de productos con "condition": "new".
  • Publicaciones de Tiendas Oficiales en todos los países con Mercado Pago.
  • Categorías con Mercado Pago como única opción (Para más información dirigete a:Categorías con pago inmediato.
  • Usuario marcado automáticamente para que sus operaciones vayan por este flujo, con la marca “immediate_payment” en la API de user.
  • Vendedor "auto" marcado para que sus ventas vayan porflujo.

Ahora explicamos cómo es el funcionamiento general de las órdenes ya sea que ingresen por este flujo o no: 1) Las órdenes que entran por este flujo se crean en estado "payment_required". En ese momento tienen las siguientes características:

  • No son visibles para el seller.
  • No se descuenta el stock de item.
  • No tienen establecido el campo date_closed.
  • No tienen datos de la contraparte.
  • Se envía sólo la notificación del topic "created_orders".

Cuando el pago se acredita por el monto total de la venta, la orden pasa del estado "payment_required" a “paid”. En ese momento:

  • Se hacen visibles para el seller.
  • Se descuenta el stock de item.
  • Se establece el campo date_closed.
  • Se agregan los datos de la contraparte.
  • Comienzan a enviarse además las notificaciones del topic "orders".

Las órdenes que NO entran por este flujo se crean en estado “confirmed”. Desde ese momento:

  • Son visibles para el seller.
  • Se descuenta el stock de item.
  • Se establece el campo date_closed.
  • Tiene los datos de la contraparte.
  • Comienzan a enviarse además las notificaciones del topic "orders"/”created_orders”.

En caso de que se termine efectuando un pago a través de Mercado Pago y es acreditado por el monto total de la venta, la orden pasa del estado "confirmed" a "paid".
Aclaración: En ambos casos, si durante el flujo de pago el comprador elige Mercado Envíos (ME2, sólo en países dónde está activo este servicio), el envío tendrá disponible para imprimir la etiqueta una vez que haya pasado a “paid” la order. Más info.


Flujo de devolución de dinero en cuenta por ventas canceladas

Importante:
Solo está disponible para vendedores de México y próximamente, para aquellos de Argentina y Brasil.

Ante cancelaciones, los compradores con buena reputación y que realicen pagos con tarjeta de crédito o débito recibirán automáticamente la devolución con dinero en cuenta de Mercado Pago. De esta manera, la orden de compra queda en estado diferente respecto de los demás flujos. Los cambios serán:

  • status = paid
  • Nuevo tag: unfulfilled
Nota:
La orden jamás tendrá el status cancelled ya que mediante la devolución con dinero en cuenta genera que el pago debe concretarse. En el pago de la orden encontrarás el tag refund_account_money.


¿Cómo tu app toma conocimiento de una compra?

La creación de una orden es un evento que se produce del lado de Mercado Libre, por eso deberás suscribirte a nuestro feed de orders para tomar conocimiento en tiempo real cuando ese evento ocurre. Dirígete a nuestro Administrador de Aplicaciones y edita las Configuraciones de Notificaciones de tu aplicación. Para más información sobre crear y configurar una nueva aplicación, por favor consulta este link. Debes seleccionar un Callback URL: configura el URL público del dominio donde deseas recibir todas las notificaciones de Mercado Libre. Por ejemplo: "https://backend.soleorigami.com/notification".
topicsconmensajeria

Esta configuración te permite interactuar con las notificaciones de Mercado Libre. Todos los eventos (como pagos y envío) relacionados con un orden serán notificados a tu callback URL.


Recibir una notificación

Mercado Libre te enviará notificaciones a través de un mensaje POST con información en el cuerpo de publicación. El atributo más importante del mensaje es el user_id, que está relacionado con la notificación, y el segundo en importancia es el recurso. El recurso es el elemento que fue actualizado o creado.

{
  "user_id": 1234,
  "resource": "/orders/731867397",
  "topic": "orders",
  "received": "2011-10-19T16:38:34.425Z",
  "application_id" : 14529
  "sent" : "2011-10-19T16:40:34.425Z",
  "attempts" : 0
}

Después de recibir la notificación, debes enviar un acuse de recibo [acknowledgment] (ACK 200) a Mercado Libre para dejar de recibirla.


Pagos

Mercado Pago es la plataforma de pagos de Mercado Libre. Si deseas integrar una solución de pagos en tu plataforma, debes consultar el sitio de desarrolladores de Mercado Pago.


Escenario de pagos múltiples

En algunos casos, cuando se rechaza el pago por llegar al límite de la tarjeta de crédito, permitimos a los usuarios agregar otro pago con una segunda tarjeta de crédito.


Identificar dos pagos

Cuando realizas una solicitud GET a la API de órdenes, verás que dentro del conjunto de pagos habrá dos ID con los detalles de cada pago. Ejemplo:

curl -X GET https://api.mercadolibre.com/orders/893431118?access_token=&ACCESS_TOKEN

Respuesta

{
  "buyer": {
      "alternative_phone": {
          "area_code": null,
          "extension": null,
          "number": ""
      },
      "billing_info": {
          "doc_number": "67045427794",
          "doc_type": "CPF"
      },
      "email": "test_user_21963158@testuser.com",
      "first_name": "Test",
      "id": 160903317,
      "last_name": "Test",
      "nickname": "TETE2022123",
  },
  "coupon": {
      "amount": 0,
      "id": null
    },
  "currency_id": "BRL",
  "date_closed": null,
  "date_created": "2014-10-26T22:46:18.000-04:00",
  "feedback": {
      "purchase": null,
      "sale": null
  },
  "id": 893431118,
  "last_updated": "2014-10-26T22:50:10.000-04:00",
    "mediations": [],
  "order_items": [
      {
          "currency_id": "BRL",
          "item": {
              "id": "MLB600034093",
              "title": "Item De Testeo, Por Favor No Ofertar --kc:off",
              "variation_attributes": [],
              "variation_id": null
          },
          "quantity": 1,
          "unit_price": 591
      }
  ],
  "paid_amount": 591,
  "payments": [
      {
          "activation_uri": null,
          "atm_transfer_reference": {
              "company_id": null,
                "transaction_id": null
          },
            "available_actions": [],
          "card_id": null,
          "collector": {
              "id": 169648308
          },
          "coupon_amount": 0,
          "coupon_id": null,
          "currency_id": "BRL",
          "date_created": "2014-10-26T22:48:46.000-04:00",
            "date_last_modified": "2014-10-27T00:51:53.000-04:00",
          "id": 885920310,
          "installments": 1,
          "issuer_id": "25",
          "operation_type": "regular_payment",
          "order_id": 893431118,
          "overpaid_amount": 0,
          "payer_id": 160903317,
            "payment_method_id": "visa",
          "payment_type": "credit_card",
          "reason": "Item De Testeo, Por Favor No Ofertar --kc:off",
          "shipping_cost": 0,
          "site_id": "MLB",
          "status": "approved",
          "status_code": null,
          "status_detail": "accredited",
            "total_paid_amount": 296,
            "transaction_amount": 296
      },
      {
          "activation_uri": null,
            "atm_transfer_reference": {
              "company_id": null,
                "transaction_id": null
          },
            "available_actions": [],
          "card_id": null,
          "collector": {
              "id": 169648308
          },
          "coupon_amount": 0,
          "coupon_id": null,
          "currency_id": "BRL",
          "date_created": "2014-10-26T22:50:10.000-04:00",
            "date_last_modified": "2014-10-26T22:50:21.000-04:00",
          "id": 885920410,
          "installments": 3,
          "issuer_id": "25",
          "operation_type": "regular_payment",
          "order_id": 893431118,
          "overpaid_amount": 0,
          "payer_id": 160903317,
            "payment_method_id": "visa",
          "payment_type": "credit_card",
          "reason": "Item De Testeo, Por Favor No Ofertar --kc:off",
          "shipping_cost": 0,
          "site_id": "MLB",
          "status": "approved",
          "status_code": null,
          "status_detail": "accredited",
            "total_paid_amount": 315.62,
            "transaction_amount": 295
      }
  ],
  "seller": {
      "alternative_phone": {
          "area_code": null,
          "extension": null,
          "number": ""
      },
      "email": "test_user_70385259@testuser.com",
      "first_name": "Test",
      "id": 169648308,
      "last_name": "Test",
      "nickname": "TETE6072468",
      "phone": {
          "area_code": "01",
          "extension": null,
          "number": "1111-1111"
      }
  },
  "shipping": {
      "status": "null"
  },
  "status": "paid",
  "status_detail": null,
  "tags": [
      "not_delivered",
      "paid"
  ],
  "total_amount": 591,

}

Obtener información de un pago

Para obtener información del pago de un comprador utilizando el token deberás recurrir al recurso “payments”.

Ejemplo:

curl -X GET https://api.mercadolibre.com/payments?access_token=$ACCESS_TOKEN

Obtener información del pago

Para esto, debes consultar al recurso payments de Mercado Pago Developers. Dependiendo del token, reconocerás si quien consulta es el buyer o el seller, y devolverá la información que corresponda.

Llamada:

curl -X GET https://api.mercadopago.com/v1/payments/$PAYMENT_ID?access_token=$ACCESS_TOKEN

Ejemplo:

curl -X GET https://api.mercadopago.com/v1/payments/3506756222?access_token=$ACCESS_TOKEN

Respuesta ejemplo con token de vendedor:

{
  "counter_currency": null,
  "acquirer_reconciliation": [
  ],
  "statement_descriptor": "MERCADOPAGO",
  "captured": true,
  "fee_details": [
    {
      "amount": 487.2,
      "fee_payer": "payer",
      "type": "financing_fee"
    }
  ],
  "acquirer": null,
  "date_last_updated": "2018-03-05T10:06:55.000-04:00",
  "date_created": "2018-03-05T10:06:54.000-04:00",
  "id": 3506756222,
  "merchant_account_id": null,
  "issuer_id": "157",
  "date_of_expiration": null,
  "external_reference": "1653027692",
  "order": {
    "id": "1653027692",
    "type": "mercadolibre"
  },
  "transaction_amount": 3500,
  "description": "Maquina Industrial Recta Marca ",
  "card": {
    "id": null,
    "first_six_digits": "371772",
    "expiration_month": 10,
    "cardholder": {
      "identification": {
        "number": null,
        "type": null
      },
      "name": "JOAN C GONZALEZ GUZMAN"
    },
    "date_last_updated": "2018-03-05T10:06:54.000-04:00",
    "date_created": "2018-03-05T10:06:54.000-04:00",
    "expiration_year": 2019,
    "last_four_digits": "1001"
  },
  "transaction_details": {
    "total_paid_amount": 3987.2,
    "acquirer_reference": null,
    "payment_method_reference_id": null,
    "net_received_amount": 3500,
    "financial_institution": null,
    "payable_deferral_period": null,
    "installment_amount": 443.02,
    "external_resource_url": null,
    "overpaid_amount": 0
  },
  "coupon_amount": 0,
  "merchant_number": null,
  "call_for_authorize_id": null,
  "metadata": {
  },
  "currency_id": "MXN",
  "money_release_schema": null,
  "collector_id": 277582551,
  "status": "approved",
  "sponsor_id": null,
  "deduction_schema": null,
  "payment_method_id": "amex",
  "additional_info": {
    "items": [
      {
        "id": "MLM610028711",
        "title": "Maquina Industrial Recta Marca",
        "picture_url": null,
        "description": null,
        "category_id": "MLM184696",
        "quantity": "1",
        "unit_price": "3500"
      }
    ]
  },
  "processing_mode": "aggregator",
  "status_detail": "accredited",
  "binary_mode": false,
  "operation_type": "regular_payment",
  "installments": 9,
  "money_release_date": "2018-03-26T10:06:55.000-04:00",
  "payer": {
    "id": "53745235",
    "first_name": "Joan Carlos",
    "phone": {
      "extension": null,
      "area_code": null,
      "number": "5558800201"
    },
    "email": null,
    "identification": {
      "number": "83092109600",
      "type": "IFE"
    },
    "last_name": "Gonzalez Guzman",
    "entity_type": null,
    "type": "registered"
  },
  "notification_url": null,
  "transaction_amount_refunded": 0,
  "refunds": [
  ],
  "date_approved": "2018-03-05T10:06:55.000-04:00",
  "authorization_code": "211118",
  "payment_type_id": "credit_card",
  "live_mode": true
}

Ejemplo con token de comprador:

{
  "counter_currency": null,
  "acquirer_reconciliation": [
  ],
  "statement_descriptor": "MERCADOPAGO",
  "captured": true,
  "fee_details": [
    {
      "amount": 487.2,
      "fee_payer": "payer",
      "type": "financing_fee"
    }
  ],
  "acquirer": null,
  "date_last_updated": "2018-03-05T10:06:55.000-04:00",
  "date_created": "2018-03-05T10:06:54.000-04:00",
  "id": 3506756222,
  "merchant_account_id": null,
  "payer_id": 53745235,
  "collector": {
    "id": 277582551,
    "first_name": "Belem",
    "phone": {
      "extension": null,
      "area_code": null,
      "number": "5547588284"
    },
    "email": null,
    "identification": {
      "number": null,
      "type": null
    },
    "last_name": "Jimenez"
  },
  "issuer_id": "157",
  "date_of_expiration": null,
  "external_reference": "1653027692",
  "order": {
    "id": "1653027692",
    "type": "mercadolibre"
  },
  "transaction_amount": 3500,
  "description": "Maquina Industrial Recta Marca ",
  "card": {
    "id": null,
    "first_six_digits": "371772",
    "expiration_month": 10,
    "cardholder": {
      "identification": {
        "number": null,
        "type": null
      },
      "name": "JOAN C GONZALEZ GUZMAN"
    },
    "date_last_updated": "2018-03-05T10:06:54.000-04:00",
    "date_created": "2018-03-05T10:06:54.000-04:00",
    "expiration_year": 2019,
    "last_four_digits": "1001"
  },
  "transaction_details": {
    "total_paid_amount": 3987.2,
    "acquirer_reference": null,
    "payment_method_reference_id": null,
    "net_received_amount": 3500,
    "financial_institution": null,
    "payable_deferral_period": null,
    "installment_amount": 443.02,
    "external_resource_url": null,
    "overpaid_amount": 0
  },
  "coupon_amount": 0,
  "merchant_number": null,
  "call_for_authorize_id": null,
  "metadata": {
  },
  "currency_id": "MXN",
  "money_release_schema": null,
  "status": "approved",
  "sponsor_id": null,
  "deduction_schema": null,
  "payment_method_id": "amex",
  "additional_info": {
    "items": [
      {
        "id": "MLM610028711",
        "title": "Maquina Industrial Recta Marca",
        "picture_url": null,
        "description": null,
        "category_id": "MLM184696",
        "quantity": "1",
        "unit_price": "3500"
      }
    ]
  },
  "processing_mode": "aggregator",
  "status_detail": "accredited",
  "binary_mode": false,
  "operation_type": "regular_payment",
  "installments": 9,
  "differential_pricing_id": null,
  "money_release_date": "2018-03-26T10:06:55.000-04:00",
  "notification_url": null,
  "transaction_amount_refunded": 0,
  "refunds": [
  ],
  "date_approved": "2018-03-05T10:06:55.000-04:00",
  "authorization_code": "211118",
  "payment_type_id": "credit_card",
  "live_mode": true
}

Siguiente: Feedback de una venta.

o regístrate para recibir las últimas novedades sobre nuestra API