Exemplos

Veja alguns exemplos de requisições

#Reembolsar Pagamento para Cartão de Crédito

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
#

payment_refund = api.refund.create(PAY-HL7QRKFEQNHV")
/**
* Este exemplo usa a SDK Moip de Java, disponível 
* em: https://github.com/moip/moip-sdk-java
*/

Map<String, Object> newRefund = Moip.API.refunds().refundPayment("payment_id", setup);
<?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 Moip de Java, disponível
* em: https://github.com/moip/moip-sdk-java
*/

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

moip.payment.refund('PAY-HL7QRKFEQNHV')
    .then((response) => {
        console.log(response)
    }).catch((err) => {
        console.log(err)
    })
curl -X POST \
 https://sandbox.moip.com.br/v2/payments/PAY-HL7QRKFEQNHV/refunds \
 -H 'authorization: OAuth c72a9e19c4fb4a8c997a1ec7273dfad0_v2' \
 -H 'cache-control: no-cache' \
 -H 'content-type: application/json' \
 -H 'postman-token: d2f2f2d7-fb4d-1234-a7ac-f43cea1234db'

❗️

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.

#Reembolso Pagamento para Conta Bancária

{
  "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-DDWLKZX2TTSL", 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",
        },
      },
    },
  }
)
/**
* 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);
<?php

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

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

//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);

#Reembolsar Pagamento para Conta Moip

{  
   "refundingInstrument":{  
      "method":"MOIP_ACCOUNT",
      "moipAccount":{  
         "id":"MPA-82B8D2ND923D"
      }
   }
}
/**
* Este exemplo usa a SDK 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);

#Reembolsar 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
}
#
# Este exemplo usa a SDK Moip de Ruby, disponível
# em: https://github.com/moip/moip-sdk-ruby
#

order_refund = api.refund.create("ORD-O5DLMAJZPTHV")
/**
* Este exemplo usa a SDK Moip de Java, disponível 
* em: https://github.com/moip/moip-sdk-java
*/

Map<String, Object> newRefund = Moip.API.refunds().refundOrder("order_id", setup);
<?php

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

$order = $moip->orders()->get("ORDER_ID");
    
$refund = $order->refunds()->creditCardFull();

print_r($refund);
/**
* Este exemplo usa a SDK 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.order.refunds.create('ORD-O5DLMAJZPTHV')
    .then((response) => {
        console.log(response)
    }).catch((err) => {
        console.log(err)
    })
curl -X POST \
 https://sandbox.moip.com.br/v2/orders/ORD-O5DLMAJZPTHV/refunds \
 -H 'authorization: OAuth c72a9e19c4fb4a8c997a1ec7273d0_v2' \
 -H 'cache-control: no-cache' \
 -H 'content-type: application/json' \
 -H 'postman-token: d2f2f2d7-fb4d-1234-a7ac-f43cea1234db'