Essa gem permite utilizar a API do Moip Assinaturas.
O Moip Assinaturas permite que você faça cobranças de forma automática, no valor e intervalo que escolher por meio da criação de planos.
http://site.moip.com.br/assinaturas/
Adicione a Gem no Gemfile da sua aplicação:
gem 'moip-assinaturas'
Então execute:
$ bundle
Ou instale você mesmo:
$ gem install moip-assinaturas
Use o generator para gerar o arquivo de inicialização do Rails
$ rails g moip_assinaturas:install
Configure a sua conta
Moip::Assinaturas.config do |config|
config.sandbox = false
config.token = "SEU TOKEN"
config.key = "SUA KEY"
end
Exemplo da criação de um novo plano usando a API do Moip
plan = {
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
}
request = Moip::Assinaturas::Plan.create(plan)
if request[:success]
# O plano foi criado com sucesso
else
# Houve um erro ao gravar o plano, dê uma olhada em request[:errors]
end
O uso é bem simples, basta seguir a API para obter os atributos específicos de cada método. http://moiplabs.github.io/assinaturas-docs/api.html
Criar um novo plano:
Moip::Assinaturas::Plan.create(plan_attributes)
Listar todos planos:
Moip::Assinaturas::Plan.list
Obter detalhes do plano:
Moip::Assinaturas::Plan.details(plan_code)
Criar um novo cliente:
Moip::Assinaturas::Customer.create(customer_attributes, new_valt = true)
Listar todos clientes:
Moip::Assinaturas::Customer.list
Obter detalhes do cliente:
Moip::Assinaturas::Customer.details(customer_code)
Criar uma nova assinatura:
Moip::Assinaturas::Subscription.create(subscription_attributes, new_customer = false)
Listar todas assinaturas:
Moip::Assinaturas::Subscription.list
Obter detalhes da assinatura:
Moip::Assinaturas::Subscription.details(subscription_code)
Suspender uma assinatura:
Moip::Assinaturas::Subscription.suspend(subscription_code)
Ativar uma assinatura:
Moip::Assinaturas::Subscription.activate(subscription_code)
Listar faturas de uma assinatura:
Moip::Assinaturas::Invoice.list(subscription_code)
Obter detalhes da fatura:
Moip::Assinaturas::Invoice.details(invoice_id)
Listar pagamentos de uma cobrança:
Moip::Assinaturas::Payment.list(invoice_id)
Obter detalhes de um pagamento:
Moip::Assinaturas::Invoice.details(payment_id)
A classe Webhooks foi desenvolvida para cobrir qualquer caso de envio do Moip. Um exemplo de como ela é utilizada.
# como eu costumo usar o rails então
class WebhooksController < ApplicationController
def webhooks
Moip::Assinaturas::Webhooks.listen(request) do |hook|
# quando o moip envia dado sobre a criação de um plano
hook.on(:plan, :created) do
# Fazer algo
end
hook.on(:payment, :status_updated) do
# quando o pagamento do meu cliente está confirmado
if hook.resource['status']['code'] == 4
# Fazer algo
end
end
hook.on(:subscription, :created) do
# Fazer algo
end
end
render :text => "done ok"
end
end
A ideia da arquitetura da classe Webhooks foi baseada na gem - https://github.com/xdougx/api-moip-assinaturas - substituindo os objetos daquela gem por hashs
- Fork it
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create new Pull Request
Gem baseada no código da gem de pagamentos do Guilherme Nascimento - https://github.com/guinascimento/moip-ruby