Exemplos

Veja alguns exemplos de requisições

Saiba o que é Custódia clicando aqui.

#Pagamento com Cartão de Crédito Criptografado

Por meio desta API é possível solicitar ao Moip que realize a cobrança de um pedido. Para isso, você deve enviar as informações referentes ao pagamento.

{  
   "installmentCount":6,
   "statementDescriptor":"Minha Loja",
   "fundingInstrument":{  
      "method":"CREDIT_CARD", 
      "creditCard":{  
         "hash": "HhL0kbhfid+jwgj5l6Kt9EPdetDxQN8s7uKUHDYxDC/XoULjzik44rSda3EcWuOcL17Eb8JjWc1JI7gsuwg9P0rJv1mJQx+d3Dv1puQYz1iRjEWWhnB1bw0gTvnnC/05KbWN5M8oTiugmhVK02Rt2gpbcTtpS7VWyacfgesBJFavYYMljYg8p2YGHXkXrMuQiOCeemKLk420d0OTMBba27jDVVJ663HZDrObnjFXJH/4B5irkj+HO5genV+V4PYoLcOESG4nrI3oFAsMGsLLcdJo0NNvkEmJpn0e9GzureKKFYisYU+BEd9EMr/odS0VMvOYRV65HbPTspIkjl2+3Q==",
         "store":true,
         "holder":{  
            "fullname":"Roberto Oliveira",
            "birthdate":"1988-12-30",
            "taxDocument":{  
               "type":"CPF",
               "number":"78994193600"
            },
            "phone":{  
               "countryCode":"55",
               "areaCode":"11",
               "number":"22849560"
            },
            "billingAddress":{  
               "city":"Belo Horizonte",
               "district":"Savassi",
               "street":"Avenida Contorno",
               "streetNumber":"400",
               "zipCode":"76932800",
               "state":"MG",
               "country":"BRA"
            }
         }
      }
   },
   "device":{  
      "ip":"127.0.0.1",
      "geolocation":{  
         "latitude":-33.867,
         "longitude":151.206
      },
      "userAgent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.81 Safari/537.36",
      "fingerprint":"QAZXswedCVGrtgBNHyujMKIkolpQAZXswedCVGrtgBNHyujMKIkolpQAZXswedCVGrtgBNHyujMKIkolpQAZXswedCVGrtgBNHyujMKIkolp"
   }
}
#
# Este exemplo usa a SDK do Moip de Ruby, disponível
# em: https://github.com/moip/moip-sdk-ruby
#

payment = api.payment.create(order.id,
  installment_count: 6,
  funding_instrument: {
    method: "CREDIT_CARD",
    credit_card: {
      # You can generate the following hash using a Moip Javascript SDK
      # where you use the customer credit_card data and your public key
      # to create the hash.
      # Read more about creating credit card hash here:
      # https://dev.moip.com.br/v2.0/docs/criptografia-de-cartao
      hash: "HhL0kbhfid+jwgj5l6Kt9EPdetDxQN8s7uKUHDYxDC/XoULjzik44rSda3EcWuOcL17Eb8JjWc1JI7gsuwg9P0rJv1mJQx+d3Dv1puQYz1iRjEWWhnB1bw0gTvnnC/05KbWN5M8oTiugmhVK02Rt2gpbcTtpS7VWyacfgesBJFavYYMljYg8p2YGHXkXrMuQiOCeemKLk420d0OTMBba27jDVVJ663HZDrObnjFXJH/4B5irkj+HO5genV+V4PYoLcOESG4nrI3oFAsMGsLLcdJo0NNvkEmJpn0e9GzureKKFYisYU+BEd9EMr/odS0VMvOYRV65HbPTspIkjl2+3Q==",
      holder: {
        fullname: "Roberto Oliveira",
        birthdate: "1988-12-30",
        taxDocument: {
          type: "CPF",
          number: "78994193600",
        },
        phone: {
          countryCode: "55",
          areaCode: "11",
          number: "22849560",
        },
        billingAddress: {  
               city: "Belo Horizonte", 
               district: "Savassi", 
               street: "Avenida Contorno", 
               streetNumber: "400", 
               zipCode: "76932800", 
               state: "MG", 
               country: "BRA"
        },
      },
    },
  })
<?php

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

$hash = 'HhL0kbhfid+jwgj5l6Kt9EPdetDxQN8s7uKUHDYxDC/XoULjzik44rSda3EcWuOcL17Eb8JjWc1JI7gsuwg9P0rJv1mJQx+d3Dv1puQYz1iRjEWWhnB1bw0gTvnnC/05KbWN5M8oTiugmhVK02Rt2gpbcTtpS7VWyacfgesBJFavYYMljYg8p2YGHXkXrMuQiOCeemKLk420d0OTMBba27jDVVJ663HZDrObnjFXJH/4B5irkj+HO5genV+V4PYoLcOESG4nrI3oFAsMGsLLcdJo0NNvkEmJpn0e9GzureKKFYisYU+BEd9EMr/odS0VMvOYRV65HbPTspIkjl2+3Q==';

$payment = $order->payments()
        ->setCreditCardHash($hash, $holder)
        ->setInstallmentCount(6)
        ->setStatementDescriptor("Minha Loja")
        ->execute();
    
print_r($payment);
/**
 * 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/XoULjzik44rSda3EcWuO" +
    "cL17Eb8JjWc1JI7gsuwg9P0rJv1mJQx+d3Dv1puQYz1iRjEWWhnB1bw0gTvnn" +
    "C/05KbWN5M8oTiugmhVK02Rt2gpbcTtpS7VWyacfgesBJFavYYMljYg8p2YGH" +
    "XkXrMuQiOCeemKLk420d0OTMBba27jDVVJ663HZDrObnjFXJH/4B5irkj+HO5" +
    "genV+V4PYoLcOESG4nrI3oFAsMGsLLcdJo0NNvkEmJpn0e9GzureKKFYisYU+" +
    "BEd9EMr/odS0VMvOYRV65HbPTspIkjl2+3Q=="),
    value("holder", holder)
);

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

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

Map<String, Object> newPay = Moip.API.payments().pay(payment, "order_id", setup);
/**
* 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.create('ORD-O5DLMAJZPTHV', {
    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: 'Roberto Oliveira',
                birthdate: '1988-12-30',
                taxDocument: {
                    type: 'CPF',
                    number: '84302737950'
                },
                phone: {
                    countryCode: '55',
                    areaCode: '11',
                    number: '25112511'
                }
            }
        }
    }
}).then((response) => {
    console.log(response.body)
}).catch((err) => {
    console.log(err)
})

❗️

ATENÇÃO

Você deve fazer a criptografia dos dados do cartão de crédito antes de enviar ao Moip. Caso você tenha certificado PCI, é permitido o envio dos dados sem criptografia para o Moip.

Os atributos number, expirationMonth, creditCard.expirationYear e cvc serão usados apenas em caso de seu site possuir certificação PCI. Caso contrário você deve usar o atributo hash e fazer a criptografia dos dados do cartão.

🚧

IMPORTANTE

Há três possibilidades de fazer o pagamento por cartão de crédito:

  1. Se seu site possui certificação PCI, use os atributos com os dados do cartão: number, expirationMonth, expirationYear e cvc.

  2. Caso seu site não possua certificação de segurança PCI então você deve fazer o pagamento criptografando os dados do cartão e usar o atributo hash. Saiba mais sobre a criptografia do cartão de crédito em nossa documentação.

  3. Se seu cliente já tiver um cartão salvo no sistema você pode recuperar esses dados e fazer a venda usando apenas o atributo id. Este atributo é referente ao código identificador do cartão e você deve recebê-lo sempre que usar o atributo store:true em uma compra por cartão. Exemplo de id: CRC-9RR409BRJVIN.

👍

DICA

Para uso do device.fingerprint, recomendamos bibliotecas baseadas em Canvas Fingerprints. Uma boa recomendação de um serviço gratuito e open-source é o ClientJs.

#Pagamento com cartão armazenado (CRC)

{  
   "installmentCount":6,
   "statementDescriptor":"Minha Loja",
   "fundingInstrument":{  
      "method":"CREDIT_CARD", 
      "creditCard":{  
         "id": CRC-XXXXXX,
         "cvc": 123
         }
      }
   }

#Pagamento com Boleto

{  
   "statementDescriptor":"Minha Loja",
   "fundingInstrument":{  
      "method":"BOLETO",
      "boleto":{  
         "expirationDate":"2020-06-20",
         "instructionLines":{  
            "first":"Atenção,",
            "second":"fique atento à data de vencimento do boleto.",
            "third":"Pague em qualquer casa lotérica."
         },
         "logoUri":"http://www.lojaexemplo.com.br/logo.jpg"
      }
   }
}
#
# Este exemplo usa a SDK do Moip de Ruby, disponível
# em: https://github.com/moip/moip-sdk-ruby
#

payment = api.payment.create("ORD-2SEQRXM27MV1", {  
   statementDescriptor: 'Minha Loja', 
   funding_instrument: : {  
      method: 'BOLETO', 
      boleto: {  
         expirationDate: '2020-06-20', 
         instructionLines: {  
            first: 'Atenção,', 
            second: 'fique atento à data de vencimento do boleto.', 
            third: 'Pague em qualquer casa lotérica.'
         },
         logoUri: 'http://www.lojaexemplo.com.br/logo.jpg'
      }
   }
 })
<?php

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

$logo_uri = "http://www.lojaexemplo.com.br/logo.jpg";
    $expiration_date = "2020-06-20";
    $instruction_lines = [
        "Atenção,",                                         //First
        "fique atento à data de vencimento do boleto.",     //Second
        "Pague em qualquer casa lotérica."                  //Third
    ];

    $payment = $order->payments()
        ->setBoleto($expiration_date, $logo_uri, $instruction_lines)
        ->setStatementDescriptor("Minha Loja")
        ->execute();
    
print_r($payment);
/**
 * Este exemplo usa a SDK da 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> payment = payloadFactory(
    value("installmentCount", 1),
    value("statementDescriptor", "minhaLoja.com"),
    value("fundingInstrument", fundingInstrument)
);

Map<String, Object> newPay = Moip.API.payments().pay(payment, "order_id", setup);
/**
* Este exemplo usa a SDK da 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.create('ORD-2SEQRXM27MV1', {
     installmentCount: 1,
    fundingInstrument: {
        method: "BOLETO",
        boleto: {
            expirationDate: "2020-06-20",
            instructionLines: {
                first: "Atenção,",
                second: "fique atento à data de vencimento do boleto.",
                third: "Pague em qualquer casa lotérica."
            },
            logoUri: "http://www.lojaexemplo.com.br/logo.jpg"
        }
    }
}).then((response) => {
    console.log(response.body)
}).catch((err) => {
    console.log(err)
})

#Pagamento com Custodia

O uso de custódia (Escrow), implica em bloqueio e desbloqueio de transações através de APIs. Para criar um pagamento com custódia basta declarar o escrow:description como no exemplo abaixo.

{
  "installmentCount": 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 da 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 da 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> newPay = Moip.API.payments().pay(payment, "order_id", setup);
<?php

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

try {
  $payment = $order->payments()
    ->setCreditCard(5, 2018, '4012001037141112', 123, $customer, false)
    ->setEscrow('Custódia de pagamento')
    ->execute();
} catch (Exception $e) {
  printf($e->__toString());
}
/**
* Este exemplo usa a SDK da Moip de .NET, disponível 
* em: https://github.com/moip/moip-sdk-dotnet
*/

TaxDocument taxDocumentRequest = new TaxDocument
{
    Type = "CPF",
    Number = "33333333333"
};

Phone phoneRequest = new Phone
{
    CountryCode = "55",
    AreaCode = "11",
    Number = "66778899"
};

HolderRequest holderRequest = new HolderRequest
{
    Fullname = "Jose da Silva",
    Birthdate = "1988-12-30",
    TaxDocument = taxDocumentRequest,
    Phone = phoneRequest
};

CreditCardRequest creditCardRequest = new CreditCardRequest
{
    ExpirationMonth = "02",
    ExpirationYear = "20",
    Number = "5555666677778884",
    Cvc = "123",
    Holder = holderRequest
};

FundingInstrumentRequest fundingInstrumentRequest = new FundingInstrumentRequest
{
    Method = "CREDIT_CARD",
    CreditCard = creditCardRequest
};

Escrow escrow = new Escrow
{
    Description = "Escrow test"
};

PaymentRequest paymentRequest = new PaymentRequest
{
    InstallmentCount = 1,
    StatementDescriptor = "MyStore",
    FundingInstrument = fundingInstrumentRequest,
    Escrow = escrow
};

PaymentResponse paymentResponse = client.Payments.CreateCreditCard("ORD-123456789012", paymentRequest);
/**
* Este exemplo usa a SDK da 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.create('ORD-123456789012', {
    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 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)
})

❗️

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.

#Custodia

A Custódia (escrow) é o bloqueio temporário dos lançamentos de um Pedido. Recurso usado em implementação de Marketplaces.

🚧

IMPORTANTE

1. Um pagamento pode permanecer em custódia por até 180 dias.
Após esse período o Moip fará a liberação do valor custodiado automaticamente.

2. Caso deseje cancelar uma custódia você deverá reembolsá-la. Para isso é necessário que a custódia seja liberada e em seguida reembolsada.

Status da Custódia

Uma custódia, assim como um pedido e um pagamento tem seu próprio status. Que indica 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 e 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.

Fluxograma Custódia

11841184

Exemplo de transação em custódia

#Criar Pagamento Pré-autorizado

🚧

IMPORTANTE

1. A criação de um Pagamento e Pagamento Pré-autorizado são praticamente idênticos, a diferença é que para criar um Pagamento Pré-autorizado você deve obrigatoriamente declarar o atributo delayCapture com valor true.

2. O Pagamento Pré-autorizado é válido apenas a pagamentos por cartão de crédito.

{  
   "installmentCount":3,
   "delayCapture":true,
   "statementDescriptor":"Minha Loja",
   "fundingInstrument":{  
      "method":"CREDIT_CARD",
      "creditCard":{  
         "hash": "KFLeL2jg14a5aJ0QoVEtgFfuYMf8n/ymby5NpBkj6XkTwSRiqWBMS0kUYg0JfQwF8DG2Ry528dAL5J9o5+bcXf/5sX77sPQ2yJfbzqBKlgG+xPMPaye8lgI6fGBzEJz3gJh6RdBfuY+Fqx7s3i0wxaObO3eisLXjDVPWKIa/JUB1qufxYcUg+9t0Q8rYwbaCYVBgb94RGg3EIxmaMUbukSFg7npUnbelPF77NTMLi7PWDeboSdpNQxHLW4UIcdbA7QyGmOU185yFFOuf+zD1Hscj4NP/YP23CENtsJ5ISQA2mdlFNtnLmgH7AP/7LpP8NZneC0eVamYA6/LxbYMU6Q==",
         "store":true,
         "holder":{  
            "fullname":"Roberto Oliveira",
            "birthdate":"1988-12-30",
            "taxDocument":{  
               "type":"CPF",
               "number":"78994193600"
            },
            "phone":{  
               "countryCode":"55",
               "areaCode":"11",
               "number":"22849560"
            },
            "billingAddress":{  
               "city":"Belo Horizonte",
               "district":"Savassi",
               "street":"Avenida Contorno",
               "streetNumber":"400",
               "zipCode":"76932800",
               "state":"MG",
               "country":"BRA"
            }
         }
      }
   }
}
#
# 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,
  delayCapture: true,
  funding_instrument: {
    method: 'CREDIT_CARD',
    credit_card: {
      # You can generate the following hash using a Moip Javascript SDK
      # where you use the customer credit_card data and your public key
      # to create the hash.
      # Read more about creating credit card hash here:
      # https://dev.moip.com.br/v2.0/docs/criptografia-de-cartao
      hash: 'KFLeL2jg14a5aJ0QoVEtgFfuYMf8n/ymby5NpBkj6XkTwSRiqWBMS0kUYg0JfQwF8DG2Ry528dAL5J9o5+bcXf/5sX77sPQ2yJfbzqBKlgG+xPMPaye8lgI6fGBzEJz3gJh6RdBfuY+Fqx7s3i0wxaObO3eisLXjDVPWKIa/JUB1qufxYcUg+9t0Q8rYwbaCYVBgb94RGg3EIxmaMUbukSFg7npUnbelPF77NTMLi7PWDeboSdpNQxHLW4UIcdbA7QyGmOU185yFFOuf+zD1Hscj4NP/YP23CENtsJ5ISQA2mdlFNtnLmgH7AP/7LpP8NZneC0eVamYA6/LxbYMU6Q==',
      store: true,
      holder: {
        fullname: 'Roberto Oliveira',
        birthdate: '1988-12-30',
        taxDocument: {
          type: 'CPF',
          number: '78994193600'
        },
        phone: {
          countryCode: '55',
          areaCode: '11',
          number: '22849560'
        },
        billingAddress: {
          city: 'Belo Horizonte',
          district: 'Savassi',
          street: 'Avenida Contorno',
          streetNumber: '400',
          zipCode: '76932800',
          state: 'MG',
          country: 'BRA'
        }
      }
    }
  }
)
<?php

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

$hash = "KFLeL2jg14a5aJ0QoVEtgFfuYMf8n/ymby5NpBkj6XkTwSRiqWBMS0kUYg0JfQwF8DG2Ry528dAL5J9o5+bcXf/5sX77sPQ2yJfbzqBKlgG+xPMPaye8lgI6fGBzEJz3gJh6RdBfuY+Fqx7s3i0wxaObO3eisLXjDVPWKIa/JUB1qufxYcUg+9t0Q8rYwbaCYVBgb94RGg3EIxmaMUbukSFg7npUnbelPF77NTMLi7PWDeboSdpNQxHLW4UIcdbA7QyGmOU185yFFOuf+zD1Hscj4NP/YP23CENtsJ5ISQA2mdlFNtnLmgH7AP/7LpP8NZneC0eVamYA6/LxbYMU6Q==";
    
$payment = $order->payments()
    ->setCreditCardHash($hash, $holder)
    ->setInstallmentCount(3)
    ->setStatementDescriptor("Minha Loja")
    ->setDelayCapture()
    ->execute();
    
print_r($payment);
/**
 * 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> payment = payloadFactory(
    value("installmentCount", 1),
    value("statementDescriptor", "minhaLoja.com"),
    value("delayCapture", true),
    value("fundingInstrument", fundingInstrument)
);

Map<String, Object> newPreAuthorizedPayment = Moip.API.payments().pay(payment, "order_id", setup);
/**
* 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.payment.create('ORD-7NHI33JLXQQK', {
    installmentCount: 1,
    delayCapture: true,
    fundingInstrument: {
        method: 'CREDIT_CARD',
        creditCard: {       
            hash: 'gYPjYp+qCuRcBuNo4arqkWPrpsPpuUIuQSEBTuqQQYhhFUGX/k0ffDrppRMlH/DAo/Q7iPHiQggCGzqloziFlqG0C15JXFEeZiQtQ7mOlbIDuuipgKZfEYx9mCbwWunqWkviddoHmcZrf0CZA85/JVm7+Ppc+tIib4cErVKe3dYJCRTmWrVagcblpT8N8F5hZj6iWj4gdKNNIeOyNx4vQND3c1lSeK+emzR9ZP/x+FNBitzFkYA6OYv9rENmB1zCp1qsJi0peTsTPxxLFopN4I+Thwciii86r20+ZwLay+b++/QTaeZqCVmP68cIiQaORf6kknmd6rQtqIas/ghYVw==',
            holder: {
                fullname: 'Roberto Oliveira',
                birthdate: '1988-12-30',
                taxDocument: {
                    type: 'CPF',
                    number: '78994193600'
                },
                phone: {
                    countryCode: '55',
                    areaCode: '11',
                    number: '25112511'
                }
            }
        }
    }
}).then((response) => {
    console.log(response.body)
}).catch((err) => {
    console.log(err)
})

❗️

ATENÇÃO

Você terá até 5 dias corrido para efetuar a captura do pagamento pré-autorizado. Caso isto não ocorra o Moip cancelará automaticamente o pagamento.