Processar pagamentos com desconto - Descontos - Mercado Pago Developers
O que você está buscando?

Não sabe como começar a integrar? 

Acesse os primeiros passos

Processar pagamentos com desconto

Nesta seção, detalhamos as requisições e os parâmetros necessários para processar pagamentos com desconto e as respostas esperadas de cada uma delas.

Importante
O reembolso do desconto não é instantâneo; pode levar cerca de 200 milissegundos sem um cupom e até 10 segundos com um cupom. Portanto, recomendamos criar a promessa de desconto e prosseguir imediatamente com o pagamento.

Para realizar o processamento dos pagamentos com desconto, utilize o curl abaixo e garanta que os parâmetros de requisição sejam preenchidos de acordo com as informações descritas na tabela a seguir.

ParâmetroTipoDescriçãoExemplo
AuthorizationStringToken de autorização do usuário (Access token). Esta informação pode ser obtida através do menu Suas integrações.APP_USR-123456-test-access-t0ken
wallet_paymentObjectObjeto que agrupa informações de pagamento processado via Wallet Connect.N/A
transaction_amountDoubleValor pelo qual o pagamento é efetuado.550.0
descriptionStringDescrição genérica do pagamento que está sendo efetuado."Descrição do pagamento"
external_referenceStringReferência de pagamento atribuída pelo vendedor. Aceita apenas números e letras."Pagamento_123"
discountObjectCampo opcional que agrupa os dados do desconto a ser aplicado. Este campo somente é obrigatório caso queira criar um pagamento com desconto. Caso envie vazio, criará um pagamento sem desconto.N/A
amountDoubleValor do desconto a ser aplicado no pagamento.55.0
descriptionStringDescrição do desconto."Desconto para Black Friday".
detailObjectObjeto que estende informações das características do desconto.N/A
valueDoubleQuantidade de desconto a ser aplicado no pagamento. Este campo corresponde com o type mencionado abaixo, por exemplo, 30 por cento.10.0
typeStringUnidade de medida do valor de desconto, podendo ser percentual ou um montante fixo.percent (para porcentagem) ou fixed (para valores fixos).
capDoubleValor máximo pelo qual o desconto pode ser aplicado num pagamento.5000
payerObjectObjeto que contém os dados do pagador.N/A
tokenStringToken específico do pagador, usado para realizar toda a validação do fluxo de pagamento.payer1-token2-test3-example4
type_tokenStringTipo de token a ser utilizado nos pagamentos.wallet-token (este é o único tipo de token aceito para os pagamentos via Wallet Connect).
          
curl -X POST \
'https://api.mercadopago.com/v1/advanced_payments' \
--header 'Authorization: <YOUR_ACCESS_TOKEN>' \
--data '{
    "wallet_payment": {
        "transaction_amount": 550,
        "description": "Payment Description",
        "external_reference": "Pago_123",
        "discount": {
            "amount": 55.0,
            "description": "Pruebas wc",
            "detail": {
                "value": 10.0,
                "type": "percent",
                "cap": 5000
            }
        }
    },
    "payer": {
        "token": "PAYER_TOKEN",
        "type_token": "wallet-token"
    }
}'


        

Respostas

Abaixo detalhamos as diferentes respostas que podem ser recebidas ao processar um pagamento com desconto. As respostas são categorizadas com base no resultado da requisição, variando desde o sucesso no processamento até determinado erro.

Sucesso

          
{
  "id": 1234567,
  "status": "approved",
  "marketplace": null,
  "sponsor_id": null,
  "payments": [
    {
      "id": "PAYMENT-ID",
      "status": "approved",
      "status_detail": "accredited",
      "payment_type_id": "account_money",
      "payment_method_id": "account_money",
      "token": null,
      "transaction_amount": 500,
      "installments": 1,
      "processing_mode": "aggregator",
      "issuer_id": null,
      "coupon_amount": 10.0,
      "campaign_id": "CAMPAIGN-ID",
      "coupon_code": null,
      "description": "Payment Wallet",
      "external_reference": null,
      "statement_descriptor": null,
      "date_of_expiration": null,
      "merchant_account_id": null,
      "payment_method_option_id": null,
      "additional_info": null,
      "transaction_details": null,
      "net_amount": null,
      "taxes": null
    }
  ],
  "disbursements": null,
  "payer": {
    "id": "PAYER-ID",
    "email": "PAYER-EMAIL",
    "address": null,
    "identification": null,
    "first_name": null,
    "last_name": null,
    "phone": null,
    "token": "PAYER-TOKEN",
    "external_payer_id": "EXTERNAL-PAYER-ID"
  },
  "external_reference": null,
  "description": null,
  "binary_mode": true,
  "capture": true,
  "date_created": "2023-07-24T14:30:45.574-04:00",
  "date_last_updated": "2023-07-24T14:30:46.517-04:00",
  "metadata": null,
  "additional_info": null,
  "wallet_payment": {
    "transaction_amount": 550,
    "description": "Payment Wallet",
    "external_reference": null,
    "subscription_data": null,
    "user_present": null,
    "discount": {
      "amount": 50.0,
      "description": "wallet connect test",
      "detail": {
        "value": 10.0,
        "type": "percent",
        "cap": 100000.0
      }
    },
    "payment_preference": {
      "active": true,
      "user_id": 1431302201,
      "payment_method": [
        {
          "priority": 1,
          "payment_method": "account_money"
        }
      ]
    }
  },
  "pos_id": null,
  "store_id": null,
  "wallet_connect_discount": {
    "amount": 10.0,
    "token": "DISCOUNT-TOKEN"
  }
}




        

Erro

Caso o desconto aplicado no pagamento não seja válido ou o valor indicado no pedido não corresponda ao valor do desconto estabelecido, um erro será gerado, conforme descrito a seguir.

          
{
  "error": "bad_request",
  "message": "discount doesn't exist or amount is incorrect",
  "status": 400,
  "cause": [
    {
      "code": 400136,
      "description": "discount doesn't exist or amount is incorrect",
      "data": null
    }
  ]
}