Potelo / GuPayment

GuPayment é um pacote para o Laravel que fornece uma interface para controlar assinaturas e pagamentos com o iugu.com
MIT License
79 stars 21 forks source link

Array de opções na construção da assinatura (como funciona com clientes) #22

Closed matheusb-comp closed 5 years ago

matheusb-comp commented 5 years ago

Primeiramente, obrigado pela ótima biblioteca.

Os dados adicionais passados à função newSubscription(), são enviados à API no parâmetro custom_variables. Já o array de options passado para a função create(), é diferente, pois é expandido diretamente como parâmetros enviados à API.

Assim, é possível customizar qualquer parâmetro na requisição para criar cliente usando o array de opções, mas para customizar opções da criação de assinatura (como por exemplo o parâmetro payable_with) as funções do builder têm que ser utilizadas.

Existe uma maneira simples de customizar os parâmetros da requisição de criar assinatura para os casos onde não existe função equivalente no builder (ex: ignore_due_email)?

Como sugestão (posso enviar um pull request), seria interessante um parâmetro de opções na função newSubscription(), ou até mesmo substituir o array de dados adicionais por um array de opções (como acontece na criação de cliente) e permitir a adição das custom_variables por uma função específica do builder.

gabrielpeixoto commented 5 years ago

Olá @matheusb-comp, entendi o problema! Realmente dessa forma fica sem essa possibilidade.

Seria ótimo se pudesse enviar um pull request! 😄

Acredito que seja melhor adicionar essa opção em vez de substituir o array de dados adicionais, pois aí conseguirei manter na versão 2.. (Quem utiliza, pode atualizar sem perder nenhuma funcionalidade).

E fiz um teste aqui:

$user->newSubscription('main', 'gold', ['adicional_assinatura' => 'boa assinatura'])
     ->create(NULL, [
         'name' => $user->nome,
         'adicional_cliente' => 'bom cliente'
     ]);

e esse adicional_cliente nem é enviado para o iugu.

Então fico aguardando seu pull request, e vou ajustar a documentação nessa parte aí das opções do cliente, pois na documentação fica parecendo que são dados adicionais do cliente, porém na verdade são os options.