Exemplos

#Criar Reembolso de um Pagamento para Cartão de Crédito

O reembolso de pagamentos em cartão possuem uma resposta mais rápida, porém, é importante lembrar que o prazo para que o reembolso seja refletido na fatura do cliente pode depender das políticas do emissor do cartão.

Os reembolsos de pagamentos realizados por cartão de crédito serão feitos diretamente no mesmo cartão do cliente/comprador.

/* 
Para reembolsos para cartão de crédito basta informar o código PAY no endpoint
http://www.sandbox.moip.com.br/v2/payments/{payment_id}/refunds

Use o método POST

Atenção: caso queira fazer um reembolso parcial é necessário informar o atributo amount na requisição. Para reembolso total não é necessário informar o "amount". Exemplo:
*/

{
"amount":2000
}
#
# Este exemplo usa a SDK Moip de Ruby, disponível
# em: https://github.com/moip/moip-sdk-ruby
#

refund = api.refund.create("PAY-HL7QRKFEQNHV")
<?php

/**
* Este exemplo usa a SDK Moip de PHP, disponível 
* em: https://github.com/moip/moip-sdk-php
*/

$payment = $moip->payments()->get("PAYMENT_ID");

$refund = $payment->refunds()->creditCardFull();

print_r($refund);
/**
* Este exemplo usa a SDK do Moip de Java, disponível 
* em: https://github.com/moip/moip-sdk-java
*/

Map<String, Object> newRefund = Moip.API.refunds().refundPayment("payment_id", setup);
var body = new RefundRequest
{
    //caso queira fazer um reembolso parcial é necessário informar o atributo amount na requisição
    Amount = "2000"
};            
var result = await WC.Refund.RefundPayment(body, "PAY-XXXXXXXXXXXX");
/**
* Este exemplo usa a SDK do Moip de Node, disponível 
* em: https://github.com/moip/moip-sdk-node
*/

const moip = require('moip-sdk-node').default({
  accessToken: 'your-access-token',
  production: false
})

moip.payment.refund('PAY-3GALBSZIUSBE')
    .then((response) => {
        console.log(response)
    }).catch((err) => {
        console.log(err)
    })
curl -v https://sandbox.moip.com.br/v2/payments/{payment_id}/refunds \
   -H 'Content-Type: application/json'  \
   -H 'Authorization: Basic MDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDE6QUJBQkFCQUJBQkFCQUJBQkFCQUJBQkFCQUJBQkFCQUJBQkFCQg==' \
   -d '{}'

❗️

ATENÇÃO

  1. Os pagamentos realizados por cartão de crédito só podem ser reembolsados para o próprio cartão. NÃO É POSSÍVEL REEMBOLSAR PAGAMENTOS FEITOS POR CARTÃO PARA CONTA BANCÁRIA OU CONTA MOIP.

  2. Pagamentos só podem ser reembolsados no cartão de crédito no período inferior a 180 dias após autorização pagamento.

  3. Caso deseje fazer um reembolso parcial é necessário informar o atributo amount na requisição.

#Criar Reembolso para Conta Bancária

Caso você prefira reembolsar o comprador através de uma conta bancária, esse processo é possível. Porém, a conta de destino deverá ser da mesma titularidade do comprador. Lembre-se de checar essa informação! :)

🚧

IMPORTANTE

O Reembolso só pode ser realizado para conta bancária do mesmo titular do pagamento.

{
  "refundingInstrument": {
    "method": "BANK_ACCOUNT",
    "bankAccount": {
      "type": "CHECKING",
      "bankNumber": "001",
      "agencyNumber": 4444444,
      "agencyCheckNumber": 2,
      "accountNumber": 1234,
      "accountCheckNumber": 1,
      "holder": {
        "fullname": "Jose Silva",
        "taxDocument": {
          "type": "CPF",
          "number": "22222222222"
        }
      }
    }
  }
}
#
# Este exemplo usa a SDK do Moip de Ruby, disponível
# em: https://github.com/moip/moip-sdk-ruby
#

boleto_refund = api.refund.create(
  "PAY-YCORW3ZIYYXD", refundingInstrument: {
    method: "BANK_ACCOUNT",
    bankAccount: {
      bankNumber: "001",
      agencyNumber: "4444444",
      agencyCheckNumber: "2",
      accountNumber: "1234",
      accountCheckNumber: "1",
      type: "CHECKING",
      holder: {
        fullname: "Jose Silva",
        taxDocument: {
          type: "CPF",
          number: "22222222222",
        },
      },
    },
  }
)
<?php

/**
* Este exemplo usa a SDK do Moip de PHP, disponível 
* em: https://github.com/moip/moip-sdk-php
*/

$holder = $moip->customers()->get("CUS-87HFA3QCEKO7");
$payment = $moip->payments()->get("PAY-YCORW3ZIYYXD");

//Dados da conta bancária
$type = 'CHECKING';
$bank_number = '001';
$agency_number = 4444444;
$agency_check_number = 2;
$account_number = 1234;
$account_check_number = 1;

$refund = $payment->refunds()
    ->bankAccountFull($type, $bank_number, $agency_number, $agency_check_number, 
        $account_number, $account_check_number, $holder);

print_r($refund);
/**
* Este exemplo usa a SDK do Moip de Java, disponível 
* em: https://github.com/moip/moip-sdk-java
*/

Map<String, Object> taxDocument = payloadFactory(
    value("type", "CPF"),
    value("number", "57390209674")
);

Map<String, Object> holder = payloadFactory(
    value("fullname", "Jose Silva"),
    value("taxDocument", taxDocument)
);

Map<String, Object> bankAccount = payloadFactory(
    value("type", "CHECKING"),
    value("bankNumber", "001"),
    value("agencyNumber", 4444444),
    value("agencyCheckNumber", 2),
    value("accountNumber", 1234),
    value("accountCheckNumber", 1),
    value("holder", holder)
);

Map<String, Object> refundingInstrument = payloadFactory(
    value("method", "BANK_ACCOUNT"),
    value("bankAccount", bankAccount)
);

Map<String, Object> refundBankAccount = payloadFactory(
    value("refundingInstrument", refundingInstrument)
);

Map<String, Object> newRefund = Moip.API.refunds().refundPayment(refundBankAccount, "payment_id", setup);

#Criar Reembolso para Conta Moip

{  
   "refundingInstrument":{  
      "method":"MOIP_ACCOUNT",
      "moipAccount":{  
         "id":"MPA-82B8D2ND923D"
      }
   }
}
/**
* Este exemplo usa a SDK do Moip de Java, disponível 
* em: https://github.com/moip/moip-sdk-java
*/

Map<String, Object> moipAccount = payloadFactory(
    value("id", "moip_account_id")
);

Map<String, Object> refundingInstrument = payloadFactory(
    value("method", "MOIP_ACCOUNT"),
    value("moipAccount", moipAccount)
);

Map<String, Object> refundMoipAccount = payloadFactory(
    value("amount", "500"),
    value("refundingInstrument", refundingInstrument)
);

Map<String, Object> newRefund = Moip.API.refunds().refundPayment(refundMoipAccount, "payment_id", setup);

#Criar Reembolso com ORDER id

👍

DICA

Além do pagamento (PAY) você também pode reembolsar usando o id do pedido (ORD id). O processo é praticamente o mesmo, a diferença será a o endpoint que passará ser de order. Exemplo abaixo.

/* 
Para realizar reembolsos usando o order id (ao invés do PAY id) basta usar o endpoint como no exemplo abaixo:
http://www.sandbox.moip.com.br/v2/orders/{order_id}/refunds

Use o método POST

Lembre-se: caso queira fazer um reembolso parcial é necessário informar o atributo amount na requisição. Exemplo:

{
"amount":2000
}

*/