A biblioteca Stripe PHP fornece acesso conveniente à API Stripe a partir de aplicativos escritos na linguagem PHP. Inclui um conjunto predefinido de classes para recursos de API que se inicializam dinamicamente a partir de respostas de API, o que o torna compatível com uma ampla variedade de versões da API Stripe.
PHP 5.6.0 e posterior.
Você pode instalar as ligações via Composer. Execute o seguinte comando:
composer require stripe/stripe-php
Para usar as ligações, use o carregamento automático do Composer:
require_once ' vendor/autoload.php ' ;
Se não quiser usar o Composer, você pode baixar a versão mais recente. Então, para usar as ligações, inclua o arquivo init.php
.
require_once ' /path/to/stripe-php/init.php ' ;
As ligações requerem as seguintes extensões para funcionar corretamente:
curl
, embora você possa usar seu próprio cliente não-cURL, se preferirjson
mbstring
(string multibyte)Se você usar o Composer, essas dependências deverão ser tratadas automaticamente. Se você instalar manualmente, certifique-se de que essas extensões estejam disponíveis.
O uso simples se parece com:
$ stripe = new Stripe StripeClient ( ' sk_test_BQokikJOvBiI2HlWgH4olfQ2 ' );
$ customer = $ stripe -> customers -> create ([
' description ' => ' example customer ' ,
' email ' => ' [email protected] ' ,
' payment_method ' => ' pm_card_visa ' ,
]);
echo $ customer ;
Você pode continuar a usar os padrões de integração legados usados antes da versão 7.33.0. Revise o guia de migração para ver as alterações de padrão de cliente/serviços compatíveis com versões anteriores.
Consulte a documentação da API PHP.
Veja demonstrações em vídeo sobre como usar a biblioteca.
Se você estiver usando PHP 5.4 ou 5.5, considere atualizar seu ambiente, pois essas versões já passaram do fim de vida desde setembro de 2015 e julho de 2016, respectivamente. Caso contrário, você ainda pode usar o Stripe baixando stripe-php v6.43.1 (zip, tar.gz) em nossa página de lançamentos. Esta versão funcionará, mas pode não suportar recursos recentes que adicionamos desde que a versão foi lançada e atualizar o PHP é o melhor curso de ação.
Se você estiver usando o PHP 5.3, você deve atualizar seu ambiente, pois esta versão já passou do fim da vida útil desde agosto de 2014. Caso contrário, você pode baixar a v5.9.2 (zip, tar.gz) em nossa página de lançamentos. Esta versão continuará funcionando com novas versões da API Stripe para todos os usos comuns.
Nota: Não recomendamos diminuir o tempo limite para chamadas não somente leitura (por exemplo, criação de cobrança), pois mesmo se você atingir o tempo limite localmente, a solicitação do lado do Stripe ainda poderá ser concluída. Se você estiver diminuindo o tempo limite nessas chamadas, certifique-se de usar tokens de idempotência para evitar a execução da mesma transação duas vezes como resultado da lógica de nova tentativa de tempo limite.
Para modificar os tempos limite de solicitação (conectados ou totais, em segundos), você precisará informar ao cliente da API para usar um CurlClient diferente do padrão. Você definirá os tempos limite nesse CurlClient.
// set up your tweaked Curl client
$ curl = new Stripe HttpClient CurlClient ();
$ curl -> setTimeout ( 10 ); // default is StripeHttpClientCurlClient::DEFAULT_TIMEOUT
$ curl -> setConnectTimeout ( 5 ); // default is StripeHttpClientCurlClient::DEFAULT_CONNECT_TIMEOUT
echo $ curl -> getTimeout (); // 10
echo $ curl -> getConnectTimeout (); // 5
// tell Stripe to use the tweaked client
Stripe ApiRequestor :: setHttpClient ( $ curl );
// use the Stripe API client as you normally would
Precisa definir um proxy para suas solicitações? Passe o array CURLOPT_*
necessário para o construtor CurlClient, usando a mesma sintaxe de curl_stopt_array()
. Isso definirá as opções cURL padrão para cada solicitação HTTP feita pelo SDK, embora muitas opções mais comuns (por exemplo, tempos limite; veja acima como defini-los) serão substituídas pelo cliente, mesmo se definidas aqui.
// set up your tweaked Curl client
$ curl = new Stripe HttpClient CurlClient ([ CURLOPT_PROXY => ' proxy.local:80 ' ]);
// tell Stripe to use the tweaked client
Stripe ApiRequestor :: setHttpClient ( $ curl );
Como alternativa, um callable pode ser passado para o construtor CurlClient que retorna a matriz acima com base nas entradas da solicitação. Consulte testDefaultOptions()
em tests/CurlClientTest.php
para obter um exemplo desse comportamento. Observe que o callable é chamado no início de cada solicitação de API, antes de a solicitação ser enviada.
A biblioteca faz um registro mínimo, mas pode ser configurada com um registrador compatível com PSR-3
para que as mensagens acabem lá em vez de error_log
:
Stripe Stripe :: setLogger ( $ logger );
Você pode acessar os dados da última resposta da API em qualquer objeto via getLastResponse()
.
$ customer = $ stripe -> customers -> create ([
' description ' => ' example customer ' ,
]);
echo $ customer -> getLastResponse ()-> headers [ ' Request-Id ' ];
A API do Stripe agora exige que todas as conexões usem TLS 1.2. Alguns sistemas (principalmente algumas versões mais antigas do CentOS e RHEL) são capazes de usar o TLS 1.2, mas usarão o TLS 1.0 ou 1.1 por padrão. Nesse caso, você receberia um invalid_request_error
com a seguinte mensagem de erro: "Stripe não oferece mais suporte a solicitações de API feitas com TLS 1.0. Inicie conexões HTTPS com TLS 1.2 ou posterior. Você pode saber mais sobre isso em https://stripe .com/blog/upgrading-tls.".
A ação recomendada é atualizar seus pacotes cURL e OpenSSL para que o TLS 1.2 seja usado por padrão, mas se isso não for possível, você poderá resolver o problema definindo a opção CURLOPT_SSLVERSION
como CURL_SSLVERSION_TLSv1
ou CURL_SSLVERSION_TLSv1_2
:
$ curl = new Stripe HttpClient CurlClient ([ CURLOPT_SSLVERSION => CURL_SSLVERSION_TLSv1 ]);
Stripe ApiRequestor :: setHttpClient ( $ curl );
Para aplicativos que precisam usar várias chaves durante a vida de um processo, como aquele que usa Stripe Connect, também é possível definir uma chave e/ou conta por solicitação:
$ customers = $ stripe -> customers -> all ([],[
' api_key ' => ' sk_test_... ' ,
' stripe_account ' => ' acct_... '
]);
$ stripe -> customers -> retrieve ( ' cus_123456789 ' , [], [
' api_key ' => ' sk_test_... ' ,
' stripe_account ' => ' acct_... '
]);
Por padrão, a biblioteca usará seu próprio pacote interno de certificados de CA conhecidos, mas é possível configurar o seu próprio:
Stripe Stripe :: setCABundlePath ( " path/to/ca/bundle " );
A biblioteca pode ser configurada para repetir automaticamente solicitações que falham devido a um problema intermitente de rede:
Stripe Stripe :: setMaxNetworkRetries ( 2 );
Chaves de idempotência são adicionadas às solicitações para garantir que as novas tentativas sejam seguras.
Por padrão, a biblioteca envia telemetria ao Stripe em relação à latência da solicitação e ao uso de recursos. Esses números ajudam o Stripe a melhorar a latência geral de sua API para todos os usuários e a melhorar recursos populares.
Você pode desativar esse comportamento se preferir:
Stripe Stripe :: setEnableTelemetry ( false );
Stripe possui recursos em fase beta que podem ser acessados por meio da versão beta deste pacote. Adoraríamos que você experimentasse e compartilhasse comentários conosco antes que esses recursos cheguem à fase estável. Use o comando composer require
com uma versão exata especificada para instalar a versão beta do pacakge stripe-php.
composer require stripe/stripe-php:v9.2.0-beta.1
Nota Pode haver alterações significativas entre as versões beta. Portanto, recomendamos fixar a versão do pacote em uma versão beta específica em seu arquivo compositor.json. Dessa forma, você pode instalar a mesma versão sempre sem interromper as alterações, a menos que esteja procurando intencionalmente pela versão beta mais recente.
É altamente recomendável ficar atento quando o recurso beta em que você está interessado passa de beta para estável, para que você possa passar de uma versão beta do SDK para a versão estável.
Se o seu recurso beta exigir o envio de um cabeçalho Stripe-Version
, defina a propriedade apiVersion
do objeto config
usando a função addBetaVersion
:
Stripe :: addBetaVersion ( " feature_beta " , " v3 " );
Se você quiser enviar uma solicitação para uma API não documentada (por exemplo, você está em uma versão beta privada), ou se preferir ignorar as definições de método na biblioteca e especificar os detalhes da sua solicitação diretamente, você pode usar o método rawRequest
na página StripeClient.
$ stripe = new Stripe StripeClient ( ' sk_test_xyz ' );
$ response = $ stripe -> rawRequest ( ' post ' , ' /v1/beta_endpoint ' , [
" caveat " : " emptor "
], [
" stripe_version " => " 2022-11_15 " ,
]);
// $response->body is a string, you can call $stripe->deserialize to get a StripeStripeObject.
$ obj = $ stripe -> deserialize ( $ response -> body );
// For GET requests, the params argument must be null, and you should write the query string explicitly.
$ get_response = $ stripe -> rawRequest ( ' get ' , ' /v1/beta_endpoint?caveat=emptor ' , null , [
" stripe_version " => " 2022-11_15 " ,
]);
Novos recursos e correções de bugs foram lançados na versão principal mais recente da biblioteca Stripe PHP. Se você estiver usando uma versão principal mais antiga, recomendamos que você atualize para a mais recente para usar os novos recursos e correções de bugs, incluindo aqueles para vulnerabilidades de segurança. As versões principais mais antigas do pacote continuarão disponíveis para uso, mas não receberão nenhuma atualização.
Obtenha o Compositor. Por exemplo, no Mac OS:
brew install composer
Instale dependências:
composer install
O conjunto de testes depende do stripe-mock, então certifique-se de buscá-lo e executá-lo em um terminal em segundo plano (o README do stripe-mock também contém instruções para instalação via Homebrew e outros métodos):
go install github.com/stripe/stripe-mock@latest
stripe-mock
Instale as dependências conforme mencionado acima (que resolverá o PHPUnit), então você pode executar o conjunto de testes:
./vendor/bin/phpunit
Ou para executar um arquivo de teste individual:
./vendor/bin/phpunit tests/Stripe/UtilTest.php
Atualize os certificados CA incluídos na versão Mozilla cURL:
./update_certs.php
A biblioteca usa PHP CS Fixer para formatação de código. O código deve ser formatado antes do envio dos PRs, caso contrário, o CI falhará. Execute o formatador com:
./vendor/bin/php-cs-fixer fix -v .
Você está escrevendo um plugin que integra o Stripe e incorpora nossa biblioteca? Então use a função setAppInfo
para identificar seu plugin. Por exemplo:
Stripe Stripe :: setAppInfo ( " MyAwesomePlugin " , " 1.2.34 " , " https://myawesomeplugin.info " );
O método deve ser chamado uma vez, antes de qualquer solicitação ser enviada à API. O segundo e terceiro parâmetros são opcionais.
Consulte o parágrafo "Problemas de compatibilidade SSL/TLS" acima para obter o contexto completo. Se quiser garantir que seu plugin possa ser usado em todos os sistemas, você deve adicionar uma opção de configuração para permitir que seus usuários escolham entre diferentes valores para CURLOPT_SSLVERSION
: none (padrão), CURL_SSLVERSION_TLSv1
e CURL_SSLVERSION_TLSv1_2
.