Se não for direcionado automaticamente, clique aqui.

O moip-assinaturas.min.js é uma biblioteca JavaScript feita para facilitar a integração do Moip Assinaturas com o seu site, permitindo o desenvolvimento do seu próprio fluxo de contratação sem que seu cliente precise sair do seu ambiente, assim como funciona o Checkout Transparente do Moip. Além de possuir uma estrutura de validações pré-definidas, utilizando essa biblioteca você também reduz o seu escopo para o PCI, uma vez que os dados de cartão de crédito vão direto do navegador do seu cliente para o Moip.

O Moip Assinaturas dispõe de dois ambientes: SANDBOX e PRODUÇÃO, permitindo flexibilidade entre testes de homologação e ambiente real.

SANDBOX
PRODUÇÃO

A biblioteca possui dependência do jQuery, portanto, é importande adicioná-la antes de realizar a importação da biblioteca JS do Moip Assianturas

Exemplo:
<script src="http://code.jquery.com/jquery-latest.js" type="text/javascript"></script>
<script src="https://[sandbox ou api].moip.com.br/moip-assinaturas.min.js" type="text/javascript"></script>

Todos os serviços do Moip Assinaturas são autenticados e deve ser informada na hora de instânciar um objeto do tipo MoipAssinaturas(). Sua chave pública é seu Token Moip.

Exemplo:

var moip = new MoipAssinaturas("SEU_TOKEN");

Como conseguir o Token e Key

O Moip assinaturas utiliza os mesmo token e key disponíveis em sua Conta Moip. Assim, não só estamos unificando as chaves, como estamos mantendo integradas as contas do Moip e do Moip Assinaturas.

Para obter seu token e key, siga os procedimentos abaixo:

  • Acesse o moip.com.br;
  • Clique na opção “Ferramentas” no Menu;
  • Selecione a opção “API Moip” e depois “Chaves de Acesso”;
  • Seu TOKEN será exibido na página seguinte, a KEY estará oculta, mas basta clicar no link e ela será exibida na mesma página.

Pré-requisitos


Criando o cliente new Customer()

A criação de uma assinatura prevê a existência de um cliente, para criá-lo basta instânciar o objeto new Customer() conforme exemplo. O cliente possui as informações pessoais do assinante (nome, e-mail, código do cliente, cpf, data de nascimento, etc), o endereço new Address()(rua, numero, bairro, etc) e o os dados de cobrança new BillingInfo()(cartão de crédito).


Criando a assinatura new MoipAssinaturas()

O primeiro passo para a utilização do moip-assinaturas.min.js é instanciar o objeto new MoipAssinaturas('SEU_TOKEN'), essa classe JavaScript é responsável por realizar a integração com o Moip Assinaturas. Em seu construtor, ela recebe apenas o seu token de autorização.

O metódo MoipAssinaturas.subscribe é responsavel por criar uma nova assinatura com um novo cliente. Ele recebe como parâmetro um objeto new Subscription() contendo como parâmetros o código da assinatura, o novo cliente (criado atráves do objeto Customer) e o código do plano.

Abaixo há um exemplo de um JavaScript para gerar uma assinatura.

Exemplo
var moip = new MoipAssinaturas("SEU_TOKEN");
var customer = build_customer();
var plan_code = $("#plan_code").val();

moip.subscribe(
    new Subscription()
        .with_code(new Date().getTime())
        .with_new_customer(customer)
        .with_plan_code(plan_code);
).callback(function(response){
    if (response.has_errors()) {
        for (i = 0; i < response.errors.length; i++) {
          var erro = response.errors[i].description;
          $("#erros").append(erro);
        }
        return;
    }
    alert("Assinatura criada com sucesso")
});

var build_customer = function() {
  var customer_params = {
      fullname: $("#fullname").val(),
      email: $("#email").val(),
      code: new Date().getTime(),
      cpf : $("#cpf").val(),
      birthdate_day : $("#birthdate_day").val(),
      birthdate_month: $("#birthdate_month").val(),
      birthdate_year: $("#birthdate_year").val(),
      phone_area_code: $("#ddd").val(),
      phone_number: $("#phone").val(),
      billing_info: build_billing_info(),
      address: build_address()
  }
  return new Customer(customer_params);
};

var build_billing_info = function() {
  var billing_info_params = {
      fullname : $("#holder_name").val(), 
      expiration_month: $("#expiration_month").val(),
      expiration_year: $("#expiration_year").val(),
      credit_card_number: $("#credit_card").val()
  };
  return new BillingInfo(billing_info_params);
};

var build_address = function() {
  var address_params = {
      street: $("#rua").val(),
      number: $("#numero").val(),
      complement: $("#complemento").val(),
      district: $("#bairro").val(),
      zipcode: $("#cep").val(),
      city: $("#cidade").val(),
      state: $("#estado").val(),
      country: "BRA"
  };
  return new Address(address_params);
};
Veja detalhes de informações do cliente na documentação API de cliente

Para criar um cliente com dados de cartão sem relacioná-lo a uma assinatura, o processo é semelhante. Você cria um new Customer() e instância o objeto new MoipAssinaturas('SEU_TOKEN'), porém, você deverá chamar o método MoipAssinaturas.create_customer(). Nesse caso, apenas o cliente será criado e não estará associado a nenhuma assiantura.

Exemplo
var token = "MEU_TOKEN";
var customer = new Customer(); // Especifique todos os atributos de um Customer
moip = new MoipAssinaturas(token);
moip.create_customer(customer)
.callback(function(response){
  if (response.has_errors()) {
    for (i = 0; i < response.errors.length; i++) {
      var erro = response.errors[i].description;
      $("#erros").append(erro);
    }
    return;
  } 
  alert("Cliente criado com sucesso");
});
                                

Para atualizar os dados de cartão de um cliente é necessário construir um objeto Customer() onde obrigatoriamente deve haver o código do cliente no qual você deseja atualizar os dados de cartão e a nova BillingInfo() com os novos dados de cobrança.

Exemplo
var token = "MEU_TOKEN";
var moip = new MoipAssinaturas(token);

var customer = new Customer();
customer.code = "cliente01"; // Código identificador do seu cliente
customer.billing_info = new BillingInfo(); // Especifique um novo cartão para fazer a cobrança

moip.update_credit_card(customer).callback(function(response){
    if (response.has_errors()) {
        for (i = 0; i < response.errors.length; i++) {
            var erro = response.errors[i].description;
            $("#erros").append(erro);
        }
    return;
});;

Personalizando o retorno do Moip Assinaturas.

Passando um método de callback

Assim que o Moip Assinaturas concluir a sua requisição o metódo de callback é executado. Isto é útil para você dar sequência ao seu checkout ou mesmo exibir mensagens de erros para o cliente ao preencher o formulário de pagamento.

Para que possamos chamar seu metódo de callback, é necessário que você passe o bloco de função para o metódo callback.

Exemplo
var moip = new MoipAssinaturas("SEU_TOKEN");
moip.callback(function(response){
  // aqui você adiciona os seus comportamentos esperados
});

Processando a resposta

O Moip Assinaturas irá chamar seu callback passando como parâmetro um objeto Response(). Ele contém uma lista de possíveis erros da integração ou de informações preenchidas pelo seu cliente no checkout. O Response() também possui uma lista de alertas que auxiliam você na sua integração.

Exemplo
{
    "code": "ass_homolog_72",
    "amount": "100",
    "next_invoice_date": {
        "day": "05",
        "month": "01",
        "year": "2013"
    },
    "status": "ACTIVE",
    "plan": {
        "name": "Plano de homologação",
        "code": "homolog1"
    },
    "customer": {
        "email": "fulano@homolog.com",
        "code": "homolog2",
        "fullname": "Fulano Homologador"
    },
    "invoice": {
        "id": 134,
        "moip_id": "14000000",
        "amount": 110,
        "status": {
            "description": "Em análise",
            "code": 2
        }
    },
    "message": "Assinatura criada com Sucesso",
    "errors": [],
    "alerts": [
        {
            "code": "MA90",
            "description": "O nome do portador do cartão deve ter no máximo 45 caracteres. Os demais caracteres serão ignorados"
        }
    ]
}

Para verificar se há erros ou alertas na resposta do Moip Assinaturas, basta chamar o metódos has_errors() ou has_alerts().

Exemplo
var moip = new MoipAssinaturas("SEU_TOKEN");
moip.callback(function(response){
  alert(response.has_errors());
  alert(response.has_alerts());
});