Exemplos

Não sabe o que é Custódia? Clique aqui e saiba mais.

#Multipagamento com Cartão de Crédito Criptografado

Essa API permite criar automaticamente pagamentos para todos os pedidos de um Pedido Múltiplo.

{
  "installmentCount": 1,
  "fundingInstrument": {
    "method": "CREDIT_CARD",
    "creditCard": {
      "hash": "HhL0kbhfid+jwgj5l6Kt9EPdetDxQN8s7uKUHDYxDC/XoULjzik44rSda3EcWuOcL17Eb8JjWc1JI7gsuwg9P0rJv1mJQx+d3Dv1puQYz1iRjEWWhnB1bw0gTvnnC/05KbWN5M8oTiugmhVK02Rt2gpbcTtpS7VWyacfgesBJFavYYMljYg8p2YGHXkXrMuQiOCeemKLk420d0OTMBba27jDVVJ663HZDrObnjFXJH/4B5irkj+HO5genV+V4PYoLcOESG4nrI3oFAsMGsLLcdJo0NNvkEmJpn0e9GzureKKFYisYU+BEd9EMr/odS0VMvOYRV65HbPTspIkjl2+3Q==",
      "holder": {
        "fullname": "Jose Portador da Silva",
        "birthdate": "1988-12-30",
        "taxDocument": {
          "type": "CPF",
          "number": "33333333333"
        },
        "phone": {
          "countryCode": "55",
          "areaCode": "11",
          "number": "66778899"
        }
      }
    }
  }
}
/**
* 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", "33333333333")
);

Map<String, Object> phone = payloadFactory(
    value("countryCode", "55"),
    value("areaCode", "11"),
    value("number", "66778899")
);

Map<String, Object> holder = payloadFactory(
    value("fullname", "Portador Teste Moip"),
    value("birthdate", "1988-12-30"),
    value("taxDocument", taxDocument),
    value("phone", phone)
);

Map<String, Object> creditCard = payloadFactory(
    value("hash", "HhL0kbhfid+jwgj5l6Kt9EPdetDxQN8s7uKUHDYxDC/XoULjzik44rSda3EcWuOcL17Eb8JjWc1JI7gsuwg9P0rJv1mJQx+d3Dv1puQYz1iRjEWWhnB1bw0gTvnnC/05KbWN5M8oTiugmhVK02Rt2gpbcTtpS7VWyacfgesBJFavYYMljYg8p2YGHXkXrMuQiOCeemKLk420d0OTMBba27jDVVJ663HZDrObnjFXJH/4B5irkj+HO5genV+V4PYoLcOESG4nrI3oFAsMGsLLcdJo0NNvkEmJpn0e9GzureKKFYisYU+BEd9EMr/odS0VMvOYRV65HbPTspIkjl2+3Q=="),
    value("holder", holder)
);

Map<String, Object> fundingInstrument = payloadFactory(
    value("method", "CREDIT_CARD"),
    value("creditCard", creditCard)
);

Map<String, Object> multipayment = payloadFactory(
    value("installmentCount", 1),
    value("statementDescriptor", "minhaLoja.com"),
    value("fundingInstrument", fundingInstrument)
);

Map<String, Object> newMultipay = Moip.API.multiorders().pay(multipayment, "multiorder_id", setup);
<?php

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

// Multipagamento de cartão de crédito com hash
try {
  $hash = 'i1naupwpTLrCSXDnigLLTlOgtm+xBWo6iX54V/hSyfBeFv3rvqa1VyQ8/pqWB2JRQX2GhzfGppXFPCmd/zcmMyDSpdnf1GxHQHmVemxu4AZeNxs+TUAbFWsqEWBa6s95N+O4CsErzemYZHDhsjEgJDe17EX9MqgbN3RFzRmZpJqRvqKXw9abze8hZfEuUJjC6ysnKOYkzDBEyQibvGJjCv3T/0Lz9zFruSrWBw+NxWXNZjXSY0KF8MKmW2Gx1XX1znt7K9bYNfhA/QO+oD+v42hxIeyzneeRcOJ/EXLEmWUsHDokevOkBeyeN4nfnET/BatcDmv8dpGXrTPEoxmmGQ==';
  $payment = $multiorder->multipayments()
    ->setCreditCardHash($hash, $customer)
      ->setInstallmentCount(3)
      ->setStatementDescriptor('teste de pag')
      ->setDelayCapture(false)
      ->execute();
} catch (Exception $e) {
  printf($e->__toString());
}

// Multipagamento de cartão de crédito com certificação PCI
try {
  $expiration_month = 12;
  $expiration_year = 21;
  $number_cc = '4073020000000002';
  $cvc = '123';
  $store_cc = true;
  $payment = $multiorder->multipayments()
      ->setCreditCard($expiration_month, $expiration_year,$number_cc, $cvc, $customer, $store_cc)
      ->setInstallmentCount(3)
      ->setStatementDescriptor('teste de pag')
      ->setDelayCapture(false)
      ->execute();
} catch (Exception $e) {
  printf($e->__toString());
}

// Multipagamento com boleto
$logo_uri = 'https://cdn.moip.com.br/wp-content/uploads/2016/05/02163352/logo-moip.png';
$expiration_date = new DateTime();
$instruction_lines = ['INSTRUÇÃO 1', 'INSTRUÇÃO 2', 'INSTRUÇÃO 3'];
try {
  $payment = $multiorder->multipayments()  
    ->setBoleto($expiration_date, $logo_uri, $instruction_lines)
    ->execute();
} catch (Exception $e) {
  printf($e->__toString());
}
/**
* 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.multipayment.create('MOR-DT554VQVBYCY', {
    installmentCount: 1,
    fundingInstrument: {
        method: 'CREDIT_CARD',
        creditCard: {        
            hash: 'gYPjYp+qCuRcBuNo4arqkWPrpsPpuUIuQSEBTuqQQYhhFUGX/k0ffDrppRMlH/DAo/Q7iPHiQggCGzqloziFlqG0C15JXFEeZiQtQ7mOlbIDuuipgKZfEYx9mCbwWunqWkviddoHmcZrf0CZA85/JVm7+Ppc+tIib4cErVKe3dYJCRTmWrVagcblpT8N8F5hZj6iWj4gdKNNIeOyNx4vQND3c1lSeK+emzR9ZP/x+FNBitzFkYA6OYv9rENmB1zCp1qsJi0peTsTPxxLFopN4I+Thwciii86r20+ZwLay+b++/QTaeZqCVmP68cIiQaORf6kknmd6rQtqIas/ghYVw==',
            holder: {
                fullname: 'Jose Portador da Silva',
                birthdate: '1988-12-30',
                taxDocument: {
                    type: 'CPF',
                    number: '33333333333'
                },
                phone: {
                    countryCode: '55',
                    areaCode: '11',
                    number: '25112511'
                }
            }
        }
    }
}).then((response) => {
    console.log(response.body)
}).catch((err) => {
    console.log(err)
})

#Multipagamento por Boleto

Essa API permite criar automaticamente pagamentos para todos os pedidos de um Pedido Múltiplo.

{
  "fundingInstrument": {
    "method": "BOLETO",
    "boleto": {
      "expirationDate": "2017-09-30",
      "instructionLines": {
        "first": "Primeira linha se instrução",
        "second": "Segunda linha se instrução",
        "third": "Terceira linha se instrução"
      },
      "logoUri": "http://"
    }
  }
}
#
# Este exemplo usa a SDK do Moip de Ruby, disponível
# em: https://github.com/moip/moip-sdk-ruby
#

multi_payment = api.multi_payment.create(
  "MOR-1231231231",
  fundingInstrument: {
    method: 'BOLETO',
    boleto: {
      expirationDate: '2017-12-30',
      instructionLines: {
        first: 'Primeira linha se instrução',
        second: 'Segunda linha se instrução',
        third: 'Terceira linha se instrução'
      },
      logoUri: 'http://'
    }
  }
)
/**
* Este exemplo usa a SDK do Moip de Java, disponível 
* em: https://github.com/moip/moip-sdk-java
*/

Map<String, Object> instructionLines = payloadFactory(
    value("first", "First instruction line!"),
    value("second", "Second instruction line!"),
    value("third", "Third instruction line!")
)

Map<String, Object> boleto = payloadFactory(
    value("expirationDate", "2020-06-20"),
    value("instructionLines", instructionLines),
    value("logoUri", "http://www.lojaexemplo.com.br/logo.jpg")
);

Map<String, Object> fundingInstrument = payloadFactory(
    value("method", "BOLETO");
    value("boleto", boleto);
);

Map<String, Object> multipayment = payloadFactory(
    value("installmentCount", 1),
    value("statementDescriptor", "minhaLoja.com"),
    value("fundingInstrument", fundingInstrument)
);

Map<String, Object> newMultipay = Moip.API.multiorders().pay(multipayment, "multiorder_id", setup);
<?php

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

$logo_uri = 'https://cdn.moip.com.br/wp-content/uploads/2016/05/02163352/logo-moip.png';
$expiration_date = "2017-09-30";
$instruction_lines = ["Primeira linha de instrução",
                      "Segunda linha de instrução",
                      "Terceira linha de instrução"];

$payment = $multiorder->multipayments()  
    ->setBoleto($expiration_date, $logo_uri, $instruction_lines)
  ->execute();
/**
* 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.multipayment.create('MOR-DT554VQVBYCY', {
     installmentCount: 1,
    fundingInstrument: {
        method: "BOLETO",
        boleto: {
            expirationDate: "2018-09-30",
            instructionLines: {
                first: "Primeira linha do boleto",
                second: "Segunda linha do boleto",
                third: "Terceira linha do boleto"
            },
            logoUri: "https://sualoja.com.br/logo.jpg"
        }
    }
}).then((response) => {
    console.log(response.body)
}).catch((err) => {
    console.log(err)
})

#Multipagamento por Débito Online

Essa API permite criar automaticamente pagamentos para todos os pedidos de um Pedido Múltiplo.

{
  "fundingInstrument": {
    "method": "ONLINE_BANK_DEBIT",
    "onlineBankDebit": {
      "bankNumber": "001",
      "expirationDate": "2017-12-30",
      "returnUri": "http://"
    }
  }
}
#
# Este exemplo usa a SDK do Moip de Ruby, disponível
# em: https://github.com/moip/moip-sdk-ruby
#

multi_payment = api.multi_payment.create(
  "MOR-2SEQRXM27MV1",
  fundingInstrument: {
    method: 'ONLINE_BANK_DEBIT',
    onlineBankDebit: {
      bankNumber: '001',
      expirationDate: '2017-12-30',
      returnUri: 'http://'
    }
  }
)
/**
* Este exemplo usa a SDK do Moip de Java, disponível 
* em: https://github.com/moip/moip-sdk-java
*/

Map<String, Object> onlineBankDebit = payloadFactory(
    value("bankNumber", 341),
    value("expirationDate", "2017-11-22")
);

Map<String, Object> fundingInstrument = payloadFactory(
    value("method", "ONLINE_BANK_DEBIT"),
    value("onlineBankDebit", onlineBankDebit)
);

Map<String, Object> multipayment = payloadFactory(
    value("installmentCount", 1),
    value("statementDescriptor", "minhaLoja.com"),
    value("fundingInstrument", fundingInstrument)
);

Map<String, Object> newMultpay = Moip.API.multiorders().pay(multipayment, "multiorder_id", setup);
<?php

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

$payment = $order->payments()
    ->setOnlineBankDebit("001", "2017-12-30", "https://returnuri.com.br")
  ->setInstallmentCount(1)
  ->setStatementDescriptor("Teste")
  ->execute();
    
print_r($payment);
/**
* 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.multipayment.create('MOR-DT554VQVBYCY', {
  fundingInstrument: {
    method: "ONLINE_BANK_DEBIT",
    onlineBankDebit: {
      bankNumber: "001",
      expirationDate: "2018-12-30",
      returnUri: "http://"
    }
  }
}
).then((response) => {
    console.log(response.body)
}).catch((err) => {
    console.log(err)
})

#Multipagamento Pré-autorizado

📘

INFO

Não sabe o que é um Pagamento Pré-autorizado? Veja nossa nossa seção especial sobre o assunto.

{
  "installmentCount": 1,
  "delayCapture":true,
  "fundingInstrument": {
    "method": "CREDIT_CARD",
    "creditCard": {
      "hash": "HhL0kbhfid+jwgj5l6Kt9EPdetDxQN8s7uKUHDYxDC/XoULjzik44rSda3EcWuOcL17Eb8JjWc1JI7gsuwg9P0rJv1mJQx+d3Dv1puQYz1iRjEWWhnB1bw0gTvnnC/05KbWN5M8oTiugmhVK02Rt2gpbcTtpS7VWyacfgesBJFavYYMljYg8p2YGHXkXrMuQiOCeemKLk420d0OTMBba27jDVVJ663HZDrObnjFXJH/4B5irkj+HO5genV+V4PYoLcOESG4nrI3oFAsMGsLLcdJo0NNvkEmJpn0e9GzureKKFYisYU+BEd9EMr/odS0VMvOYRV65HbPTspIkjl2+3Q==",
      "holder": {
        "fullname": "Jose Portador da Silva",
        "birthdate": "1988-12-30",
        "taxDocument": {
          "type": "CPF",
          "number": "33333333333"
        },
        "phone": {
          "countryCode": "55",
          "areaCode": "11",
          "number": "66778899"
        }
      }
    }
  }
}
Map<String, Object> taxDocument = payloadFactory(
    value("type", "CPF"),
    value("number", "33333333333")
);

Map<String, Object> phone = payloadFactory(
    value("countryCode", "55"),
    value("areaCode", "11"),
    value("number", "66778899")
);

Map<String, Object> holder = payloadFactory(
    value("fullname", "Portador Teste Moip"),
    value("birthdate", "1988-12-30"),
    value("taxDocument", taxDocument),
    value("phone", phone)
);

Map<String, Object> creditCard = payloadFactory(
    value("hash", "CREDIT_CARD_HASH"),
    value("holder", holder)
);

Map<String, Object> fundingInstrument = payloadFactory(
    value("method", "CREDIT_CARD"),
    value("creditCard", creditCard)
);

Map<String, Object> multipayment = payloadFactory(
    value("installmentCount", 1),
    value("statementDescriptor", "minhaLoja.com"),
    value("delayCapture", true),
    value("fundingInstrument", fundingInstrument)
);

Map<String, Object> newMultipay = Moip.API.multiorders().pay(multipayment, "multiorder_id", setup);

#Multipagamento com Custódia

📘

INFO

Não sabe o que é um pagamento com custódia (escrow)? Não tem problema, clique aqui e saiba mais.

Para criar um pagamento com custódia basta adicionar o "escrow" com sua devida "description". Veja o exemplo abaixo:

{
  "installmentCount": 1,
  "escrow":{
    "description" : "Custódia de pagamento"
  },
  "fundingInstrument": {
    "method": "CREDIT_CARD",
    "creditCard": {
        "hash": "HhL0kbhfid+jwgj5l6Kt9EPdetDxQN8s7uKUHDYxDC/XoULjzik44rSda3EcWuOcL17Eb8JjWc1JI7gsuwg9P0rJv1mJQx+d3Dv1puQYz1iRjEWWhnB1bw0gTvnnC/05KbWN5M8oTiugmhVK02Rt2gpbcTtpS7VWyacfgesBJFavYYMljYg8p2YGHXkXrMuQiOCeemKLk420d0OTMBba27jDVVJ663HZDrObnjFXJH/4B5irkj+HO5genV+V4PYoLcOESG4nrI3oFAsMGsLLcdJo0NNvkEmJpn0e9GzureKKFYisYU+BEd9EMr/odS0VMvOYRV65HbPTspIkjl2+3Q==",
      "store": true,
      "holder": {
        "fullname": "Jose da Silva",
        "birthdate": "1988-12-30",
        "taxDocument": {
          "type": "CPF",
          "number": "33333333333"
        },
        "phone": {
          "countryCode": "55",
          "areaCode": "11",
          "number": "66778899"
        }
      }
    }
  }
}
#
# Este exemplo usa a SDK Moip de Ruby, disponível
# em: https://github.com/moip/moip-sdk-ruby
#

payment = api.payment.create(
  order.id,
  installment_count: 1,
  statementDescriptor: 'minhaLoja.com',
  escrow: {
    description: 'Custódia de pagamento'
  },
  fundingInstrument: {
    method: 'CREDIT_CARD',
    creditCard: {
      hash: 'HhL0kbhfid+jwgj5l6Kt9EPdetDxQN8s7uKUHDYxDC/XoULjzik44rSda3EcWuOcL17Eb8JjWc1JI7gsuwg9P0rJv1mJQx+d3Dv1puQYz1iRjEWWhnB1bw0gTvnnC/05KbWN5M8oTiugmhVK02Rt2gpbcTtpS7VWyacfgesBJFavYYMljYg8p2YGHXkXrMuQiOCeemKLk420d0OTMBba27jDVVJ663HZDrObnjFXJH/4B5irkj+HO5genV+V4PYoLcOESG4nrI3oFAsMGsLLcdJo0NNvkEmJpn0e9GzureKKFYisYU+BEd9EMr/odS0VMvOYRV65HbPTspIkjl2+3Q==',
      store: true,
      holder: {
        fullname: 'Jose da Silva',
        birthdate: '1988-12-30',
        taxDocument: {
          type: 'CPF',
          number: '33333333333'
        },
        phone: {
          countryCode: '55',
          areaCode: '11',
          number: '66778899'
        }
      }
    }
  }
)
/**
* Este exemplo usa a SDK Moip de Java, disponível 
* em: https://github.com/moip/moip-sdk-java
*/

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

Map<String, Object> phone = payloadFactory(
    value("countryCode", "55"),
    value("areaCode", "11"),
    value("number", "66778899")
);

Map<String, Object> holder = payloadFactory(
    value("fullname", "Portador Teste Moip"),
    value("birthdate", "1988-12-30"),
    value("taxDocument", taxDocument),
    value("phone", phone)
);

Map<String, Object> creditCard = payloadFactory(
    value("hash", "CREDIT_CARD_HASH"),
    value("holder", holder)
);

Map<String, Object> fundingInstrument = payloadFactory(
    value("method", "CREDIT_CARD"),
    value("creditCard", creditCard)
);

Map<String, Object> escrowDescription = payloadFactory(
    value("description", "Escrow description")
);

Map<String, Object> escrow = payloadFactory(
    value("escrow", escrowDescription)
);

Map<String, Object> payment = payloadFactory(
    value("installmentCount", 1),
    value("escrow", escrow),
    value("statementDescriptor", "minhaLoja.com"),
    value("fundingInstrument", fundingInstrument)
);

Map<String, Object> newMultipay = Moip.API.multiorders().pay(multipayment, "multiorder_id", setup);
<?php

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

try {
  $payment = $multiorder->multipayments()
    ->setCreditCard(5, 2018, '4012001037141112', 123, $customer, false)
    ->setEscrow('Custódia de pagamento')
    ->execute();
} catch (Exception $e) {
  printf($e->__toString());
}
/**
* 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.multipayment.create('MOR-ZNE4645ME5I3', {
    installmentCount: 1,
    escrow: {
        description: 'Teste escrow'
    },
    fundingInstrument: {
        method: 'CREDIT_CARD',
        creditCard: {
            hash: 'gYPjYp+qCuRcBuNo4arqkWPrpsPpuUIuQSEBTuqQQYhhFUGX/k0ffDrppRMlH/DAo/Q7iPHiQggCGzqloziFlqG0C15JXFEeZiQtQ7mOlbIDuuipgKZfEYx9mCbwWunqWkviddoHmcZrf0CZA85/JVm7+Ppc+tIib4cErVKe3dYJCRTmWrVagcblpT8N8F5hZj6iWj4gdKNNIeOyNx4vQND3c1lSeK+emzR9ZP/x+FNBitzFkYA6OYv9rENmB1zCp1qsJi0peTsTPxxLFopN4I+Thwciii86r20+ZwLay+b++/QTaeZqCVmP68cIiQaORf6kknmd6rQtqIas/ghYVw==',
            holder: {
                fullname: 'Jose Silva',
                birthdate: '1988-12-30',
                taxDocument: {
                    type: 'CPF',
                    number: '12345679891'
                },
                phone: {
                    countryCode: '55',
                    areaCode: '11',
                    number: '25112511'
                }
            }
        }
    } 
}).then((response) => {
    console.log(response.body)
}).catch((err) => {
    console.log(err)
})

❗️

ATENÇÃO

Custódias só poderão ser criadas usando o access token. Pagamentos com custódia criados usando Authorization Basic NÃO poderão ter a custódia liberada.

Status da Custódia

Uma custódia, assim como um pedido e um pagamento tem seu próprio status indicando se o valor dessa custódia está com bloqueio pendente HOLD_PENDING, bloqueado HELD ou liberado RELEASED.

Abaixo, está a descrição mais detalhada de cada um desses status:

Status

Descrição

HOLD_PENDING

Esse status ocorre quando um pagamento está AUTORIZADO e possui um registro de custódia. Nesse cenário, o valor do pagamento ainda não está bloqueado e permanece no saldo futuro.

HELD

Após a liquidação de uma transação com custódia em status HOLD_PENDING esse status é alterado para HELD e o valor deixa de fazer parte do saldo futuro para ser enviado para o saldo bloqueado.

RELEASED

Esse status ocorre quando um pagamento tem seu valor desbloqueado, independente de estar liquidado ou não. Para que uma custódia seja liberada o marketplace deverá fazer o release via API. Caso o release seja feito antes da liquidação da transação o valor da mesma permanecerá no saldo futuro e não será mais bloqueado na liquidação.