From 795bfe86c4bc9ae82c9dbeb2f90ca80539c1e4ff Mon Sep 17 00:00:00 2001 From: CodePhix Date: Sun, 6 Jun 2021 09:27:02 -0300 Subject: [PATCH] 2.0.3 --- .DS_Store | Bin 6148 -> 6148 bytes README.md | 403 ++++++++++++++++++++++++++++++++++++- composer.json | 2 +- src/Asaas.php | 36 ++++ src/Cobranca.php | 9 +- src/ConsultaSerasa.php | 42 ++++ src/InformacoesFiscais.php | 27 +++ src/LinkPagamento.php | 128 ++++++++++++ src/MinhaConta.php | 24 +++ src/NotaFiscal.php | 59 ++++++ src/PagarConta.php | 4 +- 11 files changed, 726 insertions(+), 8 deletions(-) create mode 100644 src/ConsultaSerasa.php create mode 100644 src/InformacoesFiscais.php create mode 100644 src/LinkPagamento.php create mode 100644 src/MinhaConta.php create mode 100644 src/NotaFiscal.php diff --git a/.DS_Store b/.DS_Store index 1fa216babf7819ad8229c15c6d8b0952d9256c5c..ed0c180e491ab03ca61d2ab625a88d6a70e21207 100644 GIT binary patch delta 318 zcmZoMXfc=|#>B)qF;Q%yo}wrR0|Nsi1A_nqLotIc5T`I?=cI3DWL(Zz50c_!NCXNd zf=RfvVQ_MOZUImh2wGHu1Qu1f`7SO=Ir&LIS)e%$;!o!va>S)F1*=LWOsfkrkgR4* zV3^n=VbjL~G?p3Y$RdVhWJ~9y+F6yG9R^tnmql0vk)8NJig5zavu{{7vvcrs07C`H b`OZ9CJ*u~2NHo+3XB0|Nsi1A_pAVQ_MOZo$MtT}GD4YnUW#a-ITZm>G&0 ziWrh}^Icq$a`KaaA{>)@g3ly#A9h5RO+k~L#4NS>s|Y{yW&`Gb%$wOc_&I)<`|I`%m5-wC2Rly diff --git a/README.md b/README.md index e130ca8..ba25b07 100755 --- a/README.md +++ b/README.md @@ -54,7 +54,7 @@ Clientes $clientes = $asaas->Cliente()->getAll(array $filtros); // Retorna os dados do cliente de acordo com o Id -$cobranca = $asaas->Cliente()->getById(123); +$clientes = $asaas->Cliente()->getById(123); // Retorna os dados do cliente de acordo com o Email $clientes = $asaas->Cliente()->getByEmail('email@mail.com'); @@ -104,12 +104,127 @@ $cobranca = $asaas->Cobranca()->estorno(id); // Confirmação em dinheiro $cobranca = $asaas->Cobranca()->confirmacao(id); +// Desfazer confirmação de recebimento em dinheiro +$cobranca = $asaas->Cobranca()->confirmacao(id); + // Deleta uma cobrança $asaas->Cobranca()->delete(123); ``` +Link de Pagamemto +------------ + +```php +// Retorna a listagem de cobranças +$LinkPagamento = $asaas->LinkPagamento()->getAll(array $filtros); + +// Retorna os dados da cobrança de acordo com o Id +$LinkPagamento = $asaas->LinkPagamento()->getById($id); + + +// Insere uma nova cobrança / cobrança parcelada / cobrança split +$LinkPagamento = $asaas->LinkPagamento()->create(array $dadosLink); + + +Body + +{ + "name": "Venda de livros", + "description": "Qualquer livro por apenas R$: 50,00", + "endDate": "2021-02-05", + "value": 50, + "billingType": "UNDEFINED", + "chargeType": "DETACHED", + "dueDateLimitDays": 10, + "subscriptionCycle": null, + "maxInstallmentCount": 1 +} + + +$dadosLink = array( + 'name' => 'Nome do link de pagamentos -> String required', + 'description' => 'Descrição do link de pagamentos -> String', + 'endDate' => 'Data de encerramento, a partir desta data o seu link de pagamentos será desativado automaticamente', + 'value' => 'Valor do link de pagamentos, caso não informado o pagador poderá informar o quanto deseja pagar', + + /* + Forma de pagamento permitida + + BOLETO -> Boleto Bancário + CREDIT_CARD -> Cartão de Crédito + UNDEFINED -> Perguntar ao Cliente + + */ + + 'billingType' => 'UNDEFINED', //required + + + /* + Forma de cobrança + + DETACHED -> Avulsa + RECURRENT -> Assinatura + INSTALLMENT -> Parcelamento + + */ + + 'chargeType' => 'DETACHED' //required + + + /* + Caso seja possível o pagamento via boleto bancário, define a quantidade de dias úteis que o seu cliente poderá pagar o boleto após gerado + */ + + 'dueDateLimitDays' => '10', + + + /* + Periodicidade da cobrança, envio obrigatório caso a forma de cobrança selecionado seja Assinatura + + WEEKLY -> Semanal + BIWEEKLY -> Quinzenal (2 semanas) + MONTHLY -> Mensal + QUARTERLY -> Trimestral + SEMIANNUALLY -> Semestral + YEARLY -> Anual + + 'subscriptionCycle' => 'MONTHLY', + + */ + + + /* + Quantidade máxima de parcelas que seu cliente poderá parcelar o valor do link de pagamentos caso a forma de cobrança selecionado seja Parcelamento. Caso não informado o valor padrão será de 1 parcela + */ + + 'maxInstallmentCount' => '1' + + + + +); + + + +// Atualiza os dados da cobrança +$LinkPagamento = $asaas->LinkPagamento()->update($id, array $dadosLink); + +// Restaura cobrança removida +$LinkPagamento = $asaas->LinkPagamento()->restore(id); + +// Estorna cobrança +$LinkPagamento = $asaas->LinkPagamento()->estorno(id); + +// Confirmação em dinheiro +$LinkPagamento = $asaas->LinkPagamento()->confirmacao(id); + +// Deleta uma cobrança +$asaas->LinkPagamento()->delete(123); + +``` + @@ -377,6 +492,292 @@ Dados de retorno +``` + + + +Consulta Serasa +------------ + +```php + +Retorna Lista + + +$ConsultaSerasa = $Asaas->ConsultaSerasa()->getAll($filtro); + +$filtro = array( + 'startDate' => 'Filtrar a partir da data de criação -> String', + 'endDate' => 'Filtrar até uma data de criação -> String', + 'offset' => 'Elemento inicial da lista -> Number', + 'limit' => 'Número de elementos da lista (max: 100) -> Number', +); + +Dados de retorno + +{ + "object": "list", + "hasMore": false, + "totalCount": 1, + "limit": 10, + "offset": 0, + "data": [ + { + "id": "6c5e73fa-9efd-4a75-b60c-1cafb8d1c7ed", + "dateCreated": "2021-01-27", + "cpfCnpj": "05666663755", + "state": "SC", + "customer": "cus_000000001766", + "downloadUrl": "https://www.asaas.com.br/creditBureauReport/download/6c5e73fa-9efd-4a75-b60c-1cafb8d1c7ed" + } + ] +} + + + + + + + +Cria uma consulta + + + +As consultas junto ao Serasa Experian são realizadas no momento da solicitação, para evitar possíveis percas de conexão, sugerimos um timeout de 30 segundos ou mais. + +Ao realizar a consulta será retornado o atributo reportFile contendo o PDF da consulta em Base64, este campo apenas é retornado no momento da criação da consulta, caso precise obte-lo novamente será necessário realizar o download por meio da url presente no campo downloadUrl. + +Para realizar a consulta você terá que informar um CPF ou CNPJ e o estado onde deseja realizar a consulta. + +Caso queira informar um cliente já cadastrado na sua conta Asaas: + + Este deverá possuir um CPF ou CNPJ já cadastrado + + O envio do estado se torna opcional caso já conste no cadastro do cliente + + + + +$ConsultaSerasa = $Asaas->ConsultaSerasa()->create($dados); + + +Parametros Create + +$dados = array( + 'customer' = 'Identificador único do cliente no Asaas -> String', + 'cpfCnpj' = 'CPF ou CNPJ do cliente. Informe este campo caso seu cliente não esteja cadastrado no Asaas -> String', + 'state' = 'Estado em que deseja realizar a consulta. -> required EX: PE ou PB etc', +) + +Consulta Valida até as 23:59 do dia da consulta + +dados de retorno + +{ + "id": "6c5e73fa-9efd-4a75-b60c-1cafb8d1c7ed", + "dateCreated": "2021-01-27", + "cpfCnpj": "05666663755", + "state": "SC", + "customer": "cus_000000001766", + "downloadUrl": "https://www.asaas.com.br/creditBureauReport/download/6c5e73fa-9efd-4a75-b60c-1cafb8d1c7ed" +} + + + +Recupera consulta + +$ConsultaSerasa = $Asaas->ConsultaSerasa()->getBy($id); + +Dados de retorno + +{ + "id": "6c5e73fa-9efd-4a75-b60c-1cafb8d1c7ed", + "dateCreated": "2021-01-27", + "cpfCnpj": "05666663755", + "state": "SC", + "customer": "cus_000000001766", + "downloadUrl": "https://www.asaas.com.br/creditBureauReport/download/6c5e73fa-9efd-4a75-b60c-1cafb8d1c7ed" +} + + +``` + + + + +Nota Fiscal +------------ + + + +Possibilita que empresas (pessoa jurídica) emitam Notas Fiscais para seus clientes. É possível emitir uma Nota Fiscal atrelada a cobranças já existentes. + +Antes de emitir uma nota é necessário preencher as informações fiscais da sua conta. Clique aqui para entender como fazer isso. + +Os status possíveis de uma nota fiscal são os seguintes: + +SCHEDULED - Agendada + +SYNCHRONIZED - Enviada para prefeitura + +AUTHORIZED - Emitida + +PROCESSING_CANCELLATION - Processando cancelamento + +CANCELED - Cancelada + +CANCELLATION_DENIED - Cancelamento negado + +ERROR - Erro na emissão + + +```php +//Recuperar dados comerciais + + +/* +Parametros +*/ + +$dados = array( + +'effectiveDate[ge]' => 'Filtrar a partir de uma data de emissão -> Date (Y-m-d)', +'effectiveDate[le]' => 'Filtrar até uma data de emissão -> String', +'payment' => 'Filtrar pelo identificador único da cobrança -> String', +'installment' => 'Filtrar pelo identificador único do parcelamento -> String', +'externalReference' => 'Identificador da nota fiscal no seu sistema -> String', +'status' => 'Filtrar por situação -> Enum', +'offset' => 'Elemento inicial da lista -> Number', +'limit' => 'Número de elementos da lista (max: 100) -> Number', + + +); + + +$NotaFiscal = $asaas->NotaFiscal()->getAll($dados); + + +/*Agenda Nota Fiscal*/ + +$dados = array( + "payment" => "pay_637959110194", + "installment" => null, + "serviceDescription" => "Nota fiscal da Fatura 101940. \nDescrição dos Serviços: ANÁLISE E DESENVOLVIMENTO DE SISTEMAS", + "observations" => "Mensal referente aos trabalhos de Junho.", + "value" => 300, + "deductions" => 0, + "effectiveDate" => "2018-07-03", + "externalReference" => null, + "taxes" => array( + "retainIss" => false, + "iss" => 3, + "cofins" => 3, + "csll" => 1, + "inss" => 0, + "ir" => 1.5, + "pis" => 0.65 + ), + "municipalServiceId" => null, + "municipalServiceCode" => "1.01", + "municipalServiceName" => "Análise e desenvolvimento de sistemas" +); + + +$NotaFiscal = $asaas->NotaFiscal()->create($dados); +/*Agenda Nota Fiscal*/ + +$dados = array( + "serviceDescription" => "Nota fiscal da Fatura 101940. \nDescrição dos Serviços: ANÁLISE E DESENVOLVIMENTO DE SISTEMAS", + "observations" => "Mensal referente aos trabalhos de Junho.", + "value" => 300, + "deductions" => 0, + "effectiveDate" => "2018-07-03", + "externalReference" => null, + "taxes" => array( + "retainIss" => false, + "iss" => 3, + "cofins" => 3, + "csll" => 1, + "inss" => 0, + "ir" => 1.5, + "pis" => 0.65 + ), +); + + +$NotaFiscal = $asaas->NotaFiscal()->update($dados); + + +//Emitir Nota Fiscal +$NotaFiscal = $asaas->NotaFiscal()->issueInvoice($id); + +//Listar serviços municipais +$NotaFiscal = $asaas->NotaFiscal()->ListMunicipalServices($descricao); + + + + +``` + + + + +Informações Fiscais +------------ + + +```php +//Recuperar Informações Fiscais +$InformacoesFiscais = $asaas->InformacoesFiscais()->get(); + + + +/*Cria e atualiza informações Fiscais*/ + +$dados = array( + "object" => "customerFiscalInfo", + "simplesNacional" => false, + "rpsSerie" => "1", + "rpsNumber" => 1, + "loteNumber" => 1, + "username" => "usuario", + "specialTaxRegime" => "1", + "email" => "marcelo.almeida@gmail.com", + "serviceListItem" => null, + "cnae" => "6209100", + "culturalProjectsPromoter" => false, + "municipalInscription" => "21779501", + "stateInscription" => null, + "password" => "secret", + "accessToken" => null, + "certificateFile" => null, + "certificatePassword" => "secret" +); + + +$InformacoesFiscais = $asaas->InformacoesFiscais()->createUpdate($dados); + + +//Listar configurações municipais + +$InformacoesFiscais = $asaas->NotaFiscal()->ListMunicipalConfigurations(); + + +``` + + + + +Minha Conta +------------ + +```php +//Recuperar dados comerciais +$MinhaConta = $asaas->MinhaConta()->get(); + +// Recuperar configurações de personalização +$MinhaConta = $asaas->MinhaConta()->getConf(); + ``` Notificações diff --git a/composer.json b/composer.json index 98c45bb..5964020 100644 --- a/composer.json +++ b/composer.json @@ -13,7 +13,7 @@ } ], "require": { - "php": ">=7.2" + "php": "^7.2" }, "autoload": { "psr-4": { diff --git a/src/Asaas.php b/src/Asaas.php index 4069442..a4583f5 100755 --- a/src/Asaas.php +++ b/src/Asaas.php @@ -16,11 +16,17 @@ class Asaas { public $assinatura; public $cliente; public $cobranca; + public $LinkPagamento; public $notificacao; public $transferencia; public $webhook; public $antecipacao; public $extrato; + public $pagarconta; + public $NotaFiscal; + public $MinhaConta; + public $InformacoesFiscais; + public $ConsultaSerasa; private $connection; @@ -31,11 +37,16 @@ public function __construct($token, $status = false) { $this->cidade = new Cidades($this->connection); $this->cliente = new Cliente($this->connection); $this->cobranca = new Cobranca($this->connection); + $this->LinkPagamento = new LinkPagamento($this->connection); $this->notificacao = new Notificacao($this->connection); $this->transferencia = new Transferencia($this->connection); $this->extrato = new Extrato($this->connection); $this->antecipacao = new Antecipacao($this->connection); $this->pagarconta = new PagarConta($this->connection); + $this->NotaFiscal = new NotaFiscal($this->connection); + $this->MinhaConta = new MinhaConta($this->connection); + $this->InformacoesFiscais = new InformacoesFiscais($this->connection); + $this->ConsultaSerasa = new ConsultaSerasa($this->connection); $this->webhook = new Webhook($this->connection); } @@ -59,6 +70,11 @@ public function Cobranca(){ return $this->cobranca; } + public function LinkPagamento(){ + $this->LinkPagamento = new LinkPagamento($this->connection); + return $this->LinkPagamento; + } + public function Notificacao(){ $this->notificacao = new Notificacao($this->connection); return $this->notificacao; @@ -83,6 +99,26 @@ public function PagarConta(){ $this->pagarconta = new PagarConta($this->connection); return $this->pagarconta; } + + public function NotaFiscal(){ + $this->NotaFiscal = new NotaFiscal($this->connection); + return $this->NotaFiscal; + } + + public function InformacoesFiscais(){ + $this->InformacoesFiscais = new InformacoesFiscais($this->connection); + return $this->InformacoesFiscais; + } + + public function MinhaConta(){ + $this->MinhaConta = new MinhaConta($this->connection); + return $this->MinhaConta; + } + + public function ConsultaSerasa(){ + $this->ConsultaSerasa = new ConsultaSerasa($this->connection); + return $this->ConsultaSerasa; + } public function Webhook(){ $this->webhook = new Webhook($this->connection); diff --git a/src/Cobranca.php b/src/Cobranca.php index 789650d..2a02d27 100755 --- a/src/Cobranca.php +++ b/src/Cobranca.php @@ -74,10 +74,11 @@ public function estorno($id){ // Confirmação em dinheiro public function confirmacao($id, $dados){ - return $this->http->post( - sprintf("/payments/%s/receiveInCash", $id), - $dados - ); + return $this->http->post("/payments/{$id}/receiveInCash", array()); + } + // Confirmação em dinheiro + public function dezconfirmacao($id, $dados){ + return $this->http->post("/payments/{$id}/undoReceivedInCash", array()); } // Deleta uma cobrança diff --git a/src/ConsultaSerasa.php b/src/ConsultaSerasa.php new file mode 100644 index 0000000..765a1d4 --- /dev/null +++ b/src/ConsultaSerasa.php @@ -0,0 +1,42 @@ +http = $connection; + } + + + public function getAll($parametos = false){ + $filtro = ''; + if(is_array($parametos)){ + if($parametos){ + foreach($parametos as $key => $f){ + if(!empty($f)){ + if($filtro){ + $filtro .= '&'; + } + $filtro .= $key.'='.$f; + } + } + $filtro = '?'.$filtro; + } + } + return $this->http->get('/creditBureauReport'.$filtro); + } + + public function getBy($id){ + return $this->http->get('/creditBureauReport/'.$id); + } + + public function create($dados){ + return $this->http->post('/creditBureauReport', $dados); + } + +} diff --git a/src/InformacoesFiscais.php b/src/InformacoesFiscais.php new file mode 100644 index 0000000..3fc3424 --- /dev/null +++ b/src/InformacoesFiscais.php @@ -0,0 +1,27 @@ +http = $connection; + } + + public function ListMunicipalConfigurations(){ + return $this->http->get('/customerFiscalInfo/municipalOptions'); + } + + public function get(){ + return $this->http->get('/customerFiscalInfo'); + } + + public function createUpdate($id){ + return $this->http->post('/customerFiscalInfo', $dadosConta); + } + +} diff --git a/src/LinkPagamento.php b/src/LinkPagamento.php new file mode 100644 index 0000000..d4e0f56 --- /dev/null +++ b/src/LinkPagamento.php @@ -0,0 +1,128 @@ +http = $connection; + } + + // Retorna a listagem de cobranças + public function getAll(array $filtros){ + $filtro = ''; + if(is_array($filtros)){ + if($filtros){ + foreach($filtros as $key => $f){ + if(!empty($f)){ + if($filtro){ + $filtro .= '&'; + } + $filtro .= $key.'='.$f; + } + } + $filtro = '?'.$filtro; + } + } + return $this->http->get('/paymentLinks'.$filtro); + } + + // Retorna os dados da cobrança de acordo com o Id + public function getById($id){ + return $this->http->get('/paymentLinks/'.$id); + } + + // Insere uma nova cobrança + public function create(array $dadosCobranca){ + $dadosCobranca = $this->setCobranca($dadosCobranca); + if(!empty($dadosCobranca['error'])){ + return $dadosCobranca; + }else { + return $this->http->post('/paymentLinks', $dadosCobranca); + } + } + + // Atualiza os dados da cobrança + public function update($id, array $dadosCobranca){ + return $this->http->post('/paymentLinks/' . $id, $dadosCobranca); + } + + // Restaura cobrança removida + public function restore($id){ + return $this->http->post("/paymentLinks/{$id}/restore", []); + } + + // Deleta uma cobrança + public function delete($id){ + return $this->http->get('/paymentLinks/'.$id,'','DELETE'); + } + + /** + * Faz merge nas informações das cobranças. + * + * @see https://asaasv3.docs.apiary.io/#reference/0/cobrancas/criar-nova-cobrancas + * @param Array $cliente + * @return Array + */ + public function setCobranca($dados) + { + try { + $this->cobranca = array( + 'customer' => '', + 'billingType' => '', + 'value' => '', + 'dueDate' => '', + 'description' => '', + 'externalReference' => '', + 'installmentCount' => '', + 'installmentValue' => '', + 'discount' => '', + 'interest' => '', + 'fine' => '', + ); + + $this->cobranca = array_merge($this->cobranca, $dados); + return $this->cobranca; + + } catch (Exception $e) { + return 'Erro ao definir o cliente. - ' . $e->getMessage(); + } + } + + /** + * Faz merge nas informações das cobranças. + * + * @see https://asaasv3.docs.apiary.io/#reference/0/cobrancas/criar-nova-cobrancas + * @param Array $cliente + * @return Array + */ + public function setCobrancaCartao($dados) + { + try { + $this->cobranca = array( + 'customer' => '', + 'billingType' => '', + 'value' => '', + 'dueDate' => '', + 'description' => '', + 'externalReference' => '', + 'installmentCount' => '', + 'installmentValue' => '', + 'discount' => '', + 'interest' => '', + 'fine' => '', + ); + + $this->cobranca = array_merge($this->cobranca, $dados); + return $this->cobranca; + + } catch (Exception $e) { + return 'Erro ao definir o cliente. - ' . $e->getMessage(); + } + } +} diff --git a/src/MinhaConta.php b/src/MinhaConta.php new file mode 100644 index 0000000..7dc3975 --- /dev/null +++ b/src/MinhaConta.php @@ -0,0 +1,24 @@ +http = $connection; + } + + + public function get(){ + return $this->http->get('/myAccount/'); + } + + public function getConf(){ + return $this->http->get('/myAccount/paymentCheckoutConfig/'); + } + +} diff --git a/src/NotaFiscal.php b/src/NotaFiscal.php new file mode 100644 index 0000000..0a815aa --- /dev/null +++ b/src/NotaFiscal.php @@ -0,0 +1,59 @@ +http = $connection; + } + + + public function getAll($parametos = false){ + $filtro = ''; + if(is_array($parametos)){ + if($parametos){ + foreach($parametos as $key => $f){ + if(!empty($f)){ + if($filtro){ + $filtro .= '&'; + } + $filtro .= $key.'='.$f; + } + } + $filtro = '?'.$filtro; + } + } + return $this->http->get('/invoices/'.$filtro); + } + + public function getBy($id){ + return $this->http->get('/invoices/'.$id); + } + + + public function ListMunicipalServices($parametos){ + return $this->http->get('/invoices/municipalServices?description='.$parametos); + } + + public function issueInvoice($id){ + return $this->http->post('/invoices/'$id.'/authorize', arrat()); + } + + public function create($id){ + return $this->http->post('/invoices', $dadosConta); + } + + public function update($id, $dadosConta){ + return $this->http->post('/invoices/'.$id, $dadosConta); + } + + public function cancel($id){ + return $this->http->post('/invoices/'.$id.'/cancel', []); + } + +} diff --git a/src/PagarConta.php b/src/PagarConta.php index c156395..5a71ebe 100755 --- a/src/PagarConta.php +++ b/src/PagarConta.php @@ -34,7 +34,7 @@ public function getBy($id){ return $this->http->get('/bill/'.$id); } - public function create($dadosSolicitacao){ + public function create($dadosConta){ return $this->http->post('/bill', $dadosConta); } @@ -42,7 +42,7 @@ public function cancel($id){ return $this->http->post('/bill/'.$id.'/cancel', []); } - public function simulate($dadosSolicitacao){ + public function simulate($dadosConta){ return $this->http->post('/bill/simulate', $dadosConta); } }