Git Product home page Git Product logo

asaas-php-sdk's Introduction

Asaas.com PHP-SDK

SDK não-oficial de integração á API do serviço www.asaas.com

Instalação

A biblioteca pode ser instalada usando o gerenciador de dependência composer. Para instalar a biblioteca e todas suas dependências execute:

composer require softr/asaas-php-sdk:1.0

Para consumir o webservice é preciso usar um cliente REST que será responsável pela comunicação ao WebService. Por padrão a biblioteca inclui 'Adapters' prontos para usar os pacotes Buzz, Guzzle e GuzzleHttp. Instale um dos seguintes pacotes:

composer require kriswallsmith/buzz
composer require guzzle/guzzle
composer require guzzlehttp/guzzle

Ou adicione um dos seguintes pacotes no seu composer.json:

{
    "require": {
        "kriswallsmith/buzz": "dev-master",
        "guzzle/guzzle": "^3.9@dev",
        "guzzlehttp/guzzle": "^6.1"
    }
}

Adapters

Você pode usar os seguintes adapters para usar na sua aplicação: BuzzAdapter, GuzzleAdapter e GuzzleHttpAdapter;

Exemplo

<?php

require 'vendor/autoload.php';

use Softr\Asaas\Adapter\BuzzAdapter;
use Softr\Asaas\Adapter\GuzzleAdapter;
use Softr\Asaas\Adapter\GuzzleHttpAdapter;
use Softr\Asaas\Asaas;

// Instancie o adapter usando o token de acesso
$adapter = new BuzzAdapter('seu_token_de_acesso');
ou
$adapter = new GuzzleAdapter('seu_token_de_acesso');
ou
$adapter = new GuzzleHttpAdapter('seu_token_de_acesso');

// Instancie o cliente Asaas usando a instância do adapter previamente criada.
$asaas = new Asaas($adapter);

Endpoint

Caso queira usar a API em modo teste basta especificar o ambiente no momento em que o cliente é instanciado.

// Obs.: Caso não seja informado o segundo parâmetro a API entra em modo de produção
$asaas = new Asaas($adapter, 'producao|homologacao');

Clientes

// Retorna a listagem de clientes
$clientes = $asaas->customer()->getAll(array $filtros);

// Retorna os dados do cliente de acordo com o Id
$cobranca = $asaas->customer()->getById(123);

// Retorna os dados do cliente de acordo com o Email
$clientes = $asaas->customer()->getByEmail('[email protected]');

// Insere um novo cliente
$cobranca = $asaas->customer()->create(array $dadosCliente);

// Atualiza os dados do cliente
$cobranca = $asaas->customer()->update(123, array $dadosCliente);

// Deleta uma cliente
$asaas->customer()->delete(123);

Cobranças

// Retorna a listagem de cobranças
$cobrancas = $asaas->payment()->getAll(array $filtros);

// Retorna os dados da cobrança de acordo com o Id
$cobranca = $asaas->payment()->getById(123);

// Retorna a listagem de cobranças de acordo com o Id do Cliente
$cobrancas = $asaas->payment()->getByCustomer($customer_id);

// Retorna a listagem de cobranças de acordo com o Id da Assinaturas
$cobrancas = $asaas->payment()->getBySubscription($subscription_id);

// Insere uma nova cobrança
$cobranca = $asaas->payment()->create(array $dadosCobranca);

// Atualiza os dados da cobrança
$cobranca = $asaas->payment()->update(123, array $dadosCobranca);

// Deleta uma cobrança
$asaas->payment()->delete(123);

Assinaturas

// Retorna a listagem de assinaturas
$assinaturas = $asaas->subscription()->getAll(array $filtros);

// Retorna os dados da assinatura de acordo com o Id
$assinatura = $asaas->subscription()->getById(123);

// Retorna a listagem de assinaturas de acordo com o Id do Cliente
$assinaturas = $asaas->subscription()->getByCustomer($customer_id);

// Insere uma nova assinatura
$assinatura = $asaas->subscription()->create(array $dadosAssinatura);

// Atualiza os dados da assinatura
$assinatura = $asaas->subscription()->update(123, array $dadosAssinatura);

// Deleta uma assinatura
$asaas->subscription()->delete(123);

Notificações

// Retorna a listagem de notificações
$notificacoes = $asaas->notification()->getAll(array $filtros);

// Retorna os dados da notificação de acordo com o Id
$notificacao = $asaas->notification()->getById(123);

// Retorna a listagem de notificações de acordo com o Id do Cliente
$notificacoes = $asaas->notification()->getByCustomer($customer_id);

// Insere uma nova notificação
$notificacao = $asaas->notification()->create(array $dadosNotificacao);

// Atualiza os dados da notificação
$notificacao = $asaas->notification()->update(123, array $dadosNotificacao);

// Deleta uma notificação
$asaas->notification()->delete(123);

Cidades

// Retorna a listagem de cidades
$cidades = $asaas->city()->getAll(array $filtros);

// Retorna os dados da cidade de acordo com o Id
$action123 = $asaas->city()->getById(123);

Documentação Oficial

Obs.: Esta é uma API não oficial. Foi feita com base na documentação disponibilizada neste link.

Creditos

Suporte

Para reportar um novo bug por favor abra um novo Issue no github

Licença

Distribuido sobre a licença MIT. Copie, cole, modifique, melhore e compartilhe sem medo ;)

asaas-php-sdk's People

Contributors

rafa-acioly avatar skaisser avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

asaas-php-sdk's Issues

Undefined property: stdClass::$subscription [/softr/asaas-php-sdk/src/Api/Subscription.php, line 32]

no arquivo src/Api/Subscription.php, metodo getAll() há um problema no argumento passado no return new SubscriptionEntity($subscription->subscription), linha 30. Esse argumento vem do array map, e nao existe o objeto subscription dentro de $subscription->data;

aqui no meu caso eu troquei de

    return array_map(function($subscription)
    {
        return new SubscriptionEntity($subscription->subscription);
    }, $subscriptions->data);

para

    return array_map(function($subscription)
    {
        //nao há subscription->subscription, é um array, portando apenas $subscription funciona
        return new SubscriptionEntity($subscription);
    }, $subscriptions->data);

Aparentemente ouve o mesmo Issue no Api/Notifications e ja foi corrigido

Variável indefinida em src/Api/Subscription.php linha 56

A variavel $filters é indefinida no método getByCustomer em src/Api/Subscription.php

trocar de

public function getByCustomer($customerId)
{
    $subscriptions = $this->adapter->get(sprintf('%s/customers/%s/subscriptions?%s', $this->endpoint, $customerId, http_build_query($filters)));

    $subscriptions = json_decode($subscriptions);

    $this->extractMeta($subscriptions);

    return array_map(function($subscription)
    {
        return new SubscriptionEntity($subscription);
    }, $subscriptions->data);
}

para

public function getByCustomer($customerId,$filters = [])
{
    $subscriptions = $this->adapter->get(sprintf('%s/customers/%s/subscriptions?%s', $this->endpoint, $customerId, http_build_query($filters)));

    $subscriptions = json_decode($subscriptions);

    $this->extractMeta($subscriptions);

    return array_map(function($subscription)
    {
        return new SubscriptionEntity($subscription);
    }, $subscriptions->data);
}

Tag 1.0

Amigo, Tenho testado seu código e está tudo funcionando maravilhosamente bem, Seria possivel você lançar o release no caso tag como 1.0 assim quando mexer em algo não vai bugar os sites que estão utilizando.

Pos atualmente estamos usando em dev-master via composer.

Variável indefinida em src/Api/Payment.php linha 79

A variavel $filters é indefinida no método getBySubscription em src/Api/Payment.php linha 79.

trocar os argumentos do método getBySubscription (linha 77) de:

public function getBySubscription($subscriptionId)

para

public function getBySubscription($subscriptionId, array $filters = [])

print_r e die no GuzzleHttpAdapter

*** O PROJETO AQUI ESTAVA DESATUALIZADO ***

Na classe GuzzleHttpAdapter, tem um print_r na linha 165 e die na linha 166, quando da uma exception para toda a execucao do script

Bug Juros Multa e Desconto

Bom dia,

Estou com um bug relacionado aos Adpters nenhum deles tem suportado o formato de post exigido pelo asaas, que é um array multinivel;

"discount": {
"value": 10,
"dueDateLimitDays": 0
},
"fine": {
"value": 1
},
"interest": {
"value": 2
}

Att Éder

How to solve 'Request not processed' error and how to use sdk for sandbox token?

Hello There,
I have to integrate this sdk with sandbox api token but I am getting this error
Fatal error: Uncaught exception 'Softr\Asaas\Exception\HttpException' with message 'Request not processed.' in /home/xxx/xxx/xxx/asaas/src/Adapter/BuzzAdapter.php on line 133
( ! ) Softr\Asaas\Exception\HttpException: Request not processed. in /home/xxx/xxx/xxx/asaas/src/Adapter/BuzzAdapter.php on line 133
so please help how to fix this error also I am not getting the bellow term Please explain so I can test sdk with sandbox/test token

Caso queira usar a API em modo teste basta especificar o ambiente no momento em que o cliente é instanciado.

// Obs.: Caso não seja informado o segundo parâmetro a API entra em modo de produção
$asaas = new Asaas($adapter, 'producao|homologacao');

Thanks in advance

Nova SDK asaas-php-sdk (adrianovcar/asaas-php-sdk) tudo funcionando!

Pessoal, sou um amante do Asaas e gostei desse repositório. Já uso para um projeto mas tinha feito poucas melhorias.

Recentemente, fiz um grande update de todo o código, muita coisa mesmo e creio que consegui melhorar muito!
Vejam as novidades que incluí nesta lib:

  • PEST (com diversos exemplos)
  • CreditCard entity
  • CreditCardHolderInfo entity
  • Fine entity
  • Interest entity
  • Auto binding das entities
  • Textos traduzidos para inglês
  • Sincronizados todos os fields das payloads do Asaas com as properties das classes
  • Removi Guzzle (projeto abandonado) mantive apenas o GuzzleHttp
  • Inserido DocBlock em todas propriedades relevantes e em todos os métodos

Nessa versão, tornei tudo orientado a objetos, isso impactou nos GETs, refiz o método "build" para trazer um objeto (subscription por exemplo) com as entidades relacionadas já populadas, tudo funcionando ;)

Ainda devo fazer muitas melhorias, aos poucos vou abordando demais endpoints do Asaas.

Próxima feature que devo fazer:
Fazer "upgrade" ou "downgrade" de uma assinatura. (Isso parece simples, mas não é)
Uma vez que o Asaas é agnóstico a "planos", você tem que administrar seus próprios planos de assinatura, mas quando um cliente quer fazer uma mudança, é necessário criar o desconto "pró-rata" para descontar da primeira parcela da nova assinatura.
Estou vendo como fazer isso (aceito sugestões), mas vai ser complexo porque vou ter que criar uma assinatura com um valor e depois alterar o valor da primeira parcela apenas.

https://github.com/adrianovcar/asaas-php-sdk/

Quem quiser contribuir, fique à vontade!

GuzzleHttpAdapter InvalidBody() deprecated

Ao utilizar O SDK com GuzzleHttpd, Aparece o seguinte erro:

Passing in the "body" request option as an array to send a POST request has been deprecated. Please use the "form_params" request option to send a application/x-www-form-urlencoded request, or a the "multipart" request option to send a multipart/form-data request.

Notificação WebHook

Olá, parabéns pelo trabalho!!

Gostaria de saber como fazer para receber notificações do webhook da asaas. Tem alguma rotina, comando ou exemplo?

Utilização de sandbox

Existe algum parâmetro ou configuração para que seja utilizado a sandbox para fim de testes?

Mensagem de erro na criação do cliente

Ao insere um novo cliente como devo proceder para capturar as mensagens de erro? Tentei try/catch mais ele não me retorna uma Exception.

Exemplo quando eu envio um cpf/cnpj invalido o SDK imprime os dados abaixo na tela e não tem jeito de eu capturar.

$cobranca = $asaas->customer()->create(array $dadosCliente);

stdClass Object
(
[errors] => Array
(
[0] => stdClass Object
(
[code] => invalid_cpfCnpj
[description] => O CPF ou CNPJ informado é inválido.
)

    )

)

How to include all asaas sdk and Buzz file in function.php wordpress?

Hello There,
I have some problem to include asaas sdk and buzz files in function.php in WordPress .... actually I want to use asaas functionality on different files so I need to include in function.php but It break my site.
Here are my file list which i am including on function.php

//BuZZ
require_once('asaas/Buzz/Exception/ExceptionInterface.php');
require_once('asaas/Buzz/Exception/RuntimeException.php');
require_once('asaas/Buzz/Client/ClientInterface.php');
require_once('asaas/Buzz/Client/AbstractClient.php');
require_once('asaas/Buzz/Client/AbstractCurl.php');
require_once('asaas/Buzz/Client/AbstractStream.php');
require_once('asaas/Buzz/Client/BatchClientInterface.php');

require_once('asaas/Buzz/Client/Curl.php');
require_once('asaas/Buzz/Client/FileGetContents.php');
require_once('asaas/Buzz/Client/MultiCurl.php');

require_once('asaas/Buzz/Exception/ClientException.php');

require_once('asaas/Buzz/Exception/InvalidArgumentException.php');
require_once('asaas/Buzz/Exception/LogicException.php');
require_once('asaas/Buzz/Exception/RequestException.php');

require_once('asaas/Buzz/Listener/ListenerInterface.php');
require_once('asaas/Buzz/Listener/History/Entry.php');
require_once('asaas/Buzz/Listener/History/Journal.php');
require_once('asaas/Buzz/Listener/BasicAuthListener.php');
require_once('asaas/Buzz/Listener/CallbackListener.php');
require_once('asaas/Buzz/Listener/CookieListener.php');
require_once('asaas/Buzz/Listener/DigestAuthListener.php');
require_once('asaas/Buzz/Listener/HistoryListener.php');
require_once('asaas/Buzz/Listener/ListenerChain.php');

require_once('asaas/Buzz/Listener/LoggerListener.php');

require_once('asaas/Buzz/Message/Factory/FactoryInterface.php');
require_once('asaas/Buzz/Message/Factory/Factory.php');

require_once('asaas/Buzz/Message/MessageInterface.php');
require_once('asaas/Buzz/Message/AbstractMessage.php');
require_once('asaas/Buzz/Message/RequestInterface.php');
require_once('asaas/Buzz/Message/Request.php');
require_once('asaas/Buzz/Message/Form/FormRequestInterface.php');
require_once('asaas/Buzz/Message/Form/FormRequest.php');
require_once('asaas/Buzz/Message/Form/FormUploadInterface.php');
require_once('asaas/Buzz/Message/Form/FormUpload.php');

require_once('asaas/Buzz/Message/Response.php');

require_once('asaas/Buzz/Util/Cookie.php');
require_once('asaas/Buzz/Util/CookieJar.php');
require_once('asaas/Buzz/Util/Url.php');

require_once('asaas/Buzz/Browser.php');

/_assass_**/
require_once('asaas/src/Adapter/AdapterInterface.php');
require_once('asaas/src/Adapter/BuzzAdapter.php');
require_once('asaas/src/Adapter/BuzzAsaasAuthListener.php');
require_once('asaas/src/Adapter/GuzzleAdapter.php');
require_once('asaas/src/Adapter/GuzzleHttpAdapter.php');
require_once('asaas/src/Api/AbstractApi.php');
require_once('asaas/src/Api/City.php');
require_once('asaas/src/Api/Customer.php');
require_once('asaas/src/Api/Notification.php');
require_once('asaas/src/Api/Payment.php');
require_once('asaas/src/Api/Subscription.php');
require_once('asaas/src/Entity/AbstractEntity.php');
require_once('asaas/src/Entity/City.php');
require_once('asaas/src/Entity/Customer.php');
require_once('asaas/src/Entity/Installment.php');
require_once('asaas/src/Entity/Meta.php');
require_once('asaas/src/Entity/Notification.php');
require_once('asaas/src/Entity/Payment.php');
require_once('asaas/src/Entity/Subscription.php');
require_once('asaas/src/Exception/ExceptionInterface.php');
require_once('asaas/src/Exception/HttpException.php');
require_once('asaas/src/Exception/InvalidRecordException.php');

require_once('asaas/src/Asaas.php');

use Softr\Asaas\Adapter\BuzzAdapter;
use Softr\Asaas\Asaas;

Please help

Thanks In advance

Erro ao buscar as notificacoes

Boa tarde pessoal, estou tentando buscar pela funcao getByCustomer no Api/Notification e esta dando um erro de:

Undefined property: stdClass::$notification

Debugando o fonte vi que na linha 66 do mesmo arquivo nao precisaria usar $notification->notification, por que o $notification ja e o proprio objeto com as informacoes de notificacao. Podem corrigir este problema o quanto antes?

Nova propriedade em src/Entity/Payment.php

Solicitei que fosse adicionado ao retorno da API o atributo originalDueDate(data de vencimento original), e essa solicitaçao foi implementada hoje.

Portando adicionar em src/Entity/Payment.php a propriedade:

/**
 * @var string
 */
public $originalDueDate;

E como é uma data, adicionar também o método:
/**
* @param string $originalDueDate
*/
public function setOriginalDueDate($originalDueDate)
{
$this->originalDueDate = static::convertDateTime($originalDueDate);
}

Biblioteca parou de funcionar desde sábado 30/05/20 de manhã.

Temos instalado em dois locais, hospedagens diferentes o um sistema que se comunica com a API do ASAAS pela library de vocês, desde sábado de manhã simplesmente parou, mais alguém com esse problema? Sabem o que pode ser?

An uncaught Exception was encountered
Type: Error

Message: Call to undefined method Guzzle\Http\Exception\CurlException::getResponse()
Filename: /softr/asaas-php-sdk/src/Adapter/GuzzleAdapter.php
Line Number: 59
Backtrace:
File: softr/asaas-php-sdk/src/Api/Customer.php

Erro na busca de clientes $asaas->customer()->getById($idCliente)

Desculpa mas sou muito leigo, estou com esse erro.

Fatal error: Uncaught exception 'Softr\Asaas\Exception\HttpException' with message 'Request not processed.' in C:\xampp\htdocs\asaas\vendor\softr\asaas-php-sdk\src\Adapter\BuzzAdapter.php:133 Stack trace: #0 C:\xampp\htdocs\asaas\vendor\softr\asaas-php-sdk\src\Adapter\BuzzAdapter.php(118): Softr\Asaas\Adapter\BuzzAdapter->handleError(Object(Buzz\Message\Response)) #1 C:\xampp\htdocs\asaas\vendor\softr\asaas-php-sdk\src\Adapter\BuzzAdapter.php(50): Softr\Asaas\Adapter\BuzzAdapter->handleResponse(Object(Buzz\Message\Response)) #2 C:\xampp\htdocs\asaas\vendor\softr\asaas-php-sdk\src\Api\Customer.php(42): Softr\Asaas\Adapter\BuzzAdapter->get('http://homolog....') #3 C:\xampp\htdocs\asaas\index.php(28): Softr\Asaas\Api\Customer->getById('644287') #4 {main} thrown in C:\xampp\htdocs\asaas\vendor\softr\asaas-php-sdk\src\Adapter\BuzzAdapter.php on line 133

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.