Um cliente PHP para interagir com a API GoCardless Pro.
A maneira recomendada de instalar gocardless-pro
é usando o Composer.
# Install Composer
curl -sS https://getcomposer.org/installer | php
Em seguida, execute o comando Composer para instalar a versão estável mais recente do gocardless-pro
.
php composer.phar require gocardless/gocardless-pro
Após a instalação, você precisa solicitar o autoloader do Composer:
require ' vendor/autoload.php ' ;
Crie uma instância GoCardlessProClient
, fornecendo seu token de acesso e o ambiente que deseja usar. Recomendamos fortemente armazenar seu token de acesso como uma variável de ambiente, em vez de diretamente em seu código. Você pode facilmente carregar as variáveis de ambiente de um arquivo .env
usando algo como phpdotenv, mas mantenha-o fora do controle de versão!
$ access_token = getenv ( ' GC_ACCESS_TOKEN ' );
$ client = new GoCardlessPro Client ([
' access_token ' => $ access_token ,
' environment ' => GoCardlessPro Environment :: SANDBOX
]);
Você pode criar um access_token
na guia “Desenvolvedores” no painel GoCardless.
O ambiente pode ser GoCardlessProEnvironment::SANDBOX
ou GoCardlessProEnvironment::LIVE
, dependendo se você deseja usar a sandbox ou a API ativa.
Para obter a documentação completa, consulte nossos documentos de API.
Você pode fazer uma solicitação para obter uma lista de recursos usando o método list
.
$ client -> customers ()-> list ();
Nota: Este README usará os clientes, mas cada um dos recursos da API está disponível nesta biblioteca.
Se você precisar passar alguma opção, o último (ou único, na ausência de parâmetros de URL) argumento para list()
é um array de parâmetros de URL:
$ customers = $ client -> customers ()-> list ([ ' params ' => [ ' limit ' => 400 ]]);
Uma chamada para list()
retorna uma instância de ListResponse
. Você pode usar seu atributo records
para iterar pelos resultados.
echo count ( $ customers -> records );
foreach ( $ customers -> records as $ resource ) {
echo $ resource -> given_name ;
}
Caso seja necessário um parâmetro de URL, a assinatura do método conterá os argumentos necessários:
$ customer = $ client -> customers ()-> get ( $ customer_id );
echo $ customer -> given_name ;
Tal como acontece com a lista, o último argumento pode ser um array de opções, com quaisquer parâmetros de URL fornecidos:
$ client -> customers ()-> get ( $ customer_id , [ ' params ' => [ ' some_flag ' => true ]]);
As instâncias de recursos individuais e ListResponse têm um atributo api_response
, que permite acessar as seguintes propriedades da solicitação:
status
headers
body
$ api_response = $ client -> customers ()-> get ( $ customer_id )-> api_response ;
echo $ api_response -> status_code ;
Para solicitações POST e PUT, você precisa fornecer um corpo para sua solicitação, passando-o como primeiro argumento.
$ client -> customers ()-> create ([
' params ' => [ ' given_name ' => ' Pete ' , ' family_name ' => ' Hamilton ' ]
]);
Tal como acontece com as solicitações GET, se algum parâmetro for necessário, ele vem primeiro:
$ client -> customers ()-> update ( $ customer_id , [
' params ' => [ ' family_name ' => ' Smith ' ]
]);
A API GoCardless inclui chaves de idempotência. A biblioteca irá injetá-los automaticamente em sua solicitação quando você criar um recurso, evitando que ele seja duplicado se algo der errado com a API (por exemplo, problemas de rede ou tempo limite).
Você também pode especificar sua própria chave de idempotência - você pode, por exemplo, usar IDs de registros em seu banco de dados, protegendo-se não apenas de problemas de rede ou API, mas também de erros de sua parte que podem levar à criação dupla:
$ client -> customers ()-> create ([
' params ' => [ ' given_name ' => ' Pete ' , ' family_name ' => ' Hamilton ' ]
' headers ' => [ ' Idempotency-Key ' => ' ABC123 ' ]
]);
Se a biblioteca atingir um conflito de chave de idempotência (ou seja, você tentar criar um recurso com uma chave de idempotência que já usou), ela carregará automaticamente e retornará o recurso já existente.
Quando a API retornar um erro, a biblioteca retornará uma subclasse correspondente de ApiException
, uma das seguintes:
InvalidApiUsageException
InvalidStateException
ValidationFailedException
Esses tipos de erros são abordados na documentação da API.
Se o erro for da camada de transporte HTTP (por exemplo, tempos limite ou problemas na infraestrutura do GoCardless), as solicitações serão repetidas automaticamente pela biblioteca até 3 vezes, com um atraso de 500 ms entre as tentativas, antes que uma ApiConnectionException
seja gerada.
Se a biblioteca não puder analisar a resposta do GoCardless, ela lançará um MalformedResponseException
.
try {
$ client -> customer ()-> create ([
' params ' => [ ' invalid_name ' => ' Pete ' ]
]);
} catch ( GoCardlessPro Core Exception ApiException $ e ) {
// Api request failed / record couldn't be created.
} catch ( GoCardlessPro Core Exception MalformedResponseException $ e ) {
// Unexpected non-JSON response.
} catch ( GoCardlessPro Core Exception ApiConnectionException $ e ) {
// Network error.
}
As propriedades da exceção podem ser acessadas com os seguintes métodos:
$e->getType();
$e->getCode();
$e->getErrors();
$e->getDocumentationUrl();
$e->getMessage();
$e->getRequestId();
$e->getApiResponse();
GoCardless oferece suporte a webhooks, permitindo que você receba notificações em tempo real quando algo acontecer em sua conta, para que você possa realizar ações automáticas em resposta, por exemplo:
O cliente permite validar se um webhook recebido é genuinamente do GoCardless e analisá-lo em objetos GoCardlessProResourcesEvent
que são fáceis de trabalhar:
<?php
// When you create a webhook endpoint, you can specify a secret. When GoCardless sends
// you a webhook, it will sign the body using that secret. Since only you and GoCardless
// know the secret, you can check the signature and ensure that the webhook is truly
// from GoCardless.
//
// We recommend storing your webhook endpoint secret in an environment variable
// for security, but you could include it as a string directly in your code
$ webhook_endpoint_secret = getenv ( ' GOCARDLESS_WEBHOOK_ENDPOINT_SECRET ' );
$ request_body = file_get_contents ( ' php://input ' );
$ headers = getallheaders ();
$ signature_header = $ headers [ ' Webhook-Signature ' ];
try {
$ events = GoCardlessPro Webhook :: parse ( $ request_body , $ signature_header , $ webhook_endpoint_secret );
foreach ( $ events as $ event ) {
// You can access each event in the webhook.
echo $ event -> id ;
}
header ( ' HTTP/1.1 200 OK ' );
} catch ( GoCardlessPro Core Exception InvalidSignatureException ) {
// The webhook doesn't appear to be genuinely from GoCardless, as the signature
// included in the `Webhook-Signature` header doesn't match the one computed with
// your webhook endpoint secret and the body.
header ( ' HTTP/1.1 498 Invalid Token ' );
}
Para obter mais detalhes sobre como trabalhar com webhooks, consulte nosso guia “Primeiros passos”.
Esta biblioteca cliente suporta apenas PHP >= 8.1 Versões anteriores do PHP agora são consideradas em fim de vida e podem estar expostas a vulnerabilidades de segurança.
Este cliente é gerado automaticamente a partir do Crank, um conjunto de ferramentas que esperamos abrir em breve. Os problemas devem, por enquanto, ser relatados neste repositório.
Por favor, não modifique o código-fonte sozinho, suas alterações serão substituídas!