PHPackages                             arteaos/caixeiro - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Payment Processing](/categories/payments)
4. /
5. arteaos/caixeiro

ActiveLibrary[Payment Processing](/categories/payments)

arteaos/caixeiro
================

Solução de Pagamentos Recorrentes para Laravel

1143[2 issues](https://github.com/artesaos/caixeiro/issues)PHP

Since Jul 29Pushed 9y ago10 watchersCompare

[ Source](https://github.com/artesaos/caixeiro)[ Packagist](https://packagist.org/packages/arteaos/caixeiro)[ RSS](/packages/arteaos-caixeiro/feed)WikiDiscussions master Synced yesterday

READMEChangelogDependenciesVersions (1)Used By (0)

TRABALHO EM PROGRESSO - Artesaos Caixeiro
=========================================

[](#trabalho-em-progresso---artesaos-caixeiro)

**Caixeiro** é uma solução de Pagamentos Recorrentes (Assinaturas) desenvolvida para a comunidade brasileira que tem regras especiais de pagamento e gateways de pagamentos extremamente diferentes.

A ideia desse projeto é oferecer uma API simplificada, onde seja fácil a implementação de pagamentos recorrentes com o seu gateway de preferencia.

Planejamento de Suporte aos Gateways:

GatewayStatusObservações**MoIP.com.br****Em Andamento**Suporte Integral**Iugu.com**Planejado\* Não Suporta Cupons**Pagar.me**Planejado-Instalação
----------

[](#instalação)

A Instalação do Caixeiro é simples, basta usar o composer para adicionar o Caixeiro a seu projeto Laravel.

```
composer require artesaos/caixeiro

```

Também é necessário adicionar a dependência de seu gateway de pagamentos.

##### MoIP

[](#moip)

```
composer require artesaos/moip-subscriptions

```

Configuração
------------

[](#configuração)

Cada driver terá seus campos um pouco distintos, pois alguns não necessitam alguns dados, porem os mesmos são opcionais, vamos abordar cada driver separadamente para que seja possível melhor aproveitamento.

### MoIP

[](#moip-1)

#### Migrações

[](#migrações)

Geralmente, o Model que representa um assinante em seu sistema será o model `User` porem algumas aplicações podem ter as assinaturas baseadas no `Tenant` ou `Empresa`, adicione os seguinte campos a migração que cria a tabela que representa a entidade que representará o assinante:

Infelizmente o MoIP Requer muitas informações de forma obrigatória, e como os dados da conta podem ser diferentes dos dados do cartão, criaremos campos separados para armazenar essas informações.

```
// Os seguintes campos são de uso do Caixeiro
$table->string('customer_id')->nullable();
$table->string('subscription_id')->nullable();
$table->string('card_brand')->nullable();
$table->string('card_last_four')->nullable();
$table->string('plan_code')->nullable();
$table->string('plan_name')->nullable();
$table->integer('amount')->nullable();
$table->string('status')->nullable();
$table->date('expires_at')->nullable();
$table->date('trial_expires_at')->nullable();
$table->text('subscription_metadata')->nullable();
```

#### Ambiente

[](#ambiente)

Para que o Caixeiro inicie corretamente o cliente do MoIP e reconheça o modelo adequado, você deve adicionar ao seu arquivo **`config/services.php`** as seguintes configurações.

```
'caixeiro' => [
    'model' => env('CAIXEIRO_MODEL', App\User::class),
    'driver' => env('CAIXEIRO_DRIVER', 'moip'),
],

'moip'  =>  [
    'token' =>  env('MOIP_API_TOKEN', null),
    'key' =>  env('MOIP_API_KEY', null),
    'production' => env('MOIP_PRODUCTION', false),
],
```

Veja que no exemplo, as informações estão sendo buscadas no arquivo .env da sua aplicação, o que pode ser feito da seguinte forma:

```
CAIXEIRO_MODEL=App\User
CAIXEIRO_DRIVER=moip
MOIP_API_TOKEN=ABCDEFGHIJKLMNOPQRSTUVYXWZ
MOIP_API_KEY=ABCDEFGHIJKLMNOPQRSTUVYXWZ0123456789
MOIP_PRODUCTION=false
```

#### Service Provider

[](#service-provider)

É claro, como é de praxe em pacotes para Laravel, você precisa registar o service provider do Caixeiro:

```
Artesaos\Caixeiro\CaixeiroServiceProvider::class,
```

#### Configurando o Model

[](#configurando-o-model)

Após setar as chaves e demais informações, você deve utilizar a **trait** `Artesaos\Caixeiro\Billable` em seu model que representa o assinante (Geralmente `User`)

```
