2017 © Pedro PelĂĄez
 

library mo-payment

MoPayment fornece uma interface para controlar pagamentos no moip.com.br

image

potelo/mo-payment

MoPayment fornece uma interface para controlar pagamentos no moip.com.br

  • Monday, July 9, 2018
  • by potelo
  • Repository
  • 3 Watchers
  • 1 Stars
  • 27 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 0 Forks
  • 1 Open issues
  • 7 Versions
  • 13 % Grown

The README.md

MoPayment

Introdução

MoPayment Ă© baseado no Laravel Cashier e fornece uma interface para controlar assinaturas do moip.com.br, (*1)

Instalação Laravel 5.x

Instale esse pacote pelo composer:, (*2)

composer require potelo/mo-payment

Se vocĂȘ nĂŁo utiliza o auto-discovery, Adicione o ServiceProvider em config/app.php, (*3)

Potelo\MoPayment\MoPaymentServiceProvider::class,

Agora, configure as variĂĄveis utilizadas pelo GuPayment no seu .env:, (*4)

MOIP_ENV=sandbox
MOIP_MODEL=App\User
MOIP_WEBHOOK_AUTHORIZATION=seu_webhook_authorization
MOIP_APITOKEN=seu_api_token
MOIP_APIKEY=seu_api_key
MOPAYMENT_SIGNATURE_TABLE=subscriptions
MOIP_MODEL_FOREIGN_KEY=user_id
MOIP_USER_MODEL_COLUMN=moip_id
MOIP_SUBSCRIPTION_MODEL_ID_COLUMN=moip_id
MOIP_SUBSCRIPTION_MODEL_PLAN_COLUMN=moip_plan

Antes de usar o MoPayment vocĂȘ precisa preparar o banco de dados. Primeiro vocĂȘ tem que publicar o migration., (*5)

php artisan vendor:publish --tag=migrations

Caso precise modificar ou acrescentar colunas na tabela de assinatura, basta editar os migrations publicados. Depois, basta rodar o comando php artisan migrate., (*6)

use Potelo\MoPayment\MoPaymentTrait;

class User extends Authenticatable
{
    use MoPaymentTrait;
}

Agora vamos adicionar em config/services.php duas configuraçÔes. A classe do usuårio, sua chave de api que o Iugu fornece e o nome da tabela utilizada para gerenciar as assinaturas, a mesma escolhida na criação do migration., (*7)

    'moip' => [
        'model'  => App\User::class,
        'webhook_authorization' => env('MOIP_WEBHOOK_AUTHORIZATION'),
        'token' => env('MOIP_APITOKEN'),
        'key' => env('MOIP_APIKEY'),
        'signature_table' => env('MOPAYMENT_SIGNATURE_TABLE'),
        'env' => env('MOIP_ENV'),
        'model_foreign_key' => env('MOIP_MODEL_FOREIGN_KEY'),
        'subscription_model_id_column' => env('MOIP_SUBSCRIPTION_MODEL_ID_COLUMN'),
        'subscription_model_plan_column' => env('MOIP_SUBSCRIPTION_MODEL_PLAN_COLUMN'),
    ],

Criar assinatura

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:, (*8)

$user = User::find(1);

$user->newSubscription('main',
    'plan_code',
    'CREDIT_CARD'
)->create();

Sobrescrever valor do plano

Caso deseje sobrescrever o valor do plano, utilize o método amount. Ex: R$ 20,90 deve ser informado como "2090", (*9)

$user = User::find(1);

$user->newSubscription('main',
    'plan_code',
    'CREDIT_CARD'
)->amount(2090)
->create();

Cupom de desconto

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., (*10)

$user = User::find(1);

$user->newSubscription('main',
    'plan_code',
    'CREDIT_CARD'
)->coupon('codigo_cupom')
->create();

Checar status da assinatura

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:, (*11)

if ($user->subscribed('main')) {
    //
}

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:, (*12)

if ($user->subscription('main')->onTrial()) {
    //
}

Para saber se uma assinatura foi suspensa, basta usar o método suspended na assinatura:, (*13)

if ($user->subscription('main')->suspended()) {
    //
}

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:, (*14)

if ($user->subscription('main')->onGracePeriod()) {
    //
}

Cancelar assinatura

Para cancelar uma assinatura, basta chamar o método suspend na assinatura do usuårio:, (*15)

$user->subscription('main')->suspend();

Reativar assinatura

Se um usuårio tem uma assinatura suspensa e gostaria de reativå-la, basta utilizar o método resume., (*16)

$user->subscription('main')->resume();

Faturas

VocĂȘ pode facilmente pegar as faturas de um usuĂĄrio atravĂ©s do mĂ©todo invoices:, (*17)

$invoices = $user->invoices('subscription_code');

Assinantes

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., (*18)

$options = [
    'fullname' => 'Joao Silva',
    'email' => 'joao_silva@example.com',
    'phone_area_code' => '11',
    'phone_number' => '999887766',
    'cpf' => '01234567891',
    'birthdate_day' => '2',
    'birthdate_month' => '2',
    'birthdate_year' => '2000',
    'address' => [
        'street' => 'Rua de Cima',
        'number' => '1000',
        'complement' => 'Casa',
        'district' => 'Bairro Azul',
        'city' => 'SĂŁo Paulo',
        'state' => 'SP',
        'country' => 'BRA',
        'zipcode' => '05015010',
    ],
    'billing_info' => [
        'credit_card' => [
            'holder_name' => 'Joao Silva',
            'number' => '4111111111111111',
            'expiration_month' => '08',
            'expiration_year' => '20'
        ]
    ]
];

// Criar assinante no Moip
$user->createAsMoipCustomer($options);

Webhooks

Webhooks 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:, (*19)

Route::post('webhook', '\Potelo\MoPayment\Http\Controllers\WebhookController@handleWebhook');

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. Lembrando que vocĂȘ precisa desativar a proteção CRSF para essa rota. VocĂȘ pode colocar a URL em except no middleware VerifyCsrfToken:, (*20)

protected $except = [
   'webhook',
];

Outros webhooks

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., (*21)

Route::post('webhook', 'MeuWebhookController@handleWebhook');
<?php

namespace App\Http\Controllers;

use Potelo\GuPayment\Http\Controllers\WebhookController;

class MeuWebhookController extends WebhookController {

    public function handleInvoiceCreated(array $payload)
    {
        return 'Fatura criada: ' . $payload['resource']['id'];
    }
}

Caso queira testar os webhooks em ambiente local, vocĂȘ pode utilizar o ngrok., (*22)

The Versions

09/07 2018

dev-master

9999999-dev

MoPayment fornece uma interface para controlar pagamentos no moip.com.br

  Sources   Download

MIT

The Requires

 

by Marivaldo Junior

laravel pagamentos billing moip

09/07 2018

1.1.0

1.1.0.0

MoPayment fornece uma interface para controlar pagamentos no moip.com.br

  Sources   Download

MIT

The Requires

 

by Marivaldo Junior

laravel pagamentos billing moip

17/05 2018

1.0.0

1.0.0.0

MoPayment fornece uma interface para controlar pagamentos no moip.com.br

  Sources   Download

MIT

The Requires

 

by Marivaldo Junior

laravel pagamentos billing moip

19/12 2017

0.1.1

0.1.1.0

MoPayment fornece uma interface para controlar pagamentos no moip.com.br

  Sources   Download

MIT

The Requires

 

by Marivaldo Junior

laravel pagamentos billing moip

18/12 2017

0.1.0

0.1.0.0

MoPayment fornece uma interface para controlar pagamentos no moip.com.br

  Sources   Download

MIT

The Requires

 

by Marivaldo Junior

laravel pagamentos billing moip

21/11 2017

0.0.2

0.0.2.0

MoPayment fornece uma interface para controlar pagamentos no moip.com.br

  Sources   Download

MIT

The Requires

 

by Marivaldo Junior

laravel pagamentos billing moip

16/11 2017

0.0.1

0.0.1.0

MoPayment fornece uma interface para controlar pagamentos no moip.com.br

  Sources   Download

MIT

The Requires

 

by Marivaldo Junior

laravel pagamentos billing moip