/api-moip-assinaturas

gem para a api do MOIP Assinaturas

Primary LanguageRubyOtherNOASSERTION

API MOIP ASSINATURAS

Introdução

Gem desenvolvida para consumir a API BETA do Moip Assinaturas Brasil,
a gem segue as especificações do MOIP apresentadas neste endereço:
http://moiplabs.github.io/assinaturas-docs/api.html

Gem Version

Configurando

Instalando a gem

$ gem install api-moip-assinaturas

Gemfile

gem 'api-moip-assinaturas', :git => 'git://github.com/xdougx/api-moip-assinaturas.git', :require => 'moip'

Initializer

# myapp/config/initializers/moip_assinaturas.rb
require 'moip'
require 'moip/configuration'

Moip.configure do |config|
  config.token = "your secret token"
  config.acount_key = "your secret key"
end 

Planos
Inicialmente você vai precisar cadastrar os planos de assinaturas para seus clientes, vamos a um exemplo:

# amount e setup_fee são em centavos
# http://moiplabs.github.io/assinaturas-docs/api.html#criar_plano
params = { code: "plano01", name: "Plano Especial", description: "Descrição do Plano Especial", amount: 990,
           setup_fee: 500, max_qty: 1, interval: { length: 1, unit: "MONTH" }, billing_cycles: 12 }

plan = Moip::Plan.build params

if plan.create
	# do some awesome things
else
	raise Exception.new plan.errors.full_messages.first
end

Para consultar um plano é bem simples:

  plan = Moip::Plan.new
  plan.find "plano01"
  
  puts plan.name
  # => Plano Especial

Caso precise atualizar o seu plano

  plan = Moip::Plan.new
  plan.find "plano01"
  
  plan.name = "Plano Muito Especial"
  # => Plano Muito Especial
  
  begin
    plan.update
  rescue Exception => error
    puts error.message
  end

Desativar um plano:

  plan = Moip::Plan.new
  plan.find "plano01"
  
  # só será possivel se não haver nenhuma assinatura ativa
  plan.inactivate
  # => true

Ativar um plano:

  plan = Moip::Plan.new
  plan.find "plano01"
  
  plan.activate
  # => true

Usando os Webhooks

A classe Moip::Webhooks foi desenvolvida para ser bem simples de ser usada então veja um exemplo do seu uso:

# como eu costumo usar o rails então
class WebhooksController < ApplicationController
  def moip
    json =  JSON.parse(request.body.read) # hash
    
    # http://moiplabs.github.io/assinaturas-docs/webhooks.html
    # hook.on :model, :event => todo hook enviado pelo moip possui um dado chamado event
    # o valor dele sempre contém model.method, veja a página de webhooks para maiores informações
    # sobre os eventos
    Moip::Webhooks.listen json do |hook|
      # quando o moip envia dado sobre a criação de um plano
      hook.on :plan, :created do
        # quero criar avisar o meu chefe
        # hook.resource pode ser um Plan, Customer, Subscription
        # Invoice ou Payment
        BossMailer.avisa_criacao_de_um_novo_plano(hook.resource).deliver
      end
      
      hook.on :payment, :status_updated do
        # quando o pagamento do meu cliente está confirmado
        if hook.resource.status[:code] == 4
          # vou avisar o meu chefe támbem
          BossMailer.pagamento_do_cliente_confirmado(hook.resource).deliver
          # vou avisar o meu cliente que a assinatura dele está em dia
          ClientMailer.avisa_confirmacao_pagamento(hook.resource).deliver
        end
      end
      
      hook.on :subscription, :created do
        BossMailer.avisa_novo_cliente(hook.resource).deliver
      end
      
    end
    render :text => "done ok"
  end
end

Desenvolvido por: