Norbaas para Laravel
Integre de forma simples as assinaturas e pagamentos do Norbaas.sh em sua aplicação Laravel. Este pacote oferece uma maneira elegante de gerenciar assinaturas, lidar com pagamentos recorrentes e interagir com a API do Norbaas. Com suporte integrado para webhooks, gerenciamento de assinaturas e uma API fluente, você pode focar no desenvolvimento da sua aplicação enquanto nós lidamos com as complexidades da cobrança de assinaturas.Instalação
Passo 1: Você pode instalar o pacote via Composer:install:
Uso
Token de Acesso
Configure seu token de acesso. Crie um novo token no Painel do Norbaas > Configurações > Desenvolvedores e cole-o no arquivo.env.
- https://sandbox.norbaas.sh/dashboard/ORG_SLUG/settings (Sandbox)
- https://norbaas.com.br/dashboard/ORG_SLUG/settings (Production)
Segredo do Webhook
Configure o segredo do seu webhook. Crie um novo webhook no Painel do Norbaas > Configurações > Webhooks.- https://sandbox.norbaas.sh/dashboard/ORG_SLUG/settings/webhooks (Sandbox)
- https://norbaas.com.br/dashboard/ORG_SLUG/settings/webhooks (Production)
order.createdorder.updatedsubscription.createdsubscription.updatedsubscription.activesubscription.canceledsubscription.revokedbenefit_grant.createdbenefit_grant.updatedbenefit_grant.revoked
Billable Trait
Vamos garantir que tudo esteja pronto para seus clientes realizarem o checkout sem problemas. 🛒 Primeiro, vamos configurar um modelo para gerenciar a cobrança — não se preocupe, é super simples! Na maioria dos casos, será o modelo User da sua aplicação. Basta adicionar o trait Billable ao seu modelo assim (claro, você precisará importá-lo do pacote primeiro):Script da Norbaas
A Norbaas inclui um script JavaScript que você pode usar para inicializar o Checkout Embutido da Norbaas..Se você for utilizar essa funcionalidade, pode usar a diretiva@norbaasEmbedScript para incluir o script em suas views dentro da tag <head>.
Webhooks
Este pacote inclui um handler de webhook que irá processar os webhooks do Norbaas.Webhooks & Proteção CSRF
Os webhooks recebidos não devem ser afetados pela proteção CSRF protection. Para evitar isso, adicione o caminho do seu webhook à lista de exceções do middlewareApp\Http\Middleware\VerifyCsrfToken:
norbaas/* no arquivo bootstrap/app.php da sua aplicação:
Comandos
Este pacote inclui uma lista de comandos que você pode usar para recuperar informações sobre sua conta Norbaas.| Comando | Descrição |
|---|---|
php artisan norbaas:products | Lista todos os produtos disponíveis com seus IDs |
Checkouts
Pagamentos Únicos
Para criar um checkout que exiba apenas um pagamento único, passe um único item para o array de produtos ao criar o checkout.
[!NOTE]
Se você estiver solicitando o checkout muitas vezes, recomendamos que você faça o cache da URL retornada pelo método checkout.
Preço Personalizado
Você pode sobrescrever o preço de um produto usando o métodocharge.
Checkout Embutido
Em vez de redirecionar o usuário, você pode criar o link do checkout, passá-lo para a página e usar nosso componente Blade:Preenchimento Automático das Informações do Cliente
Você pode sobrescrever os dados do usuário utilizando os seguintes métodos nos seus modelos fornecidos pelo traitBillable.
Redirecionamentos Após a Compra
Você pode redirecionar o usuário para uma página personalizada após a compra usando o métodowithSuccessUrl:
checkout_id={CHECKOUT_ID} à URL para recuperar o ID da sessão de checkout:
Metadados personalizados e metadados do cliente
Você pode adicionar metadados personalizados à sessão de checkout usando o métodowithMetadata:
withCustomerMetadata:
Palavras-chave Reservadas
Ao trabalhar com dados personalizados, esta biblioteca possui alguns termos reservados.billable_idbillable_typesubscription_type
Clientes
Portal do Cliente
Os clientes podem atualizar suas informações pessoais (por exemplo, nome, endereço de e-mail) acessando o portal de autoatendimento do cliente. . Para redirecionar os clientes para este portal, chame o métodoredirectToCustomerPortal() no seu modelo billable (por exemplo, o modelo User).
Pedidos
Recuperando Pedidos
Você pode recuperar os pedidos utilizando o relacionamentoorders no modelo billable:
Verificar status do pedido
Você pode verificar o status de um pedido usando o atributostatus:
Order:
refunded_at:
Assinaturas
Criando Assinaturas
Iniciar uma assinatura é simples. Para isso, precisamos do ID da variante do produto. Copie o ID do produto e inicie um novo checkout de assinatura utilizando o seu modelo billable:Verificando o Status da Assinatura
Depois que um consumidor assina seus serviços, você pode usar uma variedade de métodos para verificar o status da assinatura dele. O exemplo mais básico é verificar se o cliente possui uma assinatura válida.Status Cancelado
Para verificar se um usuário cancelou sua assinatura, você pode usar o método cancelled:onGracePeriod.
Status Vencido
Se um pagamento recorrente falhar, a assinatura ficará com o status vencido (past due). Isso indica que a assinatura ainda é válida, mas os pagamentos do seu cliente serão tentados novamente em duas semanas.Escopos da Assinatura
Existem vários escopos disponíveis para consultar assinaturas em estados específicos:Alterando Planos
Quando um consumidor está em um plano mensal, ele pode desejar fazer um upgrade para um plano melhor, alterar seus pagamentos para um plano anual ou mudar para um plano de custo mais baixo. Nesses casos, você pode permitir que ele troque de plano, passando um ID de produto diferente para o métodoswap:
swapAndInvoice.
Múltiplas Assinaturas
Em certas situações, você pode querer permitir que o seu consumidor assine diversos tipos de assinatura. Por exemplo, uma academia pode oferecer uma assinatura para natação e outra para musculação. Você pode permitir que seus clientes assinem uma ou ambas. Para gerenciar as diferentes assinaturas, você pode passar um tipo de assinatura como o segundo argumento ao criar uma nova:Cancelando Assinaturas
Para cancelar uma assinatura, chame o métodocancel.
ends_at será atualizada. O cliente continuará tendo acesso aos serviços oferecidos durante esse período. Você pode verificar se está no período de carência chamando o método onGracePeriod:
Período de Teste da Assinatura
[!NOTE] Em breve.
Lidando com Webhooks
A Norbaas pode enviar webhooks para sua aplicação, permitindo que você reaja a eventos. Por padrão, este pacote cuida da maior parte do trabalho para você. Se você configurou os webhooks corretamente, ele escutará os eventos recebidos e atualizará seu banco de dados de forma apropriada. Recomendamos ativar todos os tipos de eventos para que você possa fazer upgrades facilmente no futuro.Eventos de Webhook
Danestves\LaravelNorbaas\Events\BenefitGrantCreatedDanestves\LaravelNorbaas\Events\BenefitGrantUpdatedDanestves\LaravelNorbaas\Events\BenefitGrantRevokedDanestves\LaravelNorbaas\Events\OrderCreatedDanestves\LaravelNorbaas\Events\OrderRefundedDanestves\LaravelNorbaas\Events\SubscriptionActiveDanestves\LaravelNorbaas\Events\SubscriptionCanceledDanestves\LaravelNorbaas\Events\SubscriptionCreatedDanestves\LaravelNorbaas\Events\SubscriptionRevokedDanestves\LaravelNorbaas\Events\SubscriptionUpdated
($model) e um payload do evento ($payload). Os eventos de assinatura também incluem o objeto subscription ($subscription). Esses podem ser acessados através das propriedades públicas.
Se você deseja responder a esses eventos, deve configurar ouvintes (listeners) para eles. Por exemplo, você pode querer reagir quando uma assinatura for atualizada.
EventServiceProvider da sua aplicação:
Roadmap
- Adicionar suporte para períodos de teste A Norbaas em si não oferece suporte para períodos de teste, mas podemos gerenciá-los por conta própria.
