Ofereça o meio de pagamento que encanta seus clientes

Integre o checkout preferido de quem mais consome na internet e crie uma experiência “WOW”!


Suggest Edits

Integrando ao Moip

 

1. Criando conta Moip Sandbox

Olá, bem-vindo ao Moip! Nessa página você encontrará informações práticas e condensadas de como integrar com as APIs do Moip. Mas primeiro, para que você possa começar a utiliza-las, você deve criar uma conta em nosso ambiente Sandbox. É um processo bem fácil e nesse ambiente de testes você vai poder dar uma olhada em todos os passos de integração. Lembrando que tudo que você fizer e criar lá continuará lá, para que você possa consultar mais tarde.

A conta Moip Sandbox é uma conta totalmente separada da conta Moip Produção, tanto é que você acessa essas duas contas através de endereços diferentes e elas podem ter logins diferentes também, se desejar. Ah, e o mais importante! A criação de uma não implica na criação da outra, tá? Quando você terminar a implementação utilizando a conta Sandbox você deve criar uma conta Moip Produção.

Mas agora a gente só precisa que você tenha uma conta em Sandbox mesmo! Você pode criá-la por aqui.

2. Obtendo as chaves de acesso

Uma vez que você criou a sua conta em Sandbox, você precisará pegar a chave e o token dela para poder realizar chamadas para as APIs. Essas informações ficam dentro da sua conta Moip Sandbox e você pode acessa-las em Minha conta > Configurações > Chaves de Acesso.

Para autenticar as requisições, você deve gerar um hash base64 composto por seu token:chave.

Authorization: Basic BASE64(MOIP_API_TOKEN:MOIP_API_KEY)

O resultado será semelhante a:

Authorization: Basic MDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDE6QUJBQkFCQUJBQkFCQUJBQkFCQUJBQkFCQUJBQkFCQUJBQkFCQUJBQg==

Você pode utilizar as credenciais acima para efetuar os testes. Em todos exemplos de requisições há chaves de testes válidas para o consumo da API.

LOGIN E SENHA SANDBOX

O login da sua conta Sandbox é o email utilizado no cadastro. A senha também é configurada no momento do cadastro. Você não precisa aguardar e-mail de confirmação do Moip para começar a usar nosso ambiente de testes.

3. Produtos

Escolha o tipo de integração que você terá com o Moip baseado no seu tipo de negócio!

a) E-commerce

Então você vai fazer vendas sem divisão ou repasse dos valores, certo? Legal, o Moip para E-commerces é um conjunto de ferramentas completo para criar seu e-commerce e receber pagamentos. Da criação de um simples pagamento por cartão de crédito à implementação de esquemas de pagamento por 1-click, reembolsos e pré-autorizações.

b) Marketplaces e Plataformas

Aqui você vai dividir o valor com alguns fornecedores, ou possui uma plataforma com lojistas e precisa fazer o split desses valores na hora da transação. Nesse caso você vai precisar da nossa facilidade para esse processo que costuma ser bem complicadinho. Utilize o Connect para conectar-se à outras contas de modo tão simples quanto o "Logar-se com facebook" e comece a realizar operações em nome delas. Crie contas Moip dentro do seu próprio sistema, split de pagamentos, reembolsos e outras operações.

c) Assinaturas

Agora se você possui uma solução que precisa de pagamentos recorrentes o Moip assinaturas é a sua opção. Crie planos e assinaturas que nós nos encarregamos de gerar a fatura com a frequência que você preicsar!

4. Você não é um desenvolvedor?

Acho que essa página deve estar parecendo um pouco confusa. Mas se você não for um desenvolvedor, talvez um módulo ou plataforma seja a melhor escolha para você, olha só:

Módulos: são softwares de simples aplicação ao seu site que disponibilizam os serviços necessários para uma loja virtual. Alguns dos módulos que já oferecem o Moip como meio de pagamento são o Magento, OpenCart, OsCommerce, PrestaShop e WooCommerce.

Plataformas: são sites que hospedam sua loja virtual e oferecem estrutura (servidores, ferramentas e layout) e serviços necessários para processar seu pagamento. O Moip já está integrado em diversas plataformas de e-commerce nacionais e internacionais. Se quiser dar uma olhada na lista de plataformas disponíveis, você pode acessar a nossa documentação por aqui. A lista fica no menu esquerdo, ao final dele! :)

Cobrando a sua primeira transação

Imagino que você esteja ansioso para começar, né? Tranquilo, nesse exemplo demonstramos o caso mais simples de integração com o Moip que é a criação de uma transação por cartão de crédito.

A integração começa com a criação de um Pedido . O Pedido deve conter as informações pertinentes ao que está sendo vendido, seja um produto, serviço ou uma simples cobrança. É importante que tenhamos essas informações para que você tenha mais segurança. Com elas faremos uma análise anti-fraude da transação.

Abaixo um exemplo (em cURL) da criação de um Pedido usando apenas os atributos obrigatórios.

{
  "ownId": "pedido_xyz",
  "items": [
    {
      "product": "Box de Seriado - Exterminate!",
      "quantity": 1,
      "detail": "Box de seriado com 8 dvds",
      "price": 7300
    }
  ],
  "customer": {
    "ownId": "cliente_xyz",
    "fullname": "João Silva",
    "email": "joaosilva@email.com"
  }
}
curl -v https://sandbox.moip.com.br/v2/orders \
   -H 'Content-Type: application/json'  \
   -H 'Authorization: Basic MDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDE6QUJBQkFCQUJBQkFCQUJBQkFCQUJBQkFCQUJBQkFCQUJBQkFCQUJBQg==' \
   -d '{
  "ownId": "pedido_xyz",
  "items": [
    {
      "product": "Box de Seriado - Exterminate!",
      "quantity": 1,
      "detail": "Box de seriado com 8 dvds",
      "price": 7300
    }
  ],
  "customer": {
    "ownId": "cliente_xyz",
    "fullname": "João Silva",
    "email": "joaosilva@email.com"
  }
}'

Feito isso, você irá receber como resposta um objeto do tipo Pedido com os detalhes mostrados abaixo.

{
  "id": "ORD-KWH58PQA3RTG",
  "ownId": "pedido_xyz",
  "status": "CREATED",
  "createdAt": "2015-04-29T12:07:58-0300",
  "amount": {
    "total": 2300,
    "fees": 0,
    "refunds": 0,
    "liquid": 0,
    "otherReceivers": 0,
    "currency": "BRL",
    "subtotals": {
      "shipping": 0,
      "addition": 0,
      "discount": 0,
      "items": 2300
    }
  },
  "items": [
    {
      "product": "Box de Seriado",
      "price": 2300,
      "detail": "Box de seriado com 7 dvds",
      "quantity": 1
    }
  ],
  "customer": {
    "id": "CUS-BDKZ3SP6OUGX",
    "ownId": "cliente_xyz",
    "fullname": "João Silva",
    "createdAt": "2015-04-29T12:07:58-0300",
    "email": "joaosilva@email.com",
    "taxDocument": {
      "type": "UNKNOWN",
      "number": ""
    },
    "_links": {
      "self": {
        "href": "https://sandbox.moip.com.br/v2/customers/CUS-BDKZ3SP6OUGX"
      }
    }
  },
  "payments": [],
  "refunds": [],
  "entries": [],
  "events": [
    {
      "createdAt": "2015-04-29T12:07:58-0300",
      "description": "",
      "type": "ORDER.CREATED"
    }
  ],
  "receivers": [
    {
      "moipAccount": {
        "login": "integracao@labs.moip.com.br",
        "fullname": "Moip SandBox",
        "id": "MPA-CULBBYHD11"
      },
      "amount": {
        "fees": 0,
        "refunds": 0,
        "total": 2300
      },
      "type": "PRIMARY"
    }
  ],
  "_links": {
    "self": {
      "href": "https://sandbox.moip.com.br/v2/orders/ORD-KWH58PQA3RTG"
    },
    "checkout": {
      "payCreditCard": {
        "redirectHref": "https://checkout-sandbox.moip.com.br/creditcard/ORD-KWH58PQA3RTG"
      },
      "payBoleto": {
        "redirectHref": "https://checkout-sandbox.moip.com.br/boleto/ORD-KWH58PQA3RTG"
      }
    }
  }
}

O próximo passo é receber por esse pedido (oba!). Para isso você deve criar um Pagamento associado a este pedido. Neste exemplo faremos o pagamento por meio de um cartão de crédito capturado em um formulário do próprio cliente. Caso prefira, você pode direcionar o seu cliente para o Checkout Moip utilizando a uri correspondente a forma de pagamento desejada (ex: _links.checkout.payCreditCard) retornada na resposta da criação do pedido.

{
      "installmentCount":2,
      "fundingInstrument":{
        "method":"CREDIT_CARD",
        "creditCard":{
          "expirationMonth":12,
          "expirationYear": 25,
          "number": "5555666677778884",
          "cvc": "123",
          "holder":{
            "fullname":"João Portador da Silva",
            "birthdate":"1988-12-30",
            "taxDocument":{
              "type":"CPF",
              "number":"12345679891"
            },
            "phone":{
              "countryCode":"55",
              "areaCode":"11",
              "number":"66778899"
            }
          }
        }
      }
    }
curl -v https://sandbox.moip.com.br/v2/orders/{id}/payments \
     -H 'Content-Type: application/json'  \
     -H 'Authorization: Basic MDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDE6QUJBQkFCQUJBQkFCQUJBQkFCQUJBQkFCQUJBQkFCQUJBQkFCQUJBQg==' \
     -d '{
      "installmentCount":2,
      "fundingInstrument":{
        "method":"CREDIT_CARD",
        "creditCard":{
          "expirationMonth":12,
          "expirationYear": 25,
          "number": "5555666677778884",
          "cvc": "123",
          "holder":{
            "fullname":"João Portador da Silva",
            "birthdate":"1988-12-30",
            "taxDocument":{
              "type":"CPF",
              "number":"12345679891"
            },
            "phone":{
              "countryCode":"55",
              "areaCode":"11",
              "number":"66778899"
            }
          }
        }
      }
    }'

ATENÇÃO

Os dados sensíveis do cartão devem sempre passar pela criptografia antes do envio ao Moip.

Após a criação do pagamento, você irá receber a resposta com o resultado da transação.

{
  "id": "PAY-3QHGJL1ORP6L",
  "status": "IN_ANALYSIS",
  "amount": {
    "fees": 187,
    "refunds": 0,
    "liquid": 1813,
    "currency": "BRL",
    "total": 2000
  },
  "installmentCount": 1,
  "fundingInstrument": {
    "creditCard": {
      "id": "CRC-TZW7KI7M46YF",
      "brand": "MASTERCARD",
      "first6": "555566",
      "last4": "8884",
      "holder": {
        "birthdate": "30/12/1988",
        "taxDocument": {
          "type": "CPF",
          "number": "33333333333"
        },
        "fullname": "Jose Portador da Silva"
      }
    },
    "method": "CREDIT_CARD"
  },
  "fees": [
    {
      "type": "TRANSACTION",
      "amount": 187
    }
  ],
  "events": [
    {
      "createdAt": "2015-04-01T15:45:04-0300",
      "type": "PAYMENT.IN_ANALYSIS"
    },
    {
      "createdAt": "2015-04-01T15:45:01-0300",
      "type": "PAYMENT.CREATED"
    }
  ],
  "_links": {
    "order": {
      "title": "ORD-F3BE7QOLKON3",
      "href": "https://sandbox.moip.com.br/v2/orders/ORD-F3BE7QOLKON3"
    },
    "self": {
      "href": "https://sandbox.moip.com.br/v2/payments/PAY-3QHGJL1ORP6L"
    }
  },
  "createdAt": "2015-04-01T15:45:01-0300",
  "updatedAt": "2015-04-01T15:45:04-0300"
}

Você pode acompanhar as alterações de status tanto do Pedido quanto do Pagamento por meio dos Webhooks ou realizando consultas nos recursos por meio de chamadas GET. Acesse o Guia básico para entender as sequências de status dos recursos para os diferentes meios de pagamento.

Homologação

Assim que você finalizar a integração em Sandbox, você estará apto para a nossa homologação. Esse é o passo final antes de ir para produção. Nossa equipe fará alguns testes de compra e, caso a integração cumpra os requisitos, você receberá as credenciais para uso da API em produção.

 
Suggest Edits

Autenticação

 

Como para acessar qualquer sistema, o primeiro passo para usar as APIs Moip se autenticar. É nessa etapa que você vai se conectar com os nossos serviços e estará apto a iniciar o desenvolvimento de sua aplicação. Para fazer as requisições em nossas APIs você vai precisar das chaves de acesso que estão disponíveis em sua conta sandbox. As chaves de acesso (token e key) são confidenciais e recomendamos não compartilhá-las em ambientes públicos ou com terceiros.
A autenticação para as APIs Moip é feita via HTTP Basic Auth e deve seguir os passos descritos a seguir.

1. Crie uma conta sandbox
2. Acesse sua conta criada https://conta-sandbox.moip.com.br/
3. Para pegar suas chaves de acesso siga o caminho: Minha conta >> Configurações >> Chaves de acesso
4. Em sua ferramenta de desenvolvimento o token deve ser o username enquanto a chave será a senha. Nós gostamos bastante do Postman! Caso você queira usá-lo, ele será usado nos próximos exemplos. Como abaixo, em um exemplo de como os dados da autenticação devem ser preenchidos. :)

Token = username
Chave = password

Token = username
Chave = password

Para configurar o Header você deve aplicar as keys Content-Type (valor = application/json) e Authorization com a criptografia de suas chaves de acesso (token e key) da conta Moip.

Certifique-se de configurar o **header** corretamente com os valores do **Content-Type** e **Authorization**.

Certifique-se de configurar o header corretamente com os valores do Content-Type e Authorization.

IMPORTANTE

No caso do Postman, o próprio programa gera uma criptografia Base64. Esse código é o resultado da combinação de token e chave e é usado como valor basic na autorização. Se sua ferramenta de desenvolvimento não faz criptografia automaticamente você pode fazê-la em sites como o Base64 encode. Para isso basta inserir as chaves (separadas por :) no campo vazio e clicar em ENCODE

 
Suggest Edits

1. Clientes

Cliente é o usuário de um serviço ou o comprador da sua loja virtual. Esta API permite o cadastro e a consulta de um determinado cliente.

 
 
 
Suggest Edits

Criar Cliente

Cadastre um cliente com um cartão de crédito cadastrado

Note que alguns dados são necessários para cadastrar um novo comprador no Moip. Esses dados podem ser usados tanto para o cadastro como para a análise anti-fraude da transação. Por isso é muito importante garantir que eles cheguem no Moip conforme os formatos informados abaixo.

 
posthttps://sandbox.moip.com.br/v2/customers/

Body Params

ownId
string
required

Id próprio do cliente. Referência externa. Limite de caracteres: 65.

fullname
string
required

Nome completo do cliente. Limite de caracteres: 90.

email
string
required

E-mail do cliente. Limite de caracteres: 90.

birthDate
date
required

Data de nascimento do cliente. Formato: AAAA-MM-DD.

taxDocument
object
required

Documento do cliente.

taxDocument.type
string
required

Tipo do documento. Valores possíveis: CPF e CNPJ. Limite de caracteres: 4.

taxDocument.number
string
required

Número do documento. Limite de caracteres: 11 (CPF), 14 (CNPJ).

phone
object
required

Telefone de contato.

phone.countyCode
integer
required

DDI (código internacional) do telefone. Valores possíveis: 55. Limite de caracteres: 2.

phone.areaCode
integer
required

Código de área do cliente. Limite de caracteres: 2.

phone.number
integer
required

Número de telefone do cliente. Limite de caracteres: 16.

shippingAddress
object
shippingAddress.street
string
required

Logradouro do endereço. Não tem limite de caracteres.

shippingAddress.streetNumber
string
required

Número. Não tem limite de caracteres.

shippingAddress.complement
string
required

Complemento do endereço. Não tem limite de caracteres.

shippingAddress.district
string
required

Bairro. Não tem limite de caracteres.

shippingAddress.city
string
required

Cidade. Não tem limite de caracteres.

shippingAddress.state
string
required

Estado (sigla). Limite de caracteres: 2.

shippingAddress.country
string
required

País em formato ISO-alpha3, exemplo BRA.

shippingAddress.zipCode
int32
required

O CEP do endereço de cobrança. Limite de caracteres: 20.

fundingInstrument
object
fundingInstrument.method
string

Meio de pagamento. Valor possível: CREDIT_CARD

fundingInstrument.creditCard
object
fundingInstrument.creditCard.number
string

Número do cartão de crédito. Requer certificação PCI. Limite de caracteres: 18.

fundingInstrument.creditCard.expirationMonth
int32

Mês de expiração do cartão. Requer certificação PCI. Obrigatório se utilizado o number. Limite de caracteres: 2.

fundingInstrument.creditCard.expirationYear
int32

Ano de expiração do cartão. Requer certificação PCI. Obrigatório se utilizado o number. Limite de caracteres: 4.

fundingInstrument.creditCard.cvc
string

Código de segurança do cartão. (Necessário estar dentro do escopo PCI para enviar esse campo sem criptografia). Não tem limite de caracteres.

fundingInstrument.creditCard.holder
object
fundingInstrument.creditCard.holder.fullname
string
required

Nome do portador impresso no cartão. Limite de caracteres: 65.

fundingInstrument.creditCard.holder.birthdate
date
required

Data de nascimento do cliente. Formato: AAAA-MM-DD.

fundingInstrument.creditCard.holder.taxDocument
object
required

Documento do portador do cartão. Os atributos são type e number. O type deve ser CPF ou CNPJ e o number é o número do documento.

fundingInstrument.creditCard.holder.phone
object
required

Telefone do portador do cartão. Os atributos são: countryCode, areaCode e number.

fundingInstrument.creditCard.holder.billingAddress
object

Endereço de cobrança do portador do cartão de crédito. Os atributos desse objeto são: street, streetNumber, complement, district, city, state, country e zipCode.

Headers

Authorization
string
required

Basic [gerar hash base64 do token:chave]

Content-Type
string
required

application/json

 
{  
   "ownId":"meu_id_customer_002", 
   "fullname":"Maria Oliveira",
   "email":"maria@email.com",
   "birthDate":"1980-5-10",
   "taxDocument":{  
      "type":"CPF",
      "number":"10013390023"
   },
   "phone":{  
      "countryCode":"55",
      "areaCode":"11",
      "number":"22226842"
   },
   "shippingAddress":{  
      "city":"Rio de Janeiro",
      "district":"Ipanema",
      "street":"Avenida Atlântica",
      "streetNumber":"60",
      "zipCode":"02446000",
      "state":"RJ",
      "country":"BRA"
   },
   "fundingInstrument":{  
      "method":"CREDIT_CARD",
      "creditCard":{  
         "expirationMonth":"06",
         "expirationYear":"22",
         "number":"6362970000457013",
         "cvc":"123",
         "holder":{  
            "fullname":"Maria Oliveira",
            "birthdate":"1980-05-10",
            "taxDocument":{  
               "type":"CPF",
               "number":"10013390023"
            },
            "billingAddress":{  
               "city":"Rio de Janeiro",
               "district":"Copacabana",
               "street":"Rua Raimundo Corrêa",
               "streetNumber":"1200",
               "zipCode":"05246200",
               "state":"RJ",
               "country":"BRA"
            },
            "phone":{  
               "countryCode":"55",
               "areaCode":"11",
               "number":"22226842"
            }
         }
      }
   }
}
<?php

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

$customer = $moip->customers()->setOwnId(meu_id_customer_002)
	->setFullname("Maria Oliveira")
  ->setEmail("maria@email.com")
  ->setBirthDate("1980-5-10")
  ->setTaxDocument("1001339023")
  ->setPhone(55, 11, 22226842)
  ->addAddress("SHIPPING",
  	"Avenida Atlântica", 60,
    "Ipanema", "Rio de Janeiro", "RJ",
    "01234000")
  ->setCreditCard(6, 22, 6362970000457013, 123, $holder)
  ->create();

print_r($customer);
/**
* 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", "10013390023")
);

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

Map<String, Object> shippingAddress = payloadFactory(
    value("city", "Sao Paulo"),
    value("district", "Itaim BiBi"),
    value("street", "Av. Brigadeiro Faria Lima"),
    value("streetNumber", "3064"),
    value("state", "SP"),
    value("country", "BRA"),
    value("zipCode", "01451001")
);

Map<String, Object> customer = payloadFactory(
    value("ownId", "customer_own_id"),
    value("fullname", "Customer Full Name"),
    value("email", "customer@mail.com"),
    value("birthDate", "1980-5-10"),
    value("taxDocument", taxDocument),
    value("phone", phone),
    value("shippingAddress", shippingAddress)
);

Map<String, Object> newCustomer = Moip.API.customers().create(customer, setup);
#
# Este exemplo usa a SDK do Moip de Ruby, disponível
# em: https://github.com/moip/moip-sdk-ruby
#
    
customer = api.customer.create({  
   ownId: 'meu_id_customer_002', 
   fullname: 'Maria Oliveira', 
   email: 'maria@email.com', 
   birthDate: '1980-5-10', 
   taxDocument: {  
      type: 'CPF', 
      number: '10013390023'
   },
   phone: {  
      countryCode: '55', 
      areaCode: '11', 
      number: '22226842'
   },
   shippingAddress: {  
      city: 'Rio de Janeiro', 
      district: 'Ipanema', 
      street: 'Avenida Atlântica', 
      streetNumber: '60', 
      zipCode: '02446000', 
      state: 'RJ', 
      country: 'BRA'
   },
   funding_instrument: {  
      method: 'CREDIT_CARD', 
      credit_card: {  
         expirationMonth: '06', 
         expirationYear: '22', 
         number: '6362970000457013', 
         cvc: '123', 
         holder: {  
            fullname: 'Maria Oliveira', 
            birthdate: '1980-05-10', 
            taxDocument: {  
               type: 'CPF', 
               number: '10013390023'
            },
            billingAddress: {  
               city: 'Rio de Janeiro', 
               district: 'Copacabana', 
               street: 'Rua Raimundo Corrêa', 
               streetNumber: '1200', 
               zipCode: '05246200', 
               state: 'RJ', 
               country: 'BRA'
            },
            phone: {  
               countryCode: '55', 
               areaCode: '11', 
               number: '22226842'
            }
         }
      }
   }
})
/**
* 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.customer.create({
    fullname: 'Jose Silva',
    email: 'jose_silva0@email.com',
    birthDate: '1988-12-30',
    taxDocument: {
        type: 'CPF',
        number: '22222222222'
    },
    phone: {
        countryCode: '55',
        areaCode: '11',
        number: '66778899'
    },
    shippingAddress: {
        city: 'Sao Paulo',
        complement: '8',
        district: 'Itaim',
        street: 'Avenida Faria Lima',
        streetNumber: '2927',
        zipCode: '01234000',
        state: 'SP',
        country: 'BRA'
    },
    fundingInstrument:{  
        method:"CREDIT_CARD",
        creditCard:{  
           expirationMonth:"06",
           expirationYear:"22",
           number:"6362970000457013",
           cvc:"123",
           holder:{  
              fullname:"Maria Oliveira",
              birthdate:"1980-05-10",
              taxDocument:{  
                 type:"CPF",
                 number:"10013390023"
              },
              billingAddress:{  
                 city:"Rio de Janeiro",
                 district:"Copacabana",
                 street:"Rua Raimundo Corrêa",
                 streetNumber:"1200",
                 zipCode:"05246200",
                 state:"RJ",
                 country:"BRA"
              },
              phone:{  
                 countryCode:"55",
                 areaCode:"11",
                 number:"22226842"
              }
           }
        }
     }
}).then((response) => {
    console.log(response.body) 
}).catch((err) => {
    console.log(err) 
})
A binary file was returned

You couldn't be authenticated

{
    "id": "CUS-84OG1W7AEVXQ",
    "ownId": "meu_id_customer_002",
    "fullname": "Maria Oliveira",
    "createdAt": "2017-10-11T10:48:02.000-03",
    "birthDate": "1980-05-10",
    "email": "maria@email.com",
    "fundingInstrument": {
        "creditCard": {
            "id": "CRC-1BEGIVCYO9L7",
            "brand": "ELO",
            "first6": "636297",
            "last4": "7013",
            "store": true
        },
        "method": "CREDIT_CARD"
    },
    "phone": {
        "countryCode": "55",
        "areaCode": "11",
        "number": "22226842"
    },
    "taxDocument": {
        "type": "CPF",
        "number": "10013390023"
    },
    "shippingAddress": {
        "zipCode": "02446000",
        "street": "Avenida Atlântica",
        "streetNumber": "60",
        "city": "Rio de Janeiro",
        "district": "Ipanema",
        "state": "RJ",
        "country": "BRA"
    },
    "_links": {
        "self": {
            "href": "https://sandbox.moip.com.br/v2/customers/CUS-84OG1W7AEVXQ"
        },
        "hostedAccount": {
            "redirectHref": "https://hostedaccount-sandbox.moip.com.br?token=1d588f4d-4cfb-411d-84d4-8a7126e78218&id=CUS-84OG1W7AEVXQ&mpa=MPA-B4DEE9F7589B"
        }
    },
    "fundingInstruments": [
        {
            "creditCard": {
                "id": "CRC-1BEGIVCYO9L7",
                "brand": "ELO",
                "first6": "636297",
                "last4": "7013",
                "store": true
            },
            "method": "CREDIT_CARD"
        }
    ]
}
 
Suggest Edits

Adicionar Cartão de Crédito

Por meio desta API é possível adicionar um ou mais cartões de crédito a um cliente.

 
posthttps://sandbox.moip.com.br/v2/customers/customer_id/fundinginstruments

Path Params

customer_id
string
required

Código identificador do cliente. Exemplo: CUS-87HFA3QCEKO7

Body Params

method
string
required

Método do instrumento de cobrança. Valores possíveis: CREDIT_CARD.

creditCard
object
creditCard.expirationMonth
int32
required

Mês de expiração do cartão. Limite de caracteres 2.

creditCard.expirationYear
int32
required

Ano de expiração do cartão. Limite de caracteres: 4.

creditCard.number
int32
required

Número do cartão de crédito. Limite de caracteres: 18.

creditCard.cvc
string
required

Código de segurança do cartão. Não tem limite de caracteres.

creditCard.holder
object
creditCard.holder.fullname
string
required

Nome do portador impresso no cartão. Limite de caracteres: 65.

creditCard.holder.birthdate
date
required

Data de nascimento do cliente. Formato: AAAA-MM-DD.

creditCard.holder.taxDocument
object
creditCard.holder.taxDocument.type
string
required

Tipo do documento. Valores possíveis: CPF, CNPJ.

creditCard.holder.taxDocument.number
string
required

Número do documento. Limite de caracteres: 11 (CPF), 14 (CNPJ).

creditCard.holder.phone
object
creditCard.holder.phone.countryCode
string
required

DDI (código internacional) do telefone. Valores possíveis: 55. Limite de caracteres: 2

creditCard.holder.phone.areaCode
string
required

Código de área do cliente. Limite de caracteres: 2.

creditCard.holder.phone.number
string
required

Número de telefone do cliente. Não tem limite de caracteres.

creditCard.holder.billingAddress
object
creditCard.holder.billingAddress.street
string

Logradouro do endereço.

creditCard.holder.billingAddress.streetNumber
string

Número.

creditCard.holder.billingAddress.complement
string

Complemento do endereço.

creditCard.holder.billingAddress.district
string

Bairro.

creditCard.holder.billingAddress.city
string

Cidade.

creditCard.holder.billingAddress.state
string

Estado

creditCard.holder.billingAddress.country
string

País em formato ISO-alpha3, exemplo BRA.

creditCard.holder.billingAddress.zipCode
string

O CEP do endereço de cobrança.

Headers

Authorization
string
required

Basic [gerar hash base64 do token:chave]

Content-Type
string
required

application/json

IMPORTANTE

Não é possível adicionar um cartão de crédito utilizando o hash de criptografia através dessa API. Para utilizar o hash, é necessário adicionar no momento do pagamento.

{
  "method": "CREDIT_CARD",
  "creditCard": {
    "expirationMonth": "05",
    "expirationYear": "22",
    "number": "4012001037141112",
    "cvc": "123",
    "holder": {
      "fullname": "João Silva",
      "birthdate": "1990-10-22",
      "taxDocument": {
        "type": "CPF",
        "number": "22288866644"
      },
      "phone": {
        "countryCode": "55",
        "areaCode": "11",
        "number": "55552266"
      }
    }
  }
}
<?php

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

$customer = $moip->customers()->creditCard()
        ->setExpirationMonth('05')
        ->setExpirationYear(2022)
        ->setNumber('4012001037141112')
        ->setCVC('123')
        ->setFullName('João Silva')
        ->setBirthDate('1990-10-22')
        ->setTaxDocument('CPF', '22288866644')
        ->setPhone('55','11','55552266')
        ->create('CUSTOMER_ID');

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

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

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

Map<String, Object> holder = payloadFactory(
    value("fullname", "Test Holder Moip"),
    value("birthdate", "1990-10-22"),
    value("taxDocument", taxDocumentHolder),
    value("phone", phoneHolder)
);

Map<String, Object> creditCard = payloadFactory(
    value("expirationMonth", "05"),
    value("expirationYear", "22"),
    value("number", "4012001037141112"),
    value("cvc", "123"),
    value("holder", holder)
);

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

Map<String, Object> newCreditCard = Moip.API.customers().addCreditCard(fundingInstrument, "customer_id", setup);
#
# Este exemplo usa a SDK do Moip de Ruby, disponível
# em: https://github.com/moip/moip-sdk-ruby
#
    
credit_card = api.customer.add_credit_card("CUS-87HFA3QCEKO7", 
    { 
      method: 'CREDIT_CARD', 
      credit_card: {
        expirationMonth: '05', 
        expirationYear: '22', 
        number: '4012001037141112', 
        cvc: '123', 
        holder: {
          fullname: 'João Silva', 
          birthdate: '1990-10-22', 
          taxDocument: {
            type: 'CPF', 
            number: '22288866644', 
          },
          phone: {
            countryCode: '55', 
            areaCode: '11', 
            number: '55552266', 
          },
        },
      },
    }
)
/**
* Este exemplo usa a SDK do Moip de .NET, disponível 
* em: https://github.com/moip/moip-sdk-dotnet
*/

ShippingAddress shippingAddressRequest = new ShippingAddress
{
    Street = "Avenida Faria Lima",
    StreetNumber = "500",
    Complement = "10",
    District = "Itaim Bibi",
    City = "São Paulo",
    State = "SP",
    Country = "BRA",
    ZipCode = "01234000"
};


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

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

HolderRequest holderRequest = new HolderRequest
{
    Fullname = "João Silva",
    Birthdate = "1990-10-22",
    TaxDocument = taxDocumentRequest,
    Phone = phoneRequest
};

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


CustomerCreditCardRequest customerCreditCardRequest = new CustomerCreditCardRequest
{
    Method = "CREDIT_CARD",
    CreditCard = creditCardRequest
};

CustomerCreditCardResponse customerCreditCardResponse = client.Customers.CreateCreditCard(customerCreditCardRequest, "CUS-1RM8JPVKWEVR");
/**
* 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.customer.createCreditCard(customerId, {
    method: "CREDIT_CARD",
    creditCard: {
        expirationMonth: "05",
        expirationYear: "22",
        number: "5555666677778884",
        cvc: "123",
        holder: {
            fullname: "Jose Portador da Silva",
            birthdate: "1988-12-30",
            taxDocument: {
                type: "CPF",
                number: "33333333333"
            },
            phone: {
                countryCode: "55",
                areaCode: "11",
                number: "66778899"
            }
        }
    }
}).then((response) => {
    console.log(response.body) 
}).catch((err) => {
    console.log(err) 
})
A binary file was returned

You couldn't be authenticated

{
    "creditCard": {
        "id": "CRC-7YWS1UJRTMYW",
        "brand": "VISA",
        "first6": "401200",
        "last4": "1112",
        "store": true
    },
    "card": {
        "brand": "VISA",
        "store": true
    },
    "method": "CREDIT_CARD"
}
 
Suggest Edits

Deletar Cartão de Crédito

Para deletar um cartão de crédito da conta de um cliente basta inserir o código identificador do cartão (exemplo: CRC-8426482846) no endpoint e executar um DELETE

 
deletehttps://sandbox.moip.com.br/v2/fundinginstruments/creditcard_id

Path Params

creditcard_id
string
required

Código identificador do cartão de crédito. Exemplo: CRC-7YWS1UJRTMYW

Headers

Authorization
string
required

Basic [gerar hash base64 do token:chave]

Content-Type
string

application/json

 
<?php

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

$moip->customers()->creditCard()->delete(CRC-7YWS1UJRTMYW);
/**
* Este exemplo usa a SDK do Moip de Java, disponível 
* em: https://github.com/moip/moip-sdk-java
*/

Map<String, Object> deleteCreditCardResponse = Moip.API.customers().deleteCreditCard(ccId, setup);
#
# Este exemplo usa a SDK do Moip de Ruby, disponível
# em: https://github.com/moip/moip-sdk-ruby
#
    
api.customer.delete_credit_card!("CRC-7YWS1UJRTMYW")
/**
* 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.customer.removeCreditCard(creditcardId)
    .then((response) => {
        console.log(response)
    }).catch((err) => {
        console.log(err)
    })
A binary file was returned

You couldn't be authenticated

/* Em caso de sucesso a API deve retornar uma resposta vazia */
 
Suggest Edits

Consultar Cliente

Por meio desta API é possível consultar as informações e detalhes de um cliente.

 
gethttps://sandbox.moip.com.br/v2/customers/customer_id

Path Params

customer_id
string
required

Código identificador do cliente. Exemplo: CUS-87HFA3QCEKO7

Headers

Authorization
string
required

Basic [gerar hash base64 do token:chave]

 
curl --request GET \
  --url https://sandbox.moip.com.br/v2/customers/{customer_id} \
  --header 'authorization: Authorization'
<?php

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

try {
  $customer_id = 'CUS-87HFA3QCEKO7';
  $customer = $moip->customers()->get($customer_id);
  print_r($customer);
} catch (Exception $e) {
  printf($e->__toString());
}
/**
* Este exemplo usa a SDK do Moip de Java, disponível 
* em: https://github.com/moip/moip-sdk-java
*/

Map<String, Object> responseGet = Moip.API.customers().get("customer_id", setup);
#
# Este exemplo usa a SDK do Moip de Ruby, disponível
# em: https://github.com/moip/moip-sdk-ruby
#
    
customer = api.customer.show("CUS-87HFA3QCEKO7")
/**
* Este exemplo usa a SDK do Moip de .NET, disponível 
* em: https://github.com/moip/moip-sdk-dotnet
*/

string customerId = "CUS-87HFA3QCEKO7";
CustomerResponse customerResponse = client.Customers.GetCustomer(customerId);
/**
* 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.customer.getOne(customerId)
    .then((response) => {
        console.log(response)
    })
    .catch((err) => {
        console.log(err)
    })
A binary file was returned

You couldn't be authenticated

{
    "id": "CUS-87HFA3QCEKO7",
    "ownId": "meu_id_customer",
    "fullname": "João Silva",
    "createdAt": "2017-10-10T16:05:38.000-03",
    "birthDate": "1990-10-22",
    "email": "joao@email.com",
    "phone": {
        "countryCode": "55",
        "areaCode": "11",
        "number": "55552266"
    },
    "taxDocument": {
        "type": "CPF",
        "number": "22288866644"
    },
    "shippingAddress": {
        "zipCode": "01234000",
        "street": "Avenida Faria Lima",
        "streetNumber": "500",
        "complement": "10",
        "city": "São Paulo",
        "district": "Itaim Bibi",
        "state": "SP",
        "country": "BRA"
    },
    "_links": {
        "self": {
            "href": "https://sandbox.moip.com.br/v2/customers/CUS-87HFA3QCEKO7"
        },
        "hostedAccount": {
            "redirectHref": "https://hostedaccount-sandbox.moip.com.br?token=8899eae3-e4e8-4828-a93e-698a1c557107&id=CUS-87HFA3QCEKO7&mpa=MPA-B4DEE9F7589B"
        }
    }
}
 
Suggest Edits

Listar Todos os Clientes

Já por aqui você consegue listar todos os clientes criados.

 
gethttps://sandbox.moip.com.br/v2/customers/

Headers

Authorization
string
required

Basic [gerar hash base64 do token:chave]

 
curl --request GET \
  --url https://sandbox.moip.com.br/v2/customers/ \
  --header 'authorization: Authorization'
/**
* 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.customer.getAll()
    .then((response) => {
        console.log(response.body) 
    }).catch((err) => {
        console.log(err) 
    })
/**
* Este exemplo usa a SDK do Moip de Java, disponível 
* em: https://github.com/moip/moip-sdk-java
*/

Map<String, Object> listResponse = Moip.API.customers().list(setup);
A binary file was returned

You couldn't be authenticated

{
    "customers": [
        {
            "id": "CUS-87HFA3QCEKO7",
            "ownId": "meu_id_customer",
            "fullname": "João Paulo Silva",
            "createdAt": "2017-10-10T16:05:38.000-03",
            "birthDate": "1990-10-22",
            "email": "joao0@email.com",
            "phone": {
                "countryCode": "55",
                "areaCode": "11",
                "number": "55552266"
            },
            "taxDocument": {
                "type": "CPF",
                "number": "22288866644"
            },
            "shippingAddress": {
                "zipCode": "01234000",
                "street": "Avenida Faria Lima",
                "streetNumber": "500",
                "complement": "10",
                "city": "São Paulo",
                "district": "Itaim Bibi",
                "state": "SP",
                "country": "BRA"
            },
            "_links": {
                "self": {
                    "href": "https://sandbox.moip.com.br/v2/customers/CUS-87HFA3QCEKO7"
                },
                "hostedAccount": {
                    "redirectHref": "https://hostedaccount-sandbox.moip.com.br?token=8899eae3-e4e8-4828-a93e-698a1c557107&id=CUS-87HFA3QCEKO7&mpa=MPA-B4DEE9F7589B"
                }
            }
        },
        {
            "id": "CUS-0SE6A9YOIJKB",
            "ownId": "cliente-1002",
            "fullname": "Jose Silva",
            "createdAt": "2017-09-29T19:12:54.000-03",
            "birthDate": "1988-12-30",
            "email": "nome@email.com",
            "phone": {
                "countryCode": "55",
                "areaCode": "11",
                "number": "66778899"
            },
            "taxDocument": {
                "type": "CPF",
                "number": "22222222222"
            },
            "shippingAddress": {
                "zipCode": "01234000",
                "street": "Avenida Faria Lima",
                "streetNumber": "2927",
                "complement": "8",
                "city": "Sao Paulo",
                "district": "Itaim",
                "state": "SP",
                "country": "BRA"
            },
            "_links": {
                "self": {
                    "href": "https://sandbox.moip.com.br/v2/customers/CUS-0SE6A9YOIJKB"
                },
                "hostedAccount": {
                    "redirectHref": "https://hostedaccount-sandbox.moip.com.br?token=1cb2eaaa-fe52-4720-98b1-4f9681361ed8&id=CUS-0SE6A9YOIJKB&mpa=MPA-B4DEE9F7589B"
                }
            }
        },
 
Suggest Edits

Exemplos

Veja alguns exemplos de requisições

 

Criar cliente

Dados para cadastramento de um cliente.

{
  "ownId": "meu_id_customer",
  "fullname": "João Silva",
  "email": "joao@email.com",
  "birthDate": "1990-10-22",
  "taxDocument": {
    "type": "CPF",
    "number": "22288866644"
  },
  "phone": {
    "countryCode": "55",
    "areaCode": "11",
    "number": "55552266"
  },
  "shippingAddress": {
    "city": "São Paulo",
    "complement": "10",
    "district": "Itaim Bibi",
    "street": "Avenida Faria Lima",
    "streetNumber": "500",
    "zipCode": "01234000",
    "state": "SP",
    "country": "BRA"
  }
}
#
# Este exemplo usa a SDK do Moip de Ruby, disponível
# em: https://github.com/moip/moip-sdk-ruby
#
    
customer = api.customer.create(
  ownId: "meu_id_customer",
  fullname: "João Silva",
  email: "joao@email.com",
  phone: {
    areaCode: "11",
    number: "66778899",
  },
  birthDate: "1990-10-22",
  taxDocument: {
    type: "CPF",
    number: "22288866644",
  },
  shippingAddress: {
    street: "Avenida Faria Lima",
    streetNumber: "500",
    complement: "10",
    district: "Itaim Bibi",
    city: "São Paulo",
    state: "SP",
    country: "BRA",
    zipCode: "01234000",
  },
)
/**
* 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", "10013390023")
);

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

Map<String, Object> shippingAddress = payloadFactory(
    value("city", "Sao Paulo"),
    value("district", "Itaim BiBi"),
    value("street", "Av. Brigadeiro Faria Lima"),
    value("streetNumber", "3064"),
    value("state", "SP"),
    value("country", "BRA"),
    value("zipCode", "01451001")
);

Map<String, Object> customer = payloadFactory(
    value("ownId", "customer_own_id"),
    value("fullname", "Customer Full Name"),
    value("email", "customer@mail.com"),
    value("birthDate", "1980-5-10"),
    value("taxDocument", taxDocument),
    value("phone", phone),
    value("shippingAddress", shippingAddress)
);

Map<String, Object> newCustomer = Moip.API.customers().create(customer, setup);
<?php

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

try {
  $customer = $moip->customers()->setOwnId(uniqid())
    ->setFullname('João Silva')
    ->setEmail('joao@email.com')
    ->setBirthDate('1990-10-22')
    ->setTaxDocument('22288866644')
    ->setPhone(11, 55552266)
    ->addAddress('SHIPPING',
      'Avenida Faria Lima', 500,
      'Itaim Bibi', 'São Paulo', 'SP',
      '01234000', 10)
    ->create();
} 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.customer.create({
    fullname: 'Jose Silva',
    email: 'jose_silva0@email.com',
    birthDate: '1988-12-30',
    taxDocument: {
        type: 'CPF',
        number: '22222222222'
    },
    phone: {
        countryCode: '55',
        areaCode: '11',
        number: '66778899'
    },
    shippingAddress: {
        city: 'Sao Paulo',
        complement: '8',
        district: 'Itaim',
        street: 'Avenida Faria Lima',
        streetNumber: '2927',
        zipCode: '01234000',
        state: 'SP',
        country: 'BRA'
    }
}).then((response) => {
    console.log(response.body) 
}).catch((err) => {
    console.log(err) 
})
/**
* Este exemplo usa a SDK do Moip de .NET, disponível 
* em: https://github.com/moip/moip-sdk-dotnet
*/

ShippingAddress shippingAddressRequest = new ShippingAddress
{
    Street = "Avenida Faria Lima",
    StreetNumber = "500",
    Complement = "10",
    District = "Itaim Bibi",
    City = "São Paulo",
    State = "SP",
    Country = "BRA",
    ZipCode = "01234000"
};

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

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

CustomerRequest customerRequest = new CustomerRequest
{
    OwnId = "meu_id_customer",
		Fullname = "João Silva",
    BirthDate = "1990-10-22",
    Email = "joao@email.com",
    Phone = phoneRequest,
    ShippingAddress = shippingAddressRequest,
    TaxDocument = taxDocumentRequest
};

CustomerResponse customerResponse = client.Customers.CreateCustomer(customerRequest);

Criar cliente + cartão de crédito

Cadastrando um cliente já com um cartão de crédito vinculado à sua conta.

{  
   "ownId":"meu_id_customer_002", 
   "fullname":"Maria Oliveira",
   "email":"maria@email.com",
   "birthDate":"1980-5-10",
   "taxDocument":{  
      "type":"CPF",
      "number":"10013390023"
   },
   "phone":{  
      "countryCode":"55",
      "areaCode":"11",
      "number":"22226842"
   },
   "shippingAddress":{  
      "city":"Rio de Janeiro",
      "district":"Ipanema",
      "street":"Avenida Atlântica",
      "streetNumber":"60",
      "zipCode":"02446000",
      "state":"RJ",
      "country":"BRA"
   },
   "fundingInstrument":{  
      "method":"CREDIT_CARD",
      "creditCard":{  
         "expirationMonth":"06",
         "expirationYear":"22",
         "number":"6362970000457013",
         "cvc":"123",
         "holder":{  
            "fullname":"Maria Oliveira",
            "birthdate":"1980-05-10",
            "taxDocument":{  
               "type":"CPF",
               "number":"10013390023"
            },
            "billingAddress":{  
               "city":"Rio de Janeiro",
               "district":"Copacabana",
               "street":"Rua Raimundo Corrêa",
               "streetNumber":"1200",
               "zipCode":"05246200",
               "state":"RJ",
               "country":"BRA"
            },
            "phone":{  
               "countryCode":"55",
               "areaCode":"11",
               "number":"22226842"
            }
         }
      }
   }
}
#
# Este exemplo usa a SDK do Moip de Ruby, disponível
# em: https://github.com/moip/moip-sdk-ruby
#
    
customer = api.customer.create({  
   ownId: 'meu_id_customer_002', 
   fullname: 'Maria Oliveira', 
   email: 'maria@email.com', 
   birthDate: '1980-5-10', 
   taxDocument: {  
      type: 'CPF', 
      number: '10013390023'
   },
   phone: {  
      countryCode: '55', 
      areaCode: '11', 
      number: '22226842'
   },
   shippingAddress: {  
      city: 'Rio de Janeiro', 
      district: 'Ipanema', 
      street: 'Avenida Atlântica', 
      streetNumber: '60', 
      zipCode: '02446000', 
      state: 'RJ', 
      country: 'BRA'
   },
   funding_instrument: {  
      method: 'CREDIT_CARD', 
      credit_card: {  
         expirationMonth: '06', 
         expirationYear: '22', 
         number: '6362970000457013', 
         cvc: '123', 
         holder: {  
            fullname: 'Maria Oliveira', 
            birthdate: '1980-05-10', 
            taxDocument: {  
               type: 'CPF', 
               number: '10013390023'
            },
            billingAddress: {  
               city: 'Rio de Janeiro', 
               district: 'Copacabana', 
               street: 'Rua Raimundo Corrêa', 
               streetNumber: '1200', 
               zipCode: '05246200', 
               state: 'RJ', 
               country: 'BRA'
            },
            phone: {  
               countryCode: '55', 
               areaCode: '11', 
               number: '22226842'
            }
         }
      }
   }
})
/**
* 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", "10013390023")
);

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

Map<String, Object> shippingAddress = payloadFactory(
    value("city", "Sao Paulo"),
    value("district", "Itaim BiBi"),
    value("street", "Av. Brigadeiro Faria Lima"),
    value("streetNumber", "3064"),
    value("state", "SP"),
    value("country", "BRA"),
    value("zipCode", "01451001")
);

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

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

Map<String, Object> holder = payloadFactory(
    value("fullname", "Test Holder Moip"),
    value("birthdate", "1990-10-22"),
    value("taxDocument", taxDocumentHolder),
    value("phone", phoneHolder)
);

Map<String, Object> creditCard = payloadFactory(
    value("expirationMonth", "05"),
    value("expirationYear", "22"),
    value("number", "4012001037141112"),
    value("cvc", "123"),
    value("holder", holder)
);

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

Map<String, Object> customer = payloadFactory(
    value("ownId", "customer_own_id"),
    value("fullname", "Customer Full Name"),
    value("email", "customer@mail.com"),
    value("birthDate", "1980-5-10"),
    value("taxDocument", taxDocument),
    value("phone", phone),
    value("shippingAddress", shippingAddress),
    value("fundingInstrument", fundingInstrument)
);

Map<String, Object> newCustomer = Moip.API.customers().create(customer, setup);
<?php

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

$customer = $moip->customers()->setOwnId(meu_id_customer_002)
	->setFullname("Maria Oliveira")
  ->setEmail("maria@email.com")
  ->setBirthDate("1980-5-10")
  ->setTaxDocument("1001339023")
  ->setPhone(55, 11, 22226842)
  ->addAddress("SHIPPING",
  	"Avenida Atlântica", 60,
    "Ipanema", "Rio de Janeiro", "RJ",
    "01234000")
  ->setCreditCard(6, 22, 6362970000457013, 123, $holder)
  ->create();

print_r($customer);
/**
* 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.customer.create({
    fullname: 'Jose Silva',
    email: 'jose_silva0@email.com',
    birthDate: '1988-12-30',
    taxDocument: {
        type: 'CPF',
        number: '22222222222'
    },
    phone: {
        countryCode: '55',
        areaCode: '11',
        number: '66778899'
    },
    shippingAddress: {
        city: 'Sao Paulo',
        complement: '8',
        district: 'Itaim',
        street: 'Avenida Faria Lima',
        streetNumber: '2927',
        zipCode: '01234000',
        state: 'SP',
        country: 'BRA'
    },
    fundingInstrument:{  
        method:"CREDIT_CARD",
        creditCard:{  
           expirationMonth:"06",
           expirationYear:"22",
           number:"6362970000457013",
           cvc:"123",
           holder:{  
              fullname:"Maria Oliveira",
              birthdate:"1980-05-10",
              taxDocument:{  
                 type:"CPF",
                 number:"10013390023"
              },
              billingAddress:{  
                 city:"Rio de Janeiro",
                 district:"Copacabana",
                 street:"Rua Raimundo Corrêa",
                 streetNumber:"1200",
                 zipCode:"05246200",
                 state:"RJ",
                 country:"BRA"
              },
              phone:{  
                 countryCode:"55",
                 areaCode:"11",
                 number:"22226842"
              }
           }
        }
     }
}).then((response) => {
    console.log(response.body) 
}).catch((err) => {
    console.log(err) 
})
 
Suggest Edits

2. Pedidos

O Pedido é a representação do carrinho de compras do seu site. Esta API possibilita a criação, consulta e listagem de pedidos.

 
 
 
Suggest Edits

Status

Antes de criar o seu pedido é importante entender os status que um pedido pode ter aqui no Moip!

O status é a situação atual que o pedido se encontra no processo de transação.

Você pode receber notificações para cada alteração desse status configurando as Preferência de Notificação. Por aqui cada alteração de status é chamada de evento.

 
Status
Descrição

CREATED

Pedido criado. Mas ainda não possui nenhum pagamento.

WAITING

Pedido aguardando confirmação de pagamento. Indica que há um pagamento de cartão em análise ou um boleto que ainda não foi confirmado pelo banco.

PAID

Pedido pago. O pagamento criado nesse pedido foi autorizado.

NOT_PAID

Pedido não pago. O pagamento criado nesse pedido foi cancelado (Pagamentos com cartão podem ser cancelados pelo Moip ou pelo emissor do cartão, boletos são cancelados 5 dias após vencimento, débito bancário é cancelado em caso de falha).

REVERTED

Pedido revertido. Sofreu um chargeback ou foi completamente reembolsado.

 
Suggest Edits

Categorias de Produtos

Além disso, é importante que você compreenda as categorias de produtos. Quando tiver criado um pedido, é possível especificar a categoria ou uma sub-categoria em que se enquadra cada um dos produtos do carrinho.
A vantagem de informar a categoria é que o serviço análise de risco do Moip a levará em consideração no momento de autorizar o pagamento, podendo aumentar a conversão do seu site!

 

IMPORTANTE

Pedidos contendo mais de um produto com categorias diferentes serão analisados com base no categoria de maior risco.

Categoria
Subcategoria(!)
Descrição

ANIMALS_AND_PET_SUPPLIES

-

Animais & Bichos de Estimação

APPAREL_AND_ACCESSORIES

-

Roupas e Acessórios

APPAREL_AND_ACCESSORIES

CLOTHING

Roupas em Geral

APPAREL_AND_ACCESSORIES

CLOTHING_ACCESSORIES

Accessórios em Geral

APPAREL_AND_ACCESSORIES

COSTUMES_AND_ACCESSORIES

Fantasias e Acessórios

APPAREL_AND_ACCESSORIES

HANDBAGS_AND_WALLET_ACCESSORIES

Acessórios para Bolsas e Carteiras

APPAREL_AND_ACCESSORIES

HANDBAGS_WALLETS_AND_CASES

Bolsas, Carteiras e Malas

APPAREL_AND_ACCESSORIES

JEWELRY

Joias

APPAREL_AND_ACCESSORIES

SHOE_ACCESSORIES

Acessórios para Sapatos

APPAREL_AND_ACCESSORIES

SHOES

Sapatos

APPAREL_AND_ACCESSORIES

OTHER_APPAREL

Outros

ARTS_AND_ENTERTAINMENT

-

Arte e Entretenimento

BABY_AND_TODDLER

-

Bebês e Recém-nascidos

BUSINESS_AND_INDUSTRIAL

-

Negócios e Indústria

BUSINESS_AND_INDUSTRIAL

ADVERTISING_AND_MARKETING

Negócios e Indústria

BUSINESS_AND_INDUSTRIAL

AGRICULTURE

Agricultura

BUSINESS_AND_INDUSTRIAL

CONSTRUCTION

Construção

BUSINESS_AND_INDUSTRIAL

FILM_AND_TELEVISION

Filme e Televisão

BUSINESS_AND_INDUSTRIAL

FINANCE_AND_INSURANCE

Finanças e Seguros

BUSINESS_AND_INDUSTRIAL

FOOD_SERVICE

Serviços de Alimentação

BUSINESS_AND_INDUSTRIAL

FORESTRY_AND_LOGGING

Madeireiras

BUSINESS_AND_INDUSTRIAL

HEAVY_MACHINERY

Maquinário Pesado

BUSINESS_AND_INDUSTRIAL

HOTEL_AND_HOSPITALITY

Hotel e Hospedagem

BUSINESS_AND_INDUSTRIAL

INDUSTRIAL_STORAGE

Armazém Industrial

BUSINESS_AND_INDUSTRIAL

LAW_ENFORCEMENT

Equipamentos Militares

BUSINESS_AND_INDUSTRIAL

MANUFACTURING

Manufatura

BUSINESS_AND_INDUSTRIAL

MATERIAL_HANDLING

Movimentação de Material

BUSINESS_AND_INDUSTRIAL

MEDICAL

Medicina

BUSINESS_AND_INDUSTRIAL

MINING_AND_QUARRYING

Mineração

BUSINESS_AND_INDUSTRIAL

PIERCING_AND_TATTOOING

Piercing e tatuagem

BUSINESS_AND_INDUSTRIAL

RETAIL

Varejo

BUSINESS_AND_INDUSTRIAL

SCIENCE_AND_LABORATORY

Ciência e Laboratórios

BUSINESS_AND_INDUSTRIAL

SIGNAGE

Placas e Sinais

BUSINESS_AND_INDUSTRIAL

WORK_SAFETY_PROTECTIVE_GEAR

Equipamentos de Segurança do Trabalho

BUSINESS_AND_INDUSTRIAL

OTHER_BUSINESSES

Outros

CAMERA_AND_OPTIC_ACCESSORIES

-

Câmeras e Óticas

CAMERA_AND_OPTIC_ACCESSORIES

CAMERAS

Câmeras

CAMERA_AND_OPTIC_ACCESSORIES

CAMERA_ACESSORIES

Acessórios de câmeras

CAMERA_AND_OPTIC_ACCESSORIES

PHOTOGRAPHY

Fotografia

CAMERA_AND_OPTIC_ACCESSORIES

OTHERS_CAMERAS_ACCESSORIES

Outros

ELECTRONICS

-

Eletrônicos

ELECTRONICS

3D_PRINTERS

Impressoras 3D

ELECTRONICS

AUDIO

Áudio

ELECTRONICS

CIRCUIT_BOARDS_AND_COMPONENTS

Componentes de Circuito

ELECTRONICS

COMMUNICATIONS

Comunicação

ELECTRONICS

COMPONENTS

Componentes

ELECTRONICS

COMPUTERS

Computadores

ELECTRONICS

ELECTRONICS_ACCESSORIES

Acessórios Eletrônicos

ELECTRONICS

GPS_NAVIGATION_SYSTEMS

Aparelho GPS

ELECTRONICS

GPS_ACCESSORIES

Acessórios de GPS

ELECTRONICS

NETWORKING

Redes

ELECTRONICS

PRINT,_COPY,_SCAN_AND_FAX

Impressão, Cópia, Scanner e Fax

ELECTRONICS

PRINTER,_COPIER_AND_FAX_MACHINE_ACCESSORIES

Acessórios de Impressão, Cópia, Scanner e Fax

ELECTRONICS

VIDEO

Vídeo

ELECTRONICS

VIDEO_GAME_CONSOLES

Consoles de Vídeo Game

ELECTRONICS

VIDEO_GAME_CONSOLE_ACCESSORIES

Acessórios de Vídeo Game

ELECTRONICS

OTHER_ELECTRONICS

Outros

FOOD,_BEVERAGES_AND_TOBACCO

-

Comidas, Bebidas e Cigarro

FURNITURE

-

Móveis

TOOL_ACCESSORIES

-

Ferramentas

HEALTH_AND_BEAUTY

-

Saúde e Beleza

HEALTH_AND_BEAUTY

PERFUME_AND_COLOGNE

Perfumes e colônias

HEALTH_AND_BEAUTY

MAKEUP

Maquiagem

HEALTH_AND_BEAUTY

BATH_AND_BODY

Banho

HEALTH_AND_BEAUTY

COSMETIC_TOOLS

Utensílios cosméticos

HOME_AND_GARDEN

-

Casa e Jardim

LUGGAGE_AND_BAGS

-

Malas e Bagagens

ADULT

-

Adulto

WEAPONS_AND_AMMUNITION

-

Armas e Munição

OFFICE_SUPPLIES

-

Materiais de Escritório

RELIGIOUS_AND_CEREMONIAL

-

Religião e Cerimoniais

SOFTWARE

-

Software

SOFTWARE

COMPUTER_SOFTWARE

Software de Computador

SOFTWARE

DIGITAL_GOODS_AND_CURRENCY

Bens e Moedas Digitais

SOFTWARE

DIGITAL_SERVICES

Serviços Digitais

SOFTWARE

VIDEO_GAME_SOFTWARE

Jogos de Vídeo Games

SOFTWARE

OTHER_SOFTWARES

Outros

SPORTING_GOODS

-

Equipamento de Esporte

TOYS_AND_GAMES

-

Brinquedos e Jogos

VEHICLES_AND_PARTS

-

Veículos e Peças

BOOKS

-

Livros

DVDS_AND_VIDEOS

-

DVDs e Vídeos

MAGAZINES_AND_NEWSPAPERS

-

Revistas e Jornais

MUSIC

-

Música

MUSIC

CDS_AND_LPS

CDs e Vinil

MUSIC

MUSICAL_INSTRUMENTS

Instrumentos Musicais

MUSIC

DIGITAL_MUSIC

Música Digital

MUSIC

OTHER_MUSIC_ITEMS

Outros

OTHER_CATEGORIES

OTHER_CATEGORIES

Outras categorias não especificadas

IMPORTANTE

(!) Todos os valores da coluna Subcategoria podem ser declarados no parâmetro category de Pedidos.

 
Suggest Edits

Criar Pedido

Por meio desta API é possível criar um Pedido no Moip, nele estará os dados da venda dos produto ou serviços que você oferece. Preencha todos os campos obrigatórios para que a transação seja elegível ao Venda Protegida.

 
posthttps://sandbox.moip.com.br/v2/orders

Body Params

ownId
string
required

Id próprio do pedido, referência externa. Limite de caracteres: 45.

amount
object
amount.currency
string
required

Moeda utilizada no pedido. Valores possíveis: BRL. Limite de caracteres: 3.

amount.subtotals
object
amount.subtotals.shipping
int32

Valor de frete do item, será somado ao valor dos itens. Em centavos. Ex: R$10,32 deve ser informado 1032. Limite de caracteres: 9.

amount.subtotals.addition
int32

Valor adicional ao item, será somado ao valor dos itens. Em centavos Ex: R$10,32 deve ser informado 1032. Limite de caracteres: 9.

amount.subtotals.discount
int32

Valor de desconto do item, será subtraído do valor total dos itens. Em centavos Ex: R$ 1,99 deve ser informado 199. Limite de caracteres: 9.

items
object
items.product
string
required

Nome do produto. Limite de caracteres: 250.

items.category
string

Categoria do produto. Para mais informações ver a seção Categorias de Produtos. String(256).

items.quantity
int32
required

Quantidade de produtos. Limite de caracteres: 5.

items.detail
string

Descrição adicional do produto. Limite de caracteres: 250.

items.price
int32
required

Valor inicial do item. (O valor será multiplicado de acordo com a quantidade de produtos.) Em centavos. Ex: R$10,32 deve ser informado 1032. Limite de caracteres: 8.

checkoutPreferences
object
checkoutPreferences.redirectUrls
object
checkoutPreferences.redirectUrls.urlSuccess
string

URL para redirecionamento em casos de sucesso.

checkoutPreferences.redirectUrls.urlFailure
string

URL para redirecionamento em casos de falha.

checkoutPreferences.installments
object
checkoutPreferences.installments.quantity
array of integers

Limitadores do plano de parcelas, o primeiro item do array é a quantidade mínima de parcelas e o segundo item é a quantidade máxima. Exemplo: [1, 3] permite que o usuário parcele em 1, 2 ou 3 vezes.

receivers
object
receivers.type
string

Define qual o tipo de recebedor do pagamento, valores possíveis: PRIMARY, SECONDARY. Veja as diferenças entre recebedores do tipo PRIMARY e SECONDARY na tabela abaixo.

receivers.feePayor
string

Flag para definir se o recebedor é o pagador da taxa Moip, valores possíveis: true, false. Se o feePayor não for informado, o recebedor type PRIMARY será o pagador da taxa Moip. Se houver mais de um recebedor tipo SECONDARY, somente um poderá ser o pagador da taxa.

receivers.moipAccount
string

Conta Moip que irá receber o pagamento. Limite de caracteres: 16.

receivers.amount
object
receivers.amount.fixed
string

Valor fixo a ser recebido. Em centavos Ex: R$10,32 deve ser informado 1032. Importante: use fixed ou percentual, não use os dois simultaneamente. Limite de caracteres: 9.

receivers.amount.percentual
string

Valor percentual a ser recebido. Em percentual de 0 há 100. Importante: use fixed ou percentual, não use os dois simultaneamente. Exemplo valores quebrado, '95.5'

customer
object
required

Cliente do pedido. Pode ser informado o id de um cliente já existente ou a coleção de dados para a criação de um novo cliente. Cliente

customer.id
string

Caso utilize um cliente já existente, passe o ID moip do cliente aqui. Para criar um novo cliente, veja o formato do objeto em Cliente

customer.ownId
string
required

Id próprio do cliente. Referência externa. Limite de caracteres: (65).

customer.fullname
string
required

Nome completo do cliente. Limite de caracteres: (90).

customer.email
string
required

E-mail do cliente. Limite de caracteres: (45).

customer.birthDate
string
required

Data de nascimento do cliente. date(AAAA-MM-DD).

customer.taxDocument
object
required

Documento do cliente.

customer.taxDocument.type
string
required

Tipo do documento. Valores possíveis: CPF e CNPJ. Limite de caracteres: 4.

customer.taxDocument.number
string
required

Número do documento. Limite de caracteres: (11).

customer.phone
object
required

Telefone de contato.

customer.phone.countyCode
integer
required

DDI (código internacional) do telefone. Valores possíveis: 55. Limite de caracteres: 2

customer.phone.areaCode
integer
required

Código de área do cliente. Limite de caracteres: (2).

customer.phone.number
integer
required

Número de telefone do cliente. Limite de caracteres: 9

customer.shippingAddress
object
required

Endereço do cliente. Os atributos desse objeto são: street, streetNumber, complement, district, city, state, country e zipCode.

Headers

Authorization
string
required

Basic [gerar hash base64 do token:chave]

Content-Type
string
required

application/json

 
{  
   "ownId":"meu_id_order",
   "amount":{  
      "currency":"BRL",
      "subtotals":{  
         "shipping":1500
      }
   },
   "items":[  
      {  
         "product":"Descrição do pedido",
         "category":"CLOTHING",
         "quantity":1,
         "detail":"Camiseta estampada branca",
         "price":9500
      }
   ],
   "customer":{  
      "id":"CUS-87HFA3QCEKO7"
   }
}
#
# Este exemplo usa a SDK do Moip de Ruby, disponível
# em: https://github.com/moip/moip-sdk-ruby
#

order = api.order.create({  
   own_id: 'meu_id_order', 
   amount: {  
      currency: 'BRL', 
      subtotals: {  
         shipping: 1500
      }
   },
   items: [  
      {  
         product: 'Descrição do pedido', 
         category: 'CLOTHING', 
         quantity: 1,
         detail: 'Camiseta estampada branca', 
         price: 9500
      }
   ],
   customer: {  
      id: 'CUS-87HFA3QCEKO7'
   }
 })
/**
* Este exemplo usa a SDK do Moip de Java, disponível 
* em: https://github.com/moip/moip-sdk-java
*/

Map<String, Object> subtotals = payloadFactory(
    value("shipping", 15000)
);

Map<String, Object> amount = payloadFactory(
    value("currency", "BRL"),
    value("subtotals", subtotals)
);

Map<String, Object> product1 = payloadFactory(
    value("product", "Product 1 Description"),
    value("category", "TOYS_AND_GAMES"),
    value("quantity", 2),
    value("detail", "Anakin's Light Saber"),
    value("price", 100000000)
);

Map<String, Object> product2 = payloadFactory(
    value("product", "Product 2 Description"),
    value("category", "SCIENCE_AND_LABORATORY"),
    value("quantity", 5),
    value("detail", "Pym particles"),
    value("price", 2450000000)
);

List items = new ArrayList();
items.add(product1);
items.add(product2);

Map<String, Object> customer = payloadFactory(
    value("id", "CUS-XXOBPZ80QLYP")
);

Map<String, Object> order = payloadFactory(
    value("ownId", "order_own_id"),
    value("amount", amount),
    value("items", items),
    value("customer", customer)
);

Map<String, Object> responseCreation = Moip.API.orders().create(order, setup);
<?php

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

$order = $moip->orders()->setOwnId("meu_id_order")
        ->addItem("Descrição do pedido",1, "Camiseta estampada branca", 9500)
        ->setShippingAmount(1500)->setAddition(0)->setDiscount(0)
        ->setCustomerId("CUS-87HFA3QCEKO7")
        ->create();

print_r($order);
/**
* 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.order.create({
    own_id: 'meu_id_order',
    amount: {
        currency: 'BRL',
        subtotals: {
            shipping: 1000
        }
    },
    items: [{
        product: 'Descrição do pedido',
        quantity: 1,
        detail: 'Mais info...',
        price: 1000
    }],
    customer: {
        id: 'CUS-87HFA3QCEKO7'
    }
}).then((response) => {
    console.log(response.body)
}).catch((err) => {
    console.log(err)
})
A binary file was returned

You couldn't be authenticated

{
    "id": "ORD-O5DLMAJZPTHV",
    "ownId": "meu_id_order",
    "status": "CREATED",
    "platform": "V2",
    "createdAt": "2017-10-16T09:41:31.907-02",
    "updatedAt": "2017-10-16T09:41:31.907-02",
    "amount": {
        "paid": 0,
        "total": 11000,
        "fees": 0,
        "refunds": 0,
        "liquid": 0,
        "otherReceivers": 0,
        "currency": "BRL",
        "subtotals": {
            "shipping": 1500,
            "addition": 0,
            "discount": 0,
            "items": 9500
        }
    },
    "items": [
        {
            "product": "Descrição do pedido",
            "price": 9500,
            "detail": "Camiseta estampada branca",
            "quantity": 1,
            "category": "CLOTHING"
        }
    ],
    "addresses": [
        {
            "streetNumber": "500",
            "street": "Avenida Faria Lima",
            "city": "São Paulo",
            "complement": "10",
            "district": "Itaim Bibi",
            "zipCode": "01234000",
            "state": "SP",
            "type": "SHIPPING",
            "country": "BRA"
        }
    ],
    "customer": {
        "id": "CUS-87HFA3QCEKO7",
        "ownId": "meu_id_customer",
        "fullname": "João Paulo Silva",
        "createdAt": "2017-10-10T16:05:38.000-03",
        "birthDate": "1990-10-22",
        "email": "joao0@email.com",
        "phone": {
            "countryCode": "55",
            "areaCode": "11",
            "number": "55552266"
        },
        "taxDocument": {
            "type": "CPF",
            "number": "22288866644"
        },
        "addresses": [
            {
                "streetNumber": "500",
                "street": "Avenida Faria Lima",
                "city": "São Paulo",
                "complement": "10",
                "district": "Itaim Bibi",
                "zipCode": "01234000",
                "state": "SP",
                "type": "SHIPPING",
                "country": "BRA"
            }
        ],
        "shippingAddress": {
            "zipCode": "01234000",
            "street": "Avenida Faria Lima",
            "streetNumber": "500",
            "complement": "10",
            "city": "São Paulo",
            "district": "Itaim Bibi",
            "state": "SP",
            "country": "BRA"
        },
        "_links": {
            "self": {
                "href": "https://sandbox.moip.com.br/v2/customers/CUS-87HFA3QCEKO7"
            },
            "hostedAccount": {
                "redirectHref": "https://hostedaccount-sandbox.moip.com.br?token=8899eae3-e4e8-4828-a93e-698a1c557107&id=CUS-87HFA3QCEKO7&mpa=MPA-B4DEE9F7589B"
            }
        }
    },
    "payments": [],
    "escrows": [],
    "refunds": [],
    "entries": [],
    "events": [
        {
            "type": "ORDER.CREATED",
            "createdAt": "2017-10-16T09:41:31.907-02",
            "description": ""
        }
    ],
    "receivers": [
        {
            "moipAccount": {
                "id": "MPA-B4DEE9F7589B",
                "login": "iandrobr@gmail.com",
                "fullname": "Iandro Simões da Silva"
            },
            "type": "PRIMARY",
            "amount": {
                "total": 11000,
                "fees": 0,
                "refunds": 0
            },
            "feePayor": true
        }
    ],
    "_links": {
        "self": {
            "href": "https://sandbox.moip.com.br/v2/orders/ORD-O5DLMAJZPTHV"
        },
        "checkout": {
            "payCheckout": {
                "redirectHref": "https://checkout-new-sandbox.moip.com.br?token=39a73cb2-8226-4b00-a727-198d0adbd340&id=ORD-O5DLMAJZPTHV"
            },
            "payCreditCard": {
                "redirectHref": "https://checkout-new-sandbox.moip.com.br?token=39a73cb2-8226-4b00-a727-198d0adbd340&id=ORD-O5DLMAJZPTHV&payment-method=credit-card"
            },
            "payBoleto": {
                "redirectHref": "https://checkout-new-sandbox.moip.com.br?token=39a73cb2-8226-4b00-a727-198d0adbd340&id=ORD-O5DLMAJZPTHV&payment-method=boleto"
            },
            "payOnlineBankDebitItau": {
                "redirectHref": "https://checkout-sandbox.moip.com.br/debit/itau/ORD-O5DLMAJZPTHV"
            }
        }
    }
}
 
Suggest Edits

Consultar Pedido

Por meio desta API é possível consultar as informações e detalhes de um pedido.

 
gethttps://sandbox.moip.com.br/v2/orders/order_id

Path Params

order_id
string
required

Código identificador do pedido. Exemplo: ORD-9BAYAVM87YHE

Headers

Authorization
string
required

Basic [gerar hash base64 do token:chave]

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

Map<String, Object> responseGet = Moip.API.orders().get("order_id", setup);
<?php

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

try {
  $order_id = 'ORD-9BAYAVM87YHE';
  $order = $moip->orders()->get($order_id);
  print_r($order);
} catch (Exception $e) {
  printf($e->__toString());
}
#
# Este exemplo usa a SDK do Moip de Ruby, disponível
# em: https://github.com/moip/moip-sdk-ruby
#

order = api.order.show("ORD-9BAYAVM87YHE")
/**
* Este exemplo usa a SDK do Moip de .NET, disponível 
* em: https://github.com/moip/moip-sdk-dotnet
*/

string orderId = "ORD-9BAYAVM87YHE";
Order order = client.Orders.GetOrder(orderId);
/**
* 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.order.getOne('ORD-SFGB23X8WAVQ')
    .then((response) => {
        console.log(response.body)
    }).catch((err) => {
        console.log(err)
    })
A binary file was returned

You couldn't be authenticated

{
    "id": "ORD-9BAYAVM87YHE",
    "ownId": "meu_id_order",
    "status": "CREATED",
    "platform": "V2",
    "createdAt": "2017-10-17T11:15:49.000-02",
    "updatedAt": "2017-10-17T11:15:49.000-02",
    "amount": {
        "paid": 0,
        "total": 11000,
        "fees": 0,
        "refunds": 0,
        "liquid": 0,
        "otherReceivers": 0,
        "currency": "BRL",
        "subtotals": {
            "shipping": 1500,
            "addition": 0,
            "discount": 0,
            "items": 9500
        }
    },
    "items": [
        {
            "product": "Nome do produto",
            "price": 9500,
            "detail": "Camiseta estampada branca",
            "quantity": 1,
            "category": "APPAREL_AND_ACCESSORIES"
        }
    ],
    "addresses": [
        {
            "streetNumber": "500",
            "street": "Avenida Faria Lima",
            "city": "São Paulo",
            "complement": "10",
            "district": "Itaim Bibi",
            "zipCode": "01234000",
            "state": "SP",
            "type": "SHIPPING",
            "country": "BRA"
        }
    ],
    "customer": {
        "id": "CUS-87HFA3QCEKO7",
        "ownId": "meu_id_customer",
        "fullname": "João Paulo Silva",
        "createdAt": "2017-10-10T16:05:38.000-03",
        "birthDate": "1990-10-22",
        "email": "joao0@email.com",
        "phone": {
            "countryCode": "55",
            "areaCode": "11",
            "number": "55552266"
        },
        "taxDocument": {
            "type": "CPF",
            "number": "22288866644"
        },
        "addresses": [
            {
                "streetNumber": "500",
                "street": "Avenida Faria Lima",
                "city": "São Paulo",
                "complement": "10",
                "district": "Itaim Bibi",
                "zipCode": "01234000",
                "state": "SP",
                "type": "SHIPPING",
                "country": "BRA"
            }
        ],
        "shippingAddress": {
            "zipCode": "01234000",
            "street": "Avenida Faria Lima",
            "streetNumber": "500",
            "complement": "10",
            "city": "São Paulo",
            "district": "Itaim Bibi",
            "state": "SP",
            "country": "BRA"
        },
        "_links": {
            "self": {
                "href": "https://sandbox.moip.com.br/v2/customers/CUS-87HFA3QCEKO7"
            },
            "hostedAccount": {
                "redirectHref": "https://hostedaccount-sandbox.moip.com.br?token=8899eae3-e4e8-4828-a93e-698a1c557107&id=CUS-87HFA3QCEKO7&mpa=MPA-B4DEE9F7589B"
            }
        }
    },
    "payments": [],
    "escrows": [],
    "refunds": [],
    "entries": [],
    "events": [
        {
            "type": "ORDER.CREATED",
            "createdAt": "2017-10-17T11:15:49.000-02",
            "description": ""
        }
    ],
    "receivers": [
        {
            "moipAccount": {
                "id": "MPA-B4DEE9F7589B",
                "login": "iandrobr@gmail.com",
                "fullname": "Iandro Simões da Silva"
            },
            "type": "PRIMARY",
            "amount": {
                "total": 11000,
                "fees": 0,
                "refunds": 0
            },
            "feePayor": true
        }
    ],
    "checkoutPreferences": {
        "installments": [
            {
                "addition": 1000,
                "quantity": [
                    2,
                    2
                ]
            }
        ],
        "redirectUrls": {
            "urlFailure": "http://www.lojaexemplo.com.br/error",
            "urlSuccess": "http://www.lojaexemplo.com.br/compraFeita"
        }
    },
    "_links": {
        "self": {
            "href": "https://sandbox.moip.com.br/v2/orders/ORD-9BAYAVM87YHE"
        },
        "checkout": {
            "payCheckout": {
                "redirectHref": "https://checkout-new-sandbox.moip.com.br?token=60c57997-c5e1-4f19-a03d-9a7d0bc7f76d&id=ORD-9BAYAVM87YHE"
            },
            "payCreditCard": {
                "redirectHref": "https://checkout-new-sandbox.moip.com.br?token=60c57997-c5e1-4f19-a03d-9a7d0bc7f76d&id=ORD-9BAYAVM87YHE&payment-method=credit-card"
            },
            "payBoleto": {
                "redirectHref": "https://checkout-new-sandbox.moip.com.br?token=60c57997-c5e1-4f19-a03d-9a7d0bc7f76d&id=ORD-9BAYAVM87YHE&payment-method=boleto"
            },
            "payOnlineBankDebitItau": {
                "redirectHref": "https://checkout-sandbox.moip.com.br/debit/itau/ORD-9BAYAVM87YHE"
            }
        }
    }
}
 
Suggest Edits

Listar Todos os Pedidos

Liste todos pedidos criados anteriormente. Os pedidos são ordenados pela data de criação, dos mais recentes para os mais antigos. Nesta versão da API são retornados apenas pedidos que contenham ao menos um pagamento.

 
gethttps://sandbox.moip.com.br/v2/orders

Path Params

createdAt
date
required

Data de criação do recurso. Permite o uso de todos os delimitadores.

paymentMethod
string
required

Forma de pagamento associado ao pedido ou do último pagamento atualizado. Valores possíveis: DEBIT_CARD, BOLETO, ONLINE_BANK_FINANCING, ONLINE_BANK_DEBIT,WALLET. Use o delimitador in.

value
int32
required

Valor do pedido. Permite o uso de todos os delimitadores.

status
string
required

Status do pedido, Valores possíveis: WAITING, NOT_PAID, PAID, REVERTED. Use o delimitador in.

limit
int32
required

Quantidade de registros por busca (página). Valor default é 100.

offset
int32
required

Registro a partir do qual a busca vai retornar. Valor default é 0.

Headers

Authorization
string
required

Basic [gerar hash base64 do token:chave]

DICA

Você pode fazer buscas por valores específicos, como:

  • Nome do cliente/comprador (customer);
  • Status do pedido (WAITING,PAID,NOT_PAID,REVERTED);
  • Forma de pagamento (CREDIT_CARD,BOLETO);
  • Valor do pedido.

EXEMPLO

GET https: //sandbox.moip.com.br/v2/orders?q=josesilva
&filters=status::in(PAID,WAITING)|paymentMethod::in(CREDIT_CARD,BOLETO)
|value::bt(5000,10000)&limit=3&offset=0

Para saber mais como refinar suas buscas, visite a seção Filtros de busca.

curl --request GET \
  --url https://sandbox.moip.com.br/v2/orders \
  --header 'authorization: Authorization'
#
# Este exemplo usa a SDK do Moip de Ruby, disponível
# em: https://github.com/moip/moip-sdk-ruby
#

orders = api.order.find_all()

#
# Leia mais sobre como aplicar filtros ao listar pedidos: 
# https://github.com/moip/moip-sdk-ruby#com-filtros
#
/**
* Este exemplo usa a SDK do Moip de Java, disponível 
* em: https://github.com/moip/moip-sdk-java
*/

Map<String, Object> responseList = Moip.API.orders().list(setup);
<?php

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

// Without filters
$orders = $this->moip->orders()->getList();

// With filters
$filters = new Filters();
$filters->greaterThanOrEqual(OrdersList::CREATED_AT, "2017-08-17");
$filters->in(OrdersList::PAYMENT_METHOD, ["BOLETO", "DEBIT_CARD"]);
$filters->lessThan(OrdersList::VALUE, 100000);

$orders = $this->moip->orders()->getList(null, $filters);

// With pagination
$orders = $this->moip->orders()->getList(new Pagination(10,0));

// With specific value
$orders = $this->moip->orders()->getList(null, null, "josé silva");
/**
* Este exemplo usa a SDK do Moip de .NET, disponível 
* em: https://github.com/moip/moip-sdk-dotnet
*/

OrderListResponse orderResponseList = client.Orders.ListOrders();
List<OrderResponse> orderList = orderResponseList.Orders;
/**
* 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.order.getAll()
    .then((response) => {
        console.log(response)
    }).then((err) => {
        console.log(err)
    })
A binary file was returned

You couldn't be authenticated

{  
   "_links":{  
      "next":{  
         "href":"https://test.moip.com.br/v2/orders?filters=&limit=0&offset=0"
      },
      "previous":{  
         "href":"https://test.moip.com.br/v2/orders?filters=&limit=0&offset=0"
      }
   },
   "summary":{  
      "count":52,
      "amount":1113856575
   },
   "orders":[  
      {  
         "id":"ORD-FG3KSL7WIY3T",
         "ownId":"1508952182",
         "status":"PAID",
         "blocked":false,
         "amount":{  
            "total":30501250,
            "addition":0,
            "fees":0,
            "deduction":0,
            "otherReceivers":0,
            "currency":"BRL"
         },
         "receivers":[  
            {  
               "type":"PRIMARY",
               "moipAccount":{  
                  "id":"MPA-B4DEE9F7589B"
               }
            }
         ],
         "customer":{  
            "fullname":"authorize",
            "email":"nome1508952182@email.com"
         },
         "items":[  
            {  
               "product":null
            }
         ],
         "payments":[  
            {  
               "id":"PAY-G0FQUN2CBDNY",
               "installmentCount":1,
               "fundingInstrument":{  
                  "method":"CREDIT_CARD",
                  "brand":"MASTERCARD"
               }
            }
         ],
         "events":[  
            {  
               "type":"PAYMENT.AUTHORIZED",
               "createdAt":"2017-10-25T15:24:00Z"
            }
         ],
         "_links":{  
            "self":{  
               "href":"https://test.moip.com.br/v2/orders/ORD-FG3KSL7WIY3T"
            }
         },
         "createdAt":"2017-10-25T15:23:02-0300",
         "updatedAt":"2017-10-25T15:25:49-0300"
      },
      {  
         "id":"ORD-CJAHRCVUYTHH",
         "ownId":"1508951687",
         "status":"PAID",
         "blocked":false,
         "amount":{  
            "total":30501250,
            "addition":0,
            "fees":0,
            "deduction":0,
            "otherReceivers":0,
            "currency":"BRL"
         },
         "receivers":[  
            {  
               "type":"PRIMARY",
               "moipAccount":{  
                  "id":"MPA-B4DEE9F7589B"
               }
            }
         ],
         "customer":{  
            "fullname":"authorize",
            "email":"nome1508951687@email.com"
         },
         "items":[  
            {  
               "product":null
            }
         ],
         "payments":[  
            {  
               "id":"PAY-GRKWEOIR75MB",
               "installmentCount":1,
               "fundingInstrument":{  
                  "method":"CREDIT_CARD",
                  "brand":"MASTERCARD"
               }
            }
         ],
         "events":[  
            {  
               "type":"PAYMENT.AUTHORIZED",
               "createdAt":"2017-10-25T15:15:45Z"
            }
         ],
         "_links":{  
            "self":{  
               "href":"https://test.moip.com.br/v2/orders/ORD-CJAHRCVUYTHH"
            }
         },
         "createdAt":"2017-10-25T15:14:46-0300",
         "updatedAt":"2017-10-25T15:15:45-0300"
      },
      {  
         "id":"ORD-4UD06KERSPTF",
         "ownId":"1508951570",
         "status":"PAID",
         "blocked":false,
         "amount":{  
            "total":30501250,
            "addition":0,
            "fees":0,
            "deduction":0,
            "otherReceivers":0,
            "currency":"BRL"
         },
         "receivers":[  
            {  
               "type":"PRIMARY",
               "moipAccount":{  
                  "id":"MPA-B4DEE9F7589B"
               }
            }
         ],
         "customer":{  
            "fullname":"authorize",
            "email":"nome1508951570@email.com"
         },
         "items":[  
            {  
               "product":null
            }
         ],
         "payments":[  
            {  
               "id":"PAY-GXSDKZ83DF3N",
               "installmentCount":1,
               "fundingInstrument":{  
                  "method":"CREDIT_CARD",
                  "brand":"MASTERCARD"
               }
            }
         ],
         "events":[  
            {  
               "type":"PAYMENT.AUTHORIZED",
               "createdAt":"2017-10-25T15:13:53Z"
            }
         ],
         "_links":{  
            "self":{  
               "href":"https://test.moip.com.br/v2/orders/ORD-4UD06KERSPTF"
            }
         },
         "createdAt":"2017-10-25T15:12:50-0300",
         "updatedAt":"2017-10-25T15:13:53-0300"
      },
      {  
         "id":"ORD-D7OWF7PYGDQN",
         "ownId":"1508951546",
         "status":"PAID",
         "blocked":false,
         "amount":{  
            "total":30501250,
            "addition":0,
            "fees":0,
            "deduction":0,
            "otherReceivers":0,
            "currency":"BRL"
         },
         "receivers":[  
            {  
               "type":"PRIMARY",
               "moipAccount":{  
                  "id":"MPA-B4DEE9F7589B"
               }
            }
         ],
         "customer":{  
            "fullname":"authorize",
            "email":"nome1508951546@email.com"
         },
         "items":[  
            {  
               "product":null
            }
         ],
         "payments":[  
            {  
               "id":"PAY-I523GB424MRL",
               "installmentCount":1,
               "fundingInstrument":{  
                  "method":"CREDIT_CARD",
                  "brand":"MASTERCARD"
               }
            }
         ],
         "events":[  
            {  
               "type":"PAYMENT.AUTHORIZED",
               "createdAt":"2017-10-25T15:13:17Z"
            }
         ],
         "_links":{  
            "self":{  
               "href":"https://test.moip.com.br/v2/orders/ORD-D7OWF7PYGDQN"
            }
         },
         "createdAt":"2017-10-25T15:12:26-0300",
         "updatedAt":"2017-10-25T15:13:17-0300"
      }
   ]
}
 
Suggest Edits

Exemplos

Veja alguns exemplos de requisições

 

Pedido com Checkout Moip

Se você quiser usar o nosso checkout você conseguirá fazer isso através desta requisição:

{  
   "ownId":"meu_id_order",
   "amount":{  
      "currency":"BRL",
      "subtotals":{  
         "shipping":1500
      }
   },
   "items":[  
      {  
         "product":"Nome do produto",
         "category":"APPAREL_AND_ACCESSORIES",
         "subcategory":"CLOTHING",
         "quantity":1,
         "detail":"Camiseta estampada branca",
         "price":9500
      }
   ],
   "customer":{  
      "id":"CUS-87HFA3QCEKO7"
   },
   "checkoutPreferences":{  
      "redirectUrls":{  
         "urlSuccess": "http://www.lojaexemplo.com.br/compraFeita",
         "urlFailure": "http://www.lojaexemplo.com.br/error"
      },
      "installments":[  
         {  
            "quantity":[2,2],
            "addition":1000
         }
      ]
   }
}
#
# Este exemplo usa a SDK do Moip de Ruby, disponível
# em: https://github.com/moip/moip-sdk-ruby
#

order = api.order.create({  
   ownId: 'meu_id_order', 
   amount: {  
      currency: 'BRL', 
      subtotals: {  
         shipping: 1500
      }
   },
   items: [  
      {  
         product: 'Nome do produto', 
         category: 'APPAREL_AND_ACCESSORIES', 
         subcategory: 'CLOTHING', 
         quantity: 1,
         detail: 'Camiseta estampada branca', 
         price: 9500
      }
   ],
   customer: {  
      id: 'CUS-87HFA3QCEKO7'
   },
   checkoutPreferences: {  
      redirectUrls: {  
         urlSuccess: 'http://www.lojaexemplo.com.br/compraFeita', 
         urlFailure: 'http://www.lojaexemplo.com.br/error'
      },
      installments: [  
         {  
            quantity: [2,2],
            addition: 1000
         }
      ]
   }
 })
/**
 * Este exemplo usa a SDK do Moip de Java, disponível 
 * em: https://github.com/moip/moip-sdk-java
 */

Map<String, Object> subtotals = payloadFactory(
    value("shipping", 15000)
);

Map<String, Object> amount = payloadFactory(
    value("currency", "BRL"),
    value("subtotals", subtotals)
);

Map<String, Object> product = payloadFactory(
    value("product", "Product 1 Description"),
    value("category", "TOYS_AND_GAMES"),
    value("quantity", 2),
    value("detail", "Anakin's Light Saber"),
    value("price", 100000000)
);

List items = new ArrayList();
items.add(product);

Map<String, Object> redirectUrls = payloadFactory(
    value("urlSuccess", "https://urlSuccess.com"),
    value("urlFailure", "https://urlFailure.com")
);

List installments = new ArrayList();
installments.add(1); // min allowed installment
installments.add(5); // max allowed installment

Map<String, Object> installments = payloadFactory(
    value("quantity", installments)
);

Map<String, Object> checkoutPreferences = payloadFactory(
    value("redirectUrls", redirectUrls),
    value("installments", installments)
);
  
Map<String, Object> customer = payloadFactory(
    value("id", "CUS-XXOBPZ80QLYP")
);

Map<String, Object> order = payloadFactory(
    value("ownId", "order_own_id"),
    value("amount", amount),
    value("items", items),
    value("checkoutPreferences", checkoutPreferences),
    value("customer", customer)
);

Map<String, Object> responseCreation = Moip.API.orders().create(order, setup);
<?php

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

$order = $moip->orders()->setOwnId("meu_id_order")
    ->addItem("Nome do produto",1, "Camiseta estampada branca", 9500)
    ->setShippingAmount(1500)->setAddition(0)->setDiscount(0)
    ->addInstallmentCheckoutPreferences([2, 2], 0, 1000)
    ->setUrlSuccess("http://www.lojaexemplo.com.br/compraFeita")
    ->setUrlFailure("http://www.lojaexemplo.com.br/error")
    ->setCustomerId("CUS-87HFA3QCEKO7")
    ->create();

print_r($order);
/**
* 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.order.create({
    ownId: 'identificador_pedido',
    amount: {
        currency: 'BRL',
        subtotals: {
            shipping: 1000
        }
    },
    items: [{
        product: 'Descrição do pedido',
        quantity: 1,
        detail: 'Mais info...',
        price: 1000
    }],
    customer:{  
    		id: 'CUS-87HFA3QCEKO7'
    },
    checkoutPreferences: { 
       	redirectUrls: {  
         		urlSuccess: 'http://www.lojaexemplo.com.br/compraFeita',
         		urlFailure: 'http://www.lojaexemplo.com.br/error'
	      },
      	installments: [  
         		{  
            		quantity: [2,2],
            		addition: 1000
         		}
      	]
   	}
}).then((response) => {
    console.log(response.body)
}).catch((err) => {
    console.log(err)
})

Pedido com um novo cliente

Criando um pedido e cadastrando um novo cliente na mesma requisição:

{
  "ownId": "identificador_pedido",
  "amount": {
    "currency": "BRL",
    "subtotals": {
      "shipping": 1500
    }
  },
  "items": [
    {
      "product": "Câmera fotográfica",
      "category": "CAMERAS",
      "quantity": 1,
      "detail": "Câmera fotográfica, modelo CM54296, cor preta",
      "price": 100000
    }
  ],
  "customer": {
    "ownId": "identificador_cliente",
    "fullname": "Rafael Pereira",
    "email": "rafael@email.com",
    "birthDate": "1980-05-15",
    "taxDocument": {
      "type": "CPF",
      "number": "57390209674"
    },
    "phone": {
      "countryCode": "55",
      "areaCode": "11",
      "number": "88763546"
    },
    "shippingAddress": {
      "street": "Avenida 23 de Maio",
      "streetNumber": 654,
      "complement": 12,
      "district": "Centro",
      "city": "Sao Paulo",
      "state": "SP",
      "country": "BRA",
      "zipCode": "01244500"
    }
  }
}
#
# Este exemplo usa a SDK do Moip de Ruby, disponível
# em: https://github.com/moip/moip-sdk-ruby
#

order = api.order.create({ 
  ownId: 'identificador_pedido', 
  amount: {
    currency: 'BRL', 
    subtotals: {
      shipping: 1500
    }
  },
  items: [
    {
      product: 'Câmera fotográfica', 
      category: 'CAMERAS', 
      quantity: 1,
      detail: 'Câmera fotográfica, modelo CM54296, cor preta', 
      price: 100000
    }
  ],
  customer: {
    ownId: 'identificador_cliente', 
    fullname: 'Rafael Pereira', 
    email: 'rafael@email.com', 
    birthDate: '1980-05-15', 
    taxDocument: {
      type: 'CPF', 
      number: '57390209674'
    },
    phone: {
      countryCode: '55', 
      areaCode: '11', 
      number: '88763546'
    },
    shippingAddress: {
      street: 'Avenida 23 de Maio', 
      streetNumber: 654,
      complement: 12,
      district: 'Centro', 
      city: 'Sao Paulo', 
      state: 'SP', 
      country: 'BRA', 
      zipCode: '01244500'
    }
  }
 })
/**
 * Este exemplo usa a SDK do Moip de Java, disponível 
 * em: https://github.com/moip/moip-sdk-java
 */

Map<String, Object> subtotals = payloadFactory(
    value("shipping", 15000)
);

Map<String, Object> amount = payloadFactory(
    value("currency", "BRL"),
    value("subtotals", subtotals)
);

Map<String, Object> product1 = payloadFactory(
    value("product", "Product 1 Description"),
    value("category", "TOYS_AND_GAMES"),
    value("quantity", 2),
    value("detail", "Anakin's Light Saber"),
    value("price", 100000000)
);

Map<String, Object> product2 = payloadFactory(
    value("product", "Product 2 Description"),
    value("category", "SCIENCE_AND_LABORATORY"),
    value("quantity", 5),
    value("detail", "Pym particles"),
    value("price", 2450000000)
);

List items = new ArrayList();
items.add(product1);
items.add(product2);

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

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

Map<String, Object> shippingAddress = payloadFactory(
    value("city", "Sao Paulo"),
    value("district", "Itaim BiBi"),
    value("street", "Av. Brigadeiro Faria Lima"),
    value("streetNumber", "3064"),
    value("state", "SP"),
    value("country", "BRA"),
    value("zipCode", "01451001")
);

Map<String, Object> customer = payloadFactory(
    value("ownId", "customer_own_id"),
    value("fullname", "Customer Full Name"),
    value("email", "customer@mail.com"),
    value("birthDate", "1980-5-10"),
    value("taxDocument", taxDocument),
    value("phone", phone),
    value("shippingAddress", shippingAddress)
);

Map<String, Object> order = payloadFactory(
    value("ownId", "order_own_id"),
    value("amount", amount),
    value("items", items),
    value("customer", customer)
);

Map<String, Object> responseCreation = Moip.API.orders().create(order, setup);
<?php

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

$order = $moip->orders()->setOwnId("identificador_pedido")
    ->addItem("Câmera fotográfica",1, "Câmera fotográfica, modelo CM54296, cor preta", 100000)
    ->setShippingAmount(1500)->setAddition(0)->setDiscount(0)
    ->setCustomer($moip->customers()->setOwnId("identificador_cliente")
        ->setFullname("Rafael Pereira")
        ->setEmail("rafael@email.com")
        ->setBirthDate("1980-05-15")
        ->setTaxDocument("57390209674")
        ->setPhone(11, 88763546)
        ->addAddress("SHIPPING",
            "Avenida 23 de Maio", 654,
            "Centro", "Sao Paulo", "SP",
            "01244500", 12))
    ->create();

print_r($order);
/**
* 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.order.create({
    ownId: 'identificador_pedido',
    amount: {
        currency: 'BRL',
        subtotals: {
            shipping: 1000
        }
    },
    items: [{
        product: 'Descrição do pedido',
        quantity: 1,
        detail: 'Mais info...',
        price: 1000
    }],
    customer: {
	      ownId: '1521656726',
        fullname: 'Jose Silva',
        email: 'jose_silva0@email.com',
        birthDate: '1988-12-30',
        taxDocument: {
            type: 'CPF',
            number: '22222222222'
        },
        phone: {
            countryCode: '55',
            areaCode: '11',
            number: '66778899'
        },
        shippingAddress: {
            street: 'Avenida Faria Lima',
            streetNumber: 2927,
            complement: 8,
            district: 'Itaim',
            city: 'Sao Paulo',
            state: 'SP',
            country: 'BRA',
            zipCode: '01234000'
        }
    }
}).then((response) => {
    console.log(response.body)
}).catch((err) => {
    console.log(err)
})
/**
* Este exemplo usa a SDK do Moip de .NET, disponível 
* em: https://github.com/moip/moip-sdk-dotnet
*/

TaxDocument taxDocument = new TaxDocument
{
    Type = "CPF",
    Number = "57390209674"
};

Phone phone = new Phone
{
    CountryCode = "55",
    AreaCode = "11",
    Number = "88763546"
};

ShippingAddress shippingAddress = new ShippingAddress
{
    Street = "Avenida 23 de Maio",
    StreetNumber = "654",
    Complement = "12",
    District = "Centro",
    City = "São Paulo",
    State = "SP",
    Country = "BRA",
    ZipCode = "01244500"
};

CustomerRequest customerRequest = new CustomerRequest
{
    Fullname = "Rafael Pereira",
    OwnId = "identificador_cliente",
    BirthDate = "980-05-15",
    Email = "rafael@email.com",
    Phone = phone,
    ShippingAddress = shippingAddress,
    TaxDocument = taxDocument
};

AmountOrderRequest amountRequest = new AmountOrderRequest
{
    Currency = "BRL"
};

Item itemsRequest = new Item
{
    Product = "Camiseta estampada branca",
    Quantity = 1,
    Detail = "Descrição do pedido",
    Price = 9500
};

List<Item> itemsRequestList = new List<Item>
{
    itemsRequest
};

OrderRequest orderRequest = new OrderRequest
{
    OwnId = "meu_id_order",
    Amount = amountRequest,
    Items = itemsRequestList,
    Customer = customerRequest,
};

OrderResponse createdOrder = client.Orders.CreateOrder(orderRequest);

Pedido com um cliente existente

Criando um pedido passando o ID de um cliente já existente

{
  "ownId": "identificador_pedido",
  "amount": {
    "currency": "BRL",
    "subtotals": {
      "shipping": 1500
    }
  },
  "items": [
    {
      "product": "Câmera fotográfica",
      "category": "CAMERAS",
      "quantity": 1,
      "detail": "Câmera fotográfica, modelo CM54296, cor preta",
      "price": 100000
    }
  ],
  "customer": {
    "id": "CUS-OQSQ7IWL229E"
  }
}
#
# Este exemplo usa a SDK do Moip de Ruby, disponível
# em: https://github.com/moip/moip-sdk-ruby
#

order = api.order.create({ 
  ownId: 'identificador_pedido', 
  amount: {
    currency: 'BRL', 
    subtotals: {
      shipping: 1500
    }
  },
  items: [
    {
      product: 'Câmera fotográfica', 
      category: 'CAMERAS', 
      quantity: 1,
      detail: 'Câmera fotográfica, modelo CM54296, cor preta', 
      price: 100000
    }
  ],
  customer: {
    id: 'CUS-OQSQ7IWL229E'
  }
 })
/**
 * Este exemplo usa a SDK do Moip de Java, disponível 
 * em: https://github.com/moip/moip-sdk-java
 */

Map<String, Object> subtotals = payloadFactory(
    value("shipping", 15000)
);

Map<String, Object> amount = payloadFactory(
    value("currency", "BRL"),
    value("subtotals", subtotals)
);

Map<String, Object> product1 = payloadFactory(
    value("product", "Product 1 Description"),
    value("category", "TOYS_AND_GAMES"),
    value("quantity", 2),
    value("detail", "Anakin's Light Saber"),
    value("price", 100000000)
);

Map<String, Object> product2 = payloadFactory(
    value("product", "Product 2 Description"),
    value("category", "SCIENCE_AND_LABORATORY"),
    value("quantity", 5),
    value("detail", "Pym particles"),
    value("price", 2450000000)
);

List items = new ArrayList();
items.add(product1);
items.add(product2);

Map<String, Object> customer = payloadFactory(
    value("id", "CUS-XXOBPZ80QLYP")
);

Map<String, Object> order = payloadFactory(
    value("ownId", "order_own_id"),
    value("amount", amount),
    value("items", items),
    value("customer", customer)
);

Map<String, Object> responseCreation = Moip.API.orders().create(order, setup);
<?php

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

$order = $moip->orders()->setOwnId("meu_id_order")
        ->addItem("Descrição do pedido",1, "Camiseta estampada branca", 9500)
        ->setShippingAmount(1500)->setAddition(0)->setDiscount(0)
        ->setCustomerId("CUS-87HFA3QCEKO7")
        ->create();

print_r($order);
/**
* 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.order.create({
    own_id: 'identificador_pedido',
    amount: {
        currency: 'BRL',
        subtotals: {
            shipping: 1000
        }
    },
    items: [{
        product: 'Descrição do pedido',
        quantity: 1,
        detail: 'Mais info...',
        price: 1000
    }],
    customer: {
        id: 'CUS-OQSQ7IWL229E'
    }
}).then((response) => {
    console.log(response.body)
}).catch((err) => {
    console.log(err)
})
 
Suggest Edits

3. Pagamentos

O Pagamento é a transação financeira que ocorre entre o Cliente e o Recebedor (você!), seja por meio de um cartão de crédito, de um boleto bancário, ou por outro meio de pagamento. Esta API permite a criação, consulta e listagem de pagamentos.

 
 
 
Suggest Edits

Status

Assim como para os pedidos, é importante que você entenda os diferentes status de um pagamento.

Você pode receber as notificações desses status configurando as Preferência de Notificação.

 
Evento
Status

CREATED

Primeiro evento de um pagamento, indica que o pagamento foi criado.

WAITING

Atualização de status para Aguardando, indica que o Moip está aguardando confirmação de pagamento.

IN_ANALYSIS

Status Em Análise, indica que o pagamento está passando por uma análise de risco dentro do Moip, podendo ser automática ou manual.

PRE_AUTHORIZED

Pré-autorizado: esse status indica a reserva do valor do pagamento no cartão do cliente. Após a pré-autorização é possível fazer a captura em até 5 dias. Passado esse período o Moip cancelará a transação automaticamente.

AUTHORIZED

Atualização de status para Autorizado, significa que o pagamento foi capturado e debitado no cartão do cliente ou reconhecido junto a instituição bancária, esse status é o indicador de que o pagamento foi efetivado e você deve proceder com a entrega da compra.

CANCELLED

Pagamento Cancelado (Pagamentos com cartão podem ser cancelados pelo Moip ou pelo emissor do cartão, boletos são cancelados 5 dias após vencimento, débito bancário é cancelado em caso de falha).

REFUNDED

Pagamento reembolsado (quem processa reembolsos são Moip e/ou Merchant).

REVERSED

Atualização de status de pagamento para Estornado (o estorno é a contestação do pagamento feita pelo comprador direto na operadora de cartão, como por exemplo pelo motivo de não reconhecimento do pagamento em sua fatura).

SETTLED

Atualização de status de pagamento para Concluído, valor disponível para transferência em conta bancária (saque).

 
Suggest Edits

Criptografia do cartão de crédito

 

Para aumentar a segurança das transações a API Moip trabalha com o conceito de criptografia ponta-a-ponta. Isto é, os dados sensíveis de cartão de crédito são criptografados nas aplicações clientes (browser, apps nativos) e somente são descriptografados nos servidores do Moip. Isso é importante para evitar que o seu comprador fique exposto à interceptação da mensagem. Veja abaixo o passo-a-passo de como realizar criptografia nos principais clientes.

Obtendo uma chave pública

O primeiro passo para criptografar o cartão de crédito é obtendo uma chave pública. As chaves públicas de criptografia são disponibilizadas dentro de sua Conta Moip. Acesse pelo link da conta de sandbox ou de produção caso você já tenha passado pelo processo de homologação e esteja nos últimos detalhes para transacionar de verdade.

Criptografia no Browser

Como o Moip.js é uma biblioteca client-side e está disponível em nosso GitHub, você deve utilizá-lo caso esteja fazendo a criptografia dos dados do cliente no browser ou em apps que rodem em frameworks html5 (Ionic, Meteor, etc.). Para integrações em ambientes Mobile você deve criptografar os dados usando nossos sdks (Android e iOS).

Para fazer a criptografia dos dados do seu cliente, primeiramente importe o Moip.js:

<script type="text/javascript" src="//assets.moip.com.br/v2/moip.min.js"></script>

Você também deve incluir o script que fará a criptografia em sua página:

  <script type="text/javascript">
    $(document).ready(function() {
        $("#encrypt").click(function() {
          var cc = new Moip.CreditCard({
            number  : $("#number").val(),
            cvc     : $("#cvc").val(),
            expMonth: $("#month").val(),
            expYear : $("#year").val(),
            pubKey  : $("#public_key").val()
          });
          console.log(cc);
          if( cc.isValid()){
            $("#encrypted_value").val(cc.hash());
          }
          else{
            $("#encrypted_value").val('');
            alert('Invalid credit card. Verify parameters: number, cvc, expiration Month, expiration Year');
          }
        });
    });
  </script>

Com o Moip.js em sua página, basta que você crie os campos de seu checkout referênciando o script que irá fazer a criptografia dos dados do pagamento.

Formulário HTML

Insira a sua chave pública em um campo com o id correspondente na sua função que faz a comunicação com o Moip.js.

<textarea id="public_key" style="display:none;">
  -----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsXkulsKdAQLMH/zjzTLf
0lrbgulfb6ZShEtRpmDnyX93EQqPdez7LyptvQBeTC+0pN57rNcWen9ApdsIMsNr
YHjNQf/kI4Ka7Xnlx0U/v7bW1D8teDoD5glBTXLjU8hRi7qlOpupiPx4ldSnK9Jj
tYApWuZMiCpWh/YRAlNW/N+ffm7ulq6H2atmgd+OFB2SghpbRJkqJiLaNJW8UkaR
oXLHkF5WJD/RPrCxsZztYJQThxLX5gBgZ12YG5+7G26Ad/mWkPqF0GLSkd1gcnbP
vF9Nw3ckKaIvh4Q4Vp3XI1hLvX41lg9CBxPPHkiJwM1M1coF9xsMP7kpJ2eujMBd
mwIDAQAB
-----END PUBLIC KEY-----</textarea>

Você também deve criar um campo referente a cada parâmetro que devem ser enviados para o Moip:

<input type="text" placeholder="Credit card number" id="number"/>
<input type="text" placeholder="CVC" id="cvc"/>
<input type="text" placeholder="Month" id="month"/>
<input type="text" placeholder="Year" id="year" />

Os campos citados acima não precisam seguir uma ordem específica.

Com os dados criptografados, você receberá o hash dos dados do cartão de crédito do cliente cc.hash() que será utilizado no momento do pagamento.

DICA

Você pode ver um exemplo funcional de criptografia usando o Moip.js clicando aqui.

IMPORTANTE

Criamos SDKs para facilitar a criptografia dos dados do cartão de seu cliente em apps Android e iOS. Para saber mais como fazer a criptografia usando meios mobile, por favor, veja mais informações em nossa Documentação.

 
Suggest Edits

Cartões de Crédito para Teste

Na tabela abaixo o Moip disponibiliza números de cartões fictícios em diversas bandeiras para fazer uma compra.

 
Bandeira
Número
Vencimento
CVC

Mastercard

5555666677778884

06/2022

123

Visa

4012001037141112

06/2022

123

Amex

376449047333005

06/2022

1234

Elo

6362970000457013

06/2022

123

Diners

36490102462661

06/2022

123

Hiper

6370950000000005

06/2022

123

Hipercard

6062825624254001

06/2022

123

 
Suggest Edits

Criar Pagamento

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.

 
posthttps://sandbox.moip.com.br/v2/orders/order_id/payments

Path Params

order_id
string
required

ID do Pedido

Body Params

installmentCount
int32

Número de parcelas. Válido para pagamentos por cartão. Se não for informado, o pagamento será realizado em 1 parcela. Mínimo 1 e Máximo 12. Limite de caracteres: 2.

statementDescriptor
string

Identificação de sua loja na fatura de cartão de crédito do comprador. Limite de caracteres: 13.

delayCapture
boolean

Se o pagamento deve ser pré-autorizado para captura posterior. Válido apenas para pagamentos por cartão de crédito.

fundingInstrument
object
required
fundingInstrument.method
string
required

Meio de pagamento. Valores possíveis: CREDIT_CARD, BOLETO, ONLINE_BANK_DEBIT, WALLET.

fundingInstrument.creditCard
object

Dados do cartão utilizado no pagamento. Pode ser usado o id de um Cartão previamente salvo, um hash de um cartão criptografado ou a coleção de dados do cartão caso você possua certificação PCI.

fundingInstrument.creditCard.id
string

Identificador do cartão de crédito no previamente salvo no Moip. Exemplo: CRC-9RR409BRJVIN

fundingInstrument.creditCard.hash
string

Dados criptografados do cartão de crédito

fundingInstrument.creditCard.number
integer

Número do cartão de crédito. Requer certificação PCI. Limite de caracteres: 18.

fundingInstrument.creditCard.expirationMonth
integer
required

Mês de expiração do cartão. Requer certificação PCI. Limite de caracteres: 2.

fundingInstrument.creditCard.expirationYear
integer
required

Ano de expiração do cartão. Requer certificação PCI. Obrigatório se utilizado o number. Limite de caracteres: 4.

fundingInstrument.creditCard.cvc
integer

Código de segurança do cartão. Não enviar apenas em casos de exceção quando não existe possibilidade de captura. Exemplo: cobrança posterior em apps ou cobranças recorrentes. Não tem limite de caracteres.

fundingInstrument.creditCard.store
boolean

Determina durante a criação de um pagamento se o cartão de crédito utilizado deve ser salvo para oneClickBuy (default: true).

fundingInstrument.creditCard.holder
object

Portador do cartão. Caso esteja utilizando o credicard.id você não deve enviar o holder.

fundingInstrument.creditCard.holder.fullname
string
required

Nome do portador impresso no cartão. Limite de caracteres: 65.

fundingInstrument.creditCard.holder.birthdate
yyyy-mm-dd
required

Data de nascimento do portador. date(AAAA-MM-DD).

fundingInstrument.creditCard.holder.phone
object
required
fundingInstrument.creditCard.holder.phone.countryCode
integer
required

DDI (código internacional) do telefone. Valores possíveis: 55. Limite de caracteres: 2.

fundingInstrument.creditCard.holder.phone.areaCode
integer
required

DDD (código local) do telefone. Limite de caracteres: 2.

fundingInstrument.creditCard.holder.phone.number
integer
required

Número do telefone. Limite de caracteres: 16.

fundingInstrument.creditCard.holder.taxDocument
object
required
fundingInstrument.creditCard.holder.taxDocument.type
string
required

Tipo do documento. Valores possíveis: CPF e CNPJ. Limite de caracteres: 3 (CPF) e 4 (CNPJ).

fundingInstrument.creditCard.holder.taxDocument.number
string
required

Número do documento. Limite de caracteres: 11 (CPF) e 14 (CNPJ).

fundingInstrument.creditCard.holder.billingAddress
object

Endereços de cobrança do cartão de crédito. Objeto Endereço

fundingInstrument.creditCard.holder.billingAddress.street
string

Logradouro.

fundingInstrument.creditCard.holder.billingAddress.streetNumber
string

Número da residência

fundingInstrument.creditCard.holder.billingAddress.complement
string

Complemento

fundingInstrument.creditCard.holder.billingAddress.district
string

Bairro

fundingInstrument.creditCard.holder.billingAddress.city
string

Cidade

fundingInstrument.creditCard.holder.billingAddress.state
string

Estado.

fundingInstrument.creditCard.holder.billingAddress.country
string

País

fundingInstrument.creditCard.holder.billingAddress.zipCode
string

CEP

fundingInstrument.boleto
object

Dados do boleto utilizado no pagamento.

fundingInstrument.boleto.expirationDate
yyyy-mm-dd
required

Data de expiração de um boleto. date

fundingInstrument.boleto.instructionLines
object

Instruções impressas no boleto.

fundingInstrument.boleto.instructionLines.first
string

Primeira linha de instrução. string

fundingInstrument.boleto.instructionLines.second
string

Segunda linha de instrução. string

fundingInstrument.boleto.instructionLines.third
string

Terceira linha de instrução. string

fundingInstrument.boleto.logoUri
string

Endereço de uma imagem com o logotipo a ser impresso no boleto. Ainda não disponível nesta versão da API. link

fundingInstrument.onlineBankDebit
object

Dados para o débito online.

fundingInstrument.onlineBankDebit.bankNumber
string

Número do banco. Valores possíveis: 341. Ver lista de bancos e códigos FEBRABAN. Atualmente disponível apenas para o banco Itaú.

fundingInstrument.onlineBankDebit.expirationDate
yyyy-mm-dd

Data de expiração do débito.

fundingInstrument.onlineBankDebit.returnUri
string

Url de redirecionamento. Ainda não disponível nesta versão da API.

device
object

Informações sobre o dispositivo utilizado pelo comprador no momento do pagamento.

device.ip
string

IP do comprador.

device.userAgent
string

Informações do software utilizado pelo comprador, como sistema operacional e navegador.

device.geolocation.latitude
float

Latitude da localização do comprador. Valores possíveis vão de -90 até 90, com 7 decimais.

device.geolocation.longitude
float

Longitude da localização do comprador. Valores possíveis vão de -180 até 180, com 7 decimais.

device.fingerprint
string

Fingerprint do device utilizado.

Headers

Authorization
string
Content-Type
string
required

application/json

VENDA PROTEGIDA

Os atributos destacados com Venda Protegida são campos obrigatórios para ter a análise anti-fraude do Moip.

ATENÇÃO

1. 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.

2. 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.

3. Por recomendação das bandeiras de cartão, um pagamento pré-autorizado deverá ser capturado em até 5 dias. Caso ultrapassado esse período, o Moip cancelará o pagamento automaticamente.

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.

Números de cartão de crédito para teste

Na tabela abaixo o Moip disponibiliza números de cartões fictícios em diversas bandeiras para fazer uma compra.

Bandeira
Número
Vencimento
CVC

Mastercard

5555666677778884

05/2018

123

Visa

4012001037141112

05/2018

123

Amex

376449047333005

05/2018

1234

Elo

6362970000457013

05/2018

123

Diners

36490102462661

05/2018

123

Hiper

6370950000000005

05/2018

123

Hipercard

6062825624254001

05/2018

123

Fluxograma de Pagamento por Cartão de Crédito

Veja abaixo o fluxo do processo de pagamento no Moip e o reflexo dele no status do pedido.

Interação dos status de pedido e pagamento no Moip.

Interação dos status de pedido e pagamento no Moip.

Fluxograma de Pagamento por Boleto

Abaixo o fluxo do processo de pagamento via boleto e sua interação com os status do pedido.

Fluxograma de uma transação por boleto bancário.

Fluxograma de uma transação por boleto bancário.

Fluxograma de Pagamento por Débito Online

Observe abaixo um esquema do processo de pagamento via débito online.

Fluxograma de uma pagamento feito por débito online.

Fluxograma de uma pagamento feito por débito online.

Recuperando pagamento cancelado

Para que você possa tentar recuperar seus pagamentos cancelados de maneira simples, o Moip criou as classificações de cancelamento, baseadas nas respostas que recebemos dos bancos. Esta classificação é uma maneira de auxiliá-lo a entender o motivo de cada cancelamento e, ao mesmo tempo, orientá-lo de como tratar cada caso.

Você terá as informações de classificação dos pagamentos cancelados na resposta, no GET e nos webhooks de pagamentos.

Exemplo de classificação de cancelamento:

{
[...]
  "cancellationDetails": {
    "cancelledBy": "ACQUIRER",
    "description": "Politica do banco emissor",
    "code": "3"
  }
[...]
}

Exemplo completo de JSON com dados de classificação.

{
  "id": "PAY-4DTXRX7KJYP2",
  "status": "CANCELLED",
  "installmentCount": 1,
  "amount": {
    "refunds": 0,
    "fees": 46,
    "liquid": 54,
    "currency": "BRL",
    "total": 100
  },
  "fees": [
    {
      "type": "TRANSACTION",
      "amount": 46
    }
  ],
  "cancellationDetails": {
    "cancelledBy": "ACQUIRER",
    "description": "Politica do banco emissor",
    "code": "3"
  },
  "fundingInstrument": {
    "creditCard": {
      "id": "CRC-L7VZM4B7U68E",
      "brand": "HIPER",
      "first6": "637095",
      "last4": "0005",
      "holder": {
        "birthdate": "30/12/1988",
        "taxDocument": {
          "type": "CPF",
          "number": "22222222222"
        },
        "fullname": "Jose Silva"
      }
    },
    "method": "CREDIT_CARD"
  },
  "events": [
    {
      "createdAt": "2015-12-07T20:39:39-0200",
      "type": "PAYMENT.CANCELLED"
    },
    {
      "createdAt": "2015-12-07T20:39:37-0200",
      "type": "PAYMENT.CREATED"
    }
  ],
  "_links": {
    "order": {
      "title": "ORD-M05KJCELI74N",
      "href": "https://api.moip.com.br/v2/orders/ORD-M05KJCELI74N"
    },
    "self": {
      "href": "https://api.moip.com.br/v2/payments/PAY-4DTXRX7KJYP2"
    }
  },
  "createdAt": "2015-12-07T20:39:37-0200",
  "updatedAt": "2015-12-07T20:39:39-0200"
}

IMPORTANTE

Para manter uma visão de conversão por pedido (mais limpa) use sempre o mesmo pedido para criar um novo pagamento. Nesse cenário em que seu pagamento foi cancelado faça um novo request de pagamento no pedido usado anteriormente com dados de outro cartão de crédito, ou se preferir oferecendo o Boleto como forma de pagamento alternativa.

Identificando sua marca na fatura

Quando seu cliente contesta o pagamento por não reconhecer a compra que fez acaba gerando diversos problemas em sua operação, e muitas vezes isso acontece simplesmente porque ele não se lembra do que comprou na internet.

Para evitar esse tipo de situação disponibilizamos para você a funcionalidade de "Nome na fatura” ou como chamamos tecnicamente statementDescriptor. Com esse campo você tem a disposição 13 caracteres que pode ser usado para indicar a sua marca na fatura de cartão de crédito do seu comprador, fazendo com que assim ele se lembre da loja, da sua marca e o que se refere esse pagamento em sua fatura.

Você só precisa passar essa informação com o nome desejado na criação de um pagamento com cartão de crédito no Moip. Veja exemplo de JSON abaixo.

{
[...]
  "statementDescriptor": "Minha loja",
[...]
}

Exemplo completo de JSON com nome na fatura.

{
  "installmentCount": 1,
  "statementDescriptor": "Minha loja",
  "fundingInstrument": {
    "method": "CREDIT_CARD",
    "creditCard": {
      "hash": "2n9vykIkGX5tegvdl+ow5ngPxP3ItAkp9tc1tzuMTeAuF457uN99CJIG386RD/iV5JPjwr9uCgr0XNYraMulcNJnys2b+A2pl7VcNmO83N5YBkViG+mo9SSCXMcBYBIcGotInur49DpKwylMbMFFWWYFsO/pq8e+zAe6g7dOLcKwkGlVrNL1PKepWxd5ldt44yPZhMeG82eiLxbnXrkAtcY19Phjlg7GIhCj3hjxSYi0Y6iUtLYmTpsVQIs93myH7LLU30gZ88xRMAYbmshi7fc8clfDkLbUPcCCDDYwe6ltFYX1J0YA/TT87Amj9filRlTzLuU9qvKHlXpq2Q/H",
      "holder": {
        "fullname": "Jose Santos",
        "birthdate": "1980-01-02",
        "taxDocument": {
          "type": "CPF",
          "number": "12345679891"
        },
        "phone": {
          "countryCode": "55",
          "areaCode": "11",
          "number": "25112511"
        }
      }
    }
  }
}

IMPORTANTE

O nome na fatura está disponível apenas para pagamentos com cartão de crédito nas bandeiras Visa e MasterCard.

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

Map<String, Object> newPay = Moip.API.payments().pay(payment, "order_id", setup);
<?php

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

// Pagamento com cartão de crédito enviado por hash

$holder = $moip->holders()->setFullname('Jose Silva')
    ->setBirthDate("1990-10-10")
    ->setTaxDocument('22222222222', 'CPF')
    ->setPhone(11, 66778899, 55)
    ->setAddress('BILLING', 'Avenida Faria Lima', '2927', 'Itaim', 'Sao Paulo', 'SP', '01234000', 'Apt 101');

$hash = 'i1naupwpTLrCSXDnigLLTlOgtm+xBWo6iX54V/hSyfBeFv3rvqa1VyQ8/pqWB2JRQX2GhzfGppXFPCmd/zcmMyDSpdnf1GxHQHmVemxu4AZeNxs+TUAbFWsqEWBa6s95N+O4CsErzemYZHDhsjEgJDe17EX9MqgbN3RFzRmZpJqRvqKXw9abze8hZfEuUJjC6ysnKOYkzDBEyQibvGJjCv3T/0Lz9zFruSrWBw+NxWXNZjXSY0KF8MKmW2Gx1XX1znt7K9bYNfhA/QO+oD+v42hxIeyzneeRcOJ/EXLEmWUsHDokevOkBeyeN4nfnET/BatcDmv8dpGXrTPEoxmmGQ==';
  
$payment = $order->payments()
  ->setCreditCardHash($hash, $holder)
  ->setInstallmentCount(3)
  ->setStatementDescriptor('teste de pag')
  ->execute();

/*********************************************/
/** Veja mais exemplos na seção de Exemplos **/
/*********************************************/
# Pagamento com cartão de crédito
api.payment.create(order.id,
    {
        installment_count: 1,
        funding_instrument: {
            method: "CREDIT_CARD",
            credit_card: {
                hash: "valor do cartão criptografado vindo do JS",
                holder: {
                    fullname: "Jose Portador da Silva",
                    birthdate: "1988-10-10",
                    tax_document: {
                        type: "CPF",
                        number: "22222222222"
                    }
                }
            }
        }
    }
)

/*********************************************/
/** Veja mais exemplos na seção de Exemplos **/
/*********************************************/
/**
* 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
})

// Pagamento com cartão de crédito
moip.payment.create('ORD-SFGB23X8WAVQ', {
    installmentCount: 1,
    fundingInstrument: {
        method: 'CREDIT_CARD',
        creditCard: {        
            hash: 'Credit Card HASH -> generated using the JS encryption SDK',
            holder: {
                fullname: 'Jose Santos',
                birthdate: '1980-01-02',
                taxDocument: {
                    type: 'CPF',
                    number: '12345679891'
                },
                phone: {
                    countryCode: '55',
                    areaCode: '11',
                    number: '25112511'
                }
            }
        }
    }
}).then((response) => {
    console.log(response.body)
}).catch((err) => {
    console.log(err)
})

/*********************************************/
/** Veja mais exemplos na seção de Exemplos **/
/*********************************************/
/**
* Este exemplo usa a SDK do Moip de .NET, disponível 
* em: https://github.com/moip/moip-sdk-dotnet
*/

// Pagamento com cartão de crédito

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

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

HolderRequest holderRequest = new HolderRequest
{
    Fullname = "Roberto Oliveira",
    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
};


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

Payment payment = client.Payments.CreateCreditCard("ORD-O5DLMAJZPTHV", paymentRequest);

/*********************************************/
/** Veja mais exemplos na seção de Exemplos **/
/*********************************************/
A binary file was returned

You couldn't be authenticated