You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Antes de usar o MoPayment você precisa preparar o banco de dados. Primeiro você tem que publicar o migration.
37
+
38
+
```
39
+
php artisan vendor:publish --tag=migrations
40
+
```
41
+
42
+
Caso precise modificar ou acrescentar colunas na tabela de assinatura, basta editar os migrations publicados. Depois, basta rodar o comando php artisan migrate.
43
+
44
+
```php
45
+
use Potelo\MoPayment\MoPaymentTrait;
46
+
47
+
class User extends Authenticatable
48
+
{
49
+
use MoPaymentTrait;
50
+
}
51
+
```
52
+
53
+
Agora vamos adicionar em config/services.php duas configurações. A classe do usuário, sua chave de api que o Iugu fornece
54
+
e o nome da tabela utilizada para gerenciar as assinaturas, a mesma escolhida na criação do migration.
Para criar uma assinatura, primeiro você precisa ter uma instância de um usuário que extende o MoPaymentTrait. Você então deve usar o método `newSubscription` para criar uma assinatura:
73
+
74
+
```php
75
+
$user = User::find(1);
76
+
77
+
$user->newSubscription('main',
78
+
'plan_code',
79
+
'CREDIT_CARD'
80
+
)->create();
81
+
```
82
+
83
+
### Sobrescrever valor do plano
84
+
85
+
Caso deseje sobrescrever o valor do plano, utilize o método `amount`. Ex: R$ 20,90 deve ser informado como "2090"
86
+
87
+
```php
88
+
$user = User::find(1);
89
+
90
+
$user->newSubscription('main',
91
+
'plan_code',
92
+
'CREDIT_CARD'
93
+
)->amount(2090)
94
+
->create();
95
+
```
96
+
97
+
### Cupom de desconto
98
+
99
+
Se necessário, você pode associar cupons de descontos para oferecer aos assinantes do seus planos. Para informar um cupom de desconto ao criar uma assinatura utilize o método `coupon`.
100
+
101
+
```php
102
+
$user = User::find(1);
103
+
104
+
$user->newSubscription('main',
105
+
'plan_code',
106
+
'CREDIT_CARD'
107
+
)->coupon('codigo_cupom')
108
+
->create();
109
+
```
110
+
111
+
### Checar status da assinatura
112
+
113
+
Uma vez que o usuário assine um plano na sua aplicação, você pode verificar o status dessa assinatura através de alguns métodos. O método `subscribed` retorna **true** se o usuário possui uma assinatura ativa, mesmo se estiver no período trial:
114
+
115
+
```php
116
+
if ($user->subscribed('main')) {
117
+
//
118
+
}
119
+
```
120
+
121
+
Se você precisa saber se um a assinatura de um usuário está no período trial, você pode usar o método `onTrial`. Esse método pode ser útil para informar ao usuário que ele está no período de testes, por exemplo:
122
+
123
+
```php
124
+
if ($user->subscription('main')->onTrial()) {
125
+
//
126
+
}
127
+
```
128
+
129
+
Para saber se uma assinatura foi suspensa, basta usar o método `suspended` na assinatura:
130
+
131
+
```php
132
+
if ($user->subscription('main')->suspended()) {
133
+
//
134
+
}
135
+
```
136
+
137
+
Você também pode checar se uma assinatura foi suspensa mas o usuário ainda se encontra no "período de carência". Por exemplo, se um usuário cancelar a assinatura no dia 5 de Março mas a data de vencimento é apenas no dia 10, ele está nesse período de carência até o dia 10. Para saber basta utilizar o método `onGracePeriod`:
138
+
139
+
```php
140
+
if ($user->subscription('main')->onGracePeriod()) {
141
+
//
142
+
}
143
+
```
144
+
145
+
### Cancelar assinatura
146
+
Para cancelar uma assinatura, basta chamar o método `suspend` na assinatura do usuário:
147
+
148
+
```php
149
+
$user->subscription('main')->suspend();
150
+
```
151
+
152
+
### Reativar assinatura
153
+
Se um usuário tem uma assinatura suspensa e gostaria de reativá-la, basta utilizar o método `resume`.
154
+
```php
155
+
$user->subscription('main')->resume();
156
+
```
157
+
158
+
### Faturas
159
+
Você pode facilmente pegar as faturas de um usuário através do método `invoices`:
160
+
161
+
```php
162
+
$invoices = $user->invoices('subscription_code');
163
+
```
164
+
165
+
166
+
### Assinantes
167
+
Quando você utiliza o método `newSubscription` o cliente é criado automaticamente. Porém para criar um cliente manualmente, você pode utilizar o método `createAsMoipCustomer`.
[Webhooks](https://dev.moip.com.br/v1.5/reference#webhooks-1) são endereços (URLs) para onde o Moip dispara notificações para certos eventos que ocorrem na sua conta. Para utilizar você precisa configurar uma rota para o método `handleWebhook`, a mesma rota que você configurou no seu painel do Moip:
O MoPayment tem métodos para atualizar o seu banco de dados caso uma assinatura seja suspensa. Apontando a rota para esse método, isso ocorrerá de forma automática.
210
+
Lembrando que você precisa desativar a [proteção CRSF](https://laravel.com/docs/5.7/csrf#csrf-excluding-uris) para essa rota. Você pode colocar a URL em `except` no middleware `VerifyCsrfToken`:
211
+
```php
212
+
protected $except = [
213
+
'webhook',
214
+
];
215
+
```
216
+
217
+
### Outros webhooks
218
+
O Moip possui vários outros webhooks e para você criar para outros eventos basta estender o `WebhookController`. Seus métodos devem corresponder a **handle** + o nome do evento em "camelCase". Por exemplo, ao criar uma nova fatura, o Moip envia um gatilho com o seguinte evento: `invoice.created`, então basta você criar um método chamado `handleInvoiceCreated`.
0 commit comments