La bibliothèque Stripe PHP offre un accès pratique à l'API Stripe à partir d'applications écrites en langage PHP. Il comprend un ensemble prédéfini de classes pour les ressources API qui s'initialisent dynamiquement à partir des réponses API, ce qui le rend compatible avec une large gamme de versions de l'API Stripe.
PHP 5.6.0 et versions ultérieures.
Vous pouvez installer les liaisons via Composer. Exécutez la commande suivante :
composer require stripe/stripe-php
Pour utiliser les liaisons, utilisez le chargement automatique de Composer :
require_once ' vendor/autoload.php ' ;
Si vous ne souhaitez pas utiliser Composer, vous pouvez télécharger la dernière version. Ensuite, pour utiliser les liaisons, incluez le fichier init.php
.
require_once ' /path/to/stripe-php/init.php ' ;
Les liaisons nécessitent les extensions suivantes pour fonctionner correctement :
curl
, bien que vous puissiez utiliser votre propre client non-cURL si vous préférezjson
mbstring
(chaîne multi-octets)Si vous utilisez Composer, ces dépendances doivent être gérées automatiquement. Si vous installez manuellement, vous devez vous assurer que ces extensions sont disponibles.
Une utilisation simple ressemble à :
$ stripe = new Stripe StripeClient ( ' sk_test_BQokikJOvBiI2HlWgH4olfQ2 ' );
$ customer = $ stripe -> customers -> create ([
' description ' => ' example customer ' ,
' email ' => ' [email protected] ' ,
' payment_method ' => ' pm_card_visa ' ,
]);
echo $ customer ;
Vous pouvez continuer à utiliser les anciens modèles d'intégration utilisés avant la version 7.33.0. Consultez le guide de migration pour connaître les modifications du modèle client/services rétrocompatibles.
Voir la documentation de l'API PHP.
Regardez des démonstrations vidéo expliquant comment utiliser la bibliothèque.
Si vous utilisez PHP 5.4 ou 5.5, vous devriez envisager de mettre à niveau votre environnement car ces versions sont en fin de vie depuis septembre 2015 et juillet 2016 respectivement. Sinon, vous pouvez toujours utiliser Stripe en téléchargeant stripe-php v6.43.1 (zip, tar.gz) depuis notre page de versions. Cette version fonctionnera mais pourrait ne pas prendre en charge les fonctionnalités récentes que nous avons ajoutées depuis la sortie de la version et la mise à niveau de PHP est la meilleure solution.
Si vous utilisez PHP 5.3, vous devez mettre à jour votre environnement car cette version est en fin de vie depuis août 2014. Sinon, vous pouvez télécharger la v5.9.2 (zip, tar.gz) depuis notre page des versions. Cette version continuera à fonctionner avec les nouvelles versions de l'API Stripe pour toutes les utilisations courantes.
Remarque Nous ne recommandons pas de réduire le délai d'expiration pour les appels non en lecture seule (par exemple, création de frais), car même si vous expirez localement, la requête du côté de Stripe peut toujours se terminer. Si vous réduisez les délais d'attente sur ces appels, veillez à utiliser des jetons d'idempotence pour éviter d'exécuter deux fois la même transaction en raison d'une logique de nouvelle tentative d'expiration.
Pour modifier les délais d'attente des requêtes (connexion ou total, en secondes), vous devrez indiquer au client API d'utiliser un CurlClient autre que celui par défaut. Vous définirez les délais d'attente dans ce 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
Besoin de définir un proxy pour vos requêtes ? Transmettez le tableau CURLOPT_*
requis au constructeur CurlClient, en utilisant la même syntaxe que curl_stopt_array()
. Cela définira les options cURL par défaut pour chaque requête HTTP effectuée par le SDK, bien que de nombreuses options plus courantes (par exemple les délais d'attente ; voir ci-dessus pour savoir comment les définir) seront remplacées par le client même si elles sont définies ici.
// 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 );
Alternativement, un appelable peut être transmis au constructeur CurlClient qui renvoie le tableau ci-dessus en fonction des entrées de la requête. Voir testDefaultOptions()
dans tests/CurlClientTest.php
pour un exemple de ce comportement. Notez que l'appelable est appelé au début de chaque requête API, avant l'envoi de la requête.
La bibliothèque effectue une journalisation minimale, mais elle peut être configurée avec un enregistreur compatible PSR-3
afin que les messages finissent là au lieu de error_log
:
Stripe Stripe :: setLogger ( $ logger );
Vous pouvez accéder aux données de la dernière réponse API sur n'importe quel objet via getLastResponse()
.
$ customer = $ stripe -> customers -> create ([
' description ' => ' example customer ' ,
]);
echo $ customer -> getLastResponse ()-> headers [ ' Request-Id ' ];
L'API de Stripe exige désormais que toutes les connexions utilisent TLS 1.2. Certains systèmes (notamment certaines anciennes versions de CentOS et RHEL) sont capables d'utiliser TLS 1.2 mais utiliseront TLS 1.0 ou 1.1 par défaut. Dans ce cas, vous obtiendrez une invalid_request_error
avec le message d'erreur suivant : "Stripe ne prend plus en charge les requêtes API effectuées avec TLS 1.0. Veuillez établir des connexions HTTPS avec TLS 1.2 ou version ultérieure. Vous pouvez en savoir plus à ce sujet sur https://stripe .com/blog/upgrading-tls.".
La marche à suivre recommandée consiste à mettre à niveau vos packages cURL et OpenSSL afin que TLS 1.2 soit utilisé par défaut, mais si cela n'est pas possible, vous pourrez peut-être résoudre le problème en définissant l'option CURLOPT_SSLVERSION
sur CURL_SSLVERSION_TLSv1
ou CURL_SSLVERSION_TLSv1_2
:
$ curl = new Stripe HttpClient CurlClient ([ CURLOPT_SSLVERSION => CURL_SSLVERSION_TLSv1 ]);
Stripe ApiRequestor :: setHttpClient ( $ curl );
Pour les applications qui doivent utiliser plusieurs clés pendant la durée de vie d'un processus, comme celle qui utilise Stripe Connect, il est également possible de définir une clé et/ou un compte par requête :
$ customers = $ stripe -> customers -> all ([],[
' api_key ' => ' sk_test_... ' ,
' stripe_account ' => ' acct_... '
]);
$ stripe -> customers -> retrieve ( ' cus_123456789 ' , [], [
' api_key ' => ' sk_test_... ' ,
' stripe_account ' => ' acct_... '
]);
Par défaut, la bibliothèque utilisera son propre ensemble interne de certificats CA connus, mais il est possible de configurer le vôtre :
Stripe Stripe :: setCABundlePath ( " path/to/ca/bundle " );
La bibliothèque peut être configurée pour réessayer automatiquement les requêtes qui échouent en raison d'un problème de réseau intermittent :
Stripe Stripe :: setMaxNetworkRetries ( 2 );
Des clés d'idempotence sont ajoutées aux demandes pour garantir que les nouvelles tentatives sont sûres.
Par défaut, la bibliothèque envoie des télémétries à Stripe concernant la latence des requêtes et l'utilisation des fonctionnalités. Ces chiffres aident Stripe à améliorer la latence globale de son API pour tous les utilisateurs et à améliorer les fonctionnalités populaires.
Vous pouvez désactiver ce comportement si vous préférez :
Stripe Stripe :: setEnableTelemetry ( false );
Stripe propose des fonctionnalités en phase bêta accessibles via la version bêta de ce package. Nous serions ravis que vous les essayiez et partagiez vos commentaires avec nous avant que ces fonctionnalités n’atteignent la phase stable. Utilisez la commande composer require
avec une version exacte spécifiée pour installer la version bêta du package stripe-php.
composer require stripe/stripe-php:v9.2.0-beta.1
Remarque Il peut y avoir des changements importants entre les versions bêta. Par conséquent, nous vous recommandons d'épingler la version du package sur une version bêta spécifique dans votre fichier composer.json. De cette façon, vous pouvez installer la même version à chaque fois sans interrompre les modifications, sauf si vous recherchez intentionnellement la dernière version bêta.
Nous vous recommandons fortement de surveiller le moment où la fonctionnalité bêta qui vous intéresse passe de la version bêta à la version stable afin que vous puissiez passer de l'utilisation d'une version bêta du SDK à la version stable.
Si votre fonctionnalité bêta nécessite l'envoi d'un en-tête Stripe-Version
, définissez la propriété apiVersion
de l'objet config
à l'aide de la fonction addBetaVersion
:
Stripe :: addBetaVersion ( " feature_beta " , " v3 " );
Si vous souhaitez envoyer une requête à une API non documentée (par exemple vous êtes dans une version bêta privée), ou si vous préférez contourner les définitions de méthodes dans la bibliothèque et spécifier directement les détails de votre requête, vous pouvez utiliser la méthode rawRequest
sur le 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 " ,
]);
De nouvelles fonctionnalités et corrections de bugs sont publiées sur la dernière version majeure de la bibliothèque Stripe PHP. Si vous utilisez une ancienne version majeure, nous vous recommandons de mettre à niveau vers la dernière version afin d'utiliser les nouvelles fonctionnalités et corrections de bugs, y compris celles liées aux failles de sécurité. Les anciennes versions majeures du package continueront d’être disponibles, mais ne recevront aucune mise à jour.
Obtenez Compositeur. Par exemple, sous Mac OS :
brew install composer
Installer les dépendances :
composer install
La suite de tests dépend de stripe-mock, alors assurez-vous de la récupérer et de l'exécuter à partir d'un terminal en arrière-plan (le README de stripe-mock contient également des instructions pour l'installation via Homebrew et d'autres méthodes) :
go install github.com/stripe/stripe-mock@latest
stripe-mock
Installez les dépendances comme mentionné ci-dessus (ce qui résoudra PHPUnit), puis vous pourrez exécuter la suite de tests :
./vendor/bin/phpunit
Ou pour exécuter un fichier de test individuel :
./vendor/bin/phpunit tests/Stripe/UtilTest.php
Mettez à jour les certificats CA fournis à partir de la version Mozilla cURL :
./update_certs.php
La bibliothèque utilise PHP CS Fixer pour le formatage du code. Le code doit être formaté avant que les PR ne soient soumis, sinon CI échouera. Exécutez le formateur avec :
./vendor/bin/php-cs-fixer fix -v .
Êtes-vous en train d'écrire un plugin qui intègre Stripe et embarque notre bibliothèque ? Veuillez ensuite utiliser la fonction setAppInfo
pour identifier votre plugin. Par exemple:
Stripe Stripe :: setAppInfo ( " MyAwesomePlugin " , " 1.2.34 " , " https://myawesomeplugin.info " );
La méthode doit être appelée une fois, avant qu'une requête ne soit envoyée à l'API. Les deuxième et troisième paramètres sont facultatifs.
Voir le paragraphe « Problèmes de compatibilité SSL/TLS » ci-dessus pour le contexte complet. Si vous voulez vous assurer que votre plugin peut être utilisé sur tous les systèmes, vous devez ajouter une option de configuration pour permettre à vos utilisateurs de choisir entre différentes valeurs pour CURLOPT_SSLVERSION
: none (par défaut), CURL_SSLVERSION_TLSv1
et CURL_SSLVERSION_TLSv1_2
.