README.md

# MoipEx

Lib para lidar com o moip pagamentos. Até o momento somente com o Moip Assinaturas.

# Setup

Para usar o moip_ex no seu projeto:


# 1. Config

```elixir
config :moip_ex,
  token: "TOKEN",
  api_key: "API_KEY",
  env: :sandbox  #ou prod

```

# 2. Mix

```elixir
def deps do
  [{:moip_ex, "~> 0.2.9"}]
end
```

# 3. Exemplos de uso

Para os exemplos a seguir, utilizaremos o Módulo `MoipEx.Example` para obter exemplos de planos, assinaturas, cupons, clientes, etc.


## Planos

Veja documentação do módulo `MoipEx.Plan` para mais detalhes

### Listar planos
```elixir
  MoipEx.Plan.list()
```

### Criar planos
```elixir
  MoipEx.Plan.create(MoipEx.Example.plan("PLAN_CODE"))
```

### Detalhes de um plano
```elixir
  MoipEx.Plan.get("PLAN_CODE")
```

### Ativar um plano
```elixir
  MoipEx.Plan.activate("PLAN_CODE")
```

### Desativar um plano
```elixir
  MoipEx.Plan.inactivate("PLAN_CODE")
```
### Modificar um plano
```elixir
  MoipEx.Plan.change(MoipEx.Example.plan("PLAN_CODE"))
```

## Clientes

Veja documentação do módulo `MoipEx.Customer` para mais detalhes

### Criar cliente

```elixir
  MoipEx.Customer.create(MoipEx.Example.customer())
```

### Listar clientes

```elixir
  MoipEx.Customer.list()
```

### Obter cliente

```elixir
  MoipEx.Customer.get("CUSTOMER_CODE")
```

### Alterar cliente

```elixir
  MoipEx.Customer.change(customer)
```

### Alterar cartao de credito

```elixir
  MoipEx.Customer.change_credit_card("CUSTOMER_CODE", MoipEx.Example.billing_info)
```

## Assinaturas

Veja documentação do módulo `MoipEx.Subscription` para mais detalhes

### Criar assinatura

```elixir
  new_customer = false # or true
  MoipEx.Subscription.create(MoipEx.Example.subscription(plan), new_customer)
```

### Listar assinaturas

```elixir
  MoipEx.Subscription.list()
```
### Listar assinaturas por cliente

```elixir
  MoipEx.Subscription.list_by_customer("CUSTOMER_CODE")
```

### Obter  assinatura

```elixir
  MoipEx.Subscription.get("SUBSCRIPTION_CODE")
```

### Ativar assinatura

```elixir
  MoipEx.Subscription.activate("SUBSCRIPTION_CODE")
```

### Suspender assinatura

```elixir
  MoipEx.Subscription.suspend("SUBSCRIPTION_CODE")
```

### Cancelar assinatura

```elixir
  MoipEx.Subscription.cancel("SUBSCRIPTION_CODE")
```

### Cancelar todas assinaturas de um cliente

```elixir
  MoipEx.Subscription.cancel_all_by_customer("CUSTOMER_CODE")
```

## Cupons

Veja documentação do módulo `MoipEx.Coupon` para mais detalhes

### Criar cupom

```elixir
  MoipEx.Coupon.create(MoipEx.Example.coupon())
```

### Listar cupons

```elixir
  MoipEx.Coupon.list()
```

### Obter cupom

```elixir
  MoipEx.Coupon.get("COUPON_CODE")
```
### Obter cupom de uma assinatura

```elixir
  MoipEx.Coupon.get_by_subscription("SUBSCRIPTION_CODE")
```

### Ativar um cupom

```elixir
  MoipEx.Coupon.activate("COUPON_CODE")
```

### Desativar um cupom
```elixir
  MoipEx.Coupon.inactivate("COUPON_CODE")
```


## Faturas

Veja documentação do módulo `MoipEx.Invoice` para mais detalhes


### Listar por assinatura

```elixir
  MoipEx.Invoice.list_by_subscription("SUBSCRIPTION_CODE")
```

### Obter fatura

```elixir
  invoice_id = 333333
  MoipEx.Invoice.get(invoice_id)
```

### Retentativa de cobrança

```elixir
  invoice_id = 3333333
  MoipEx.Invoice.retry(invoice_id)
```


## Pagamentos

Veja documentação do módulo `MoipEx.Payment` para mais detalhes


### Listar por fatura

```elixir
  invoice_id = 3333333
  MoipEx.Payment.list_by_invoice(invoice_id)
```

### Obter pagamento

```elixir
  payment_id = 1111111
  MoipEx.Payment.get(payment_id)
```

## Notificações

[Veja um exemplo de controller para lidar com as notificações MOIP em examples/notifications.md ](notificacoes.html)