La biblioteca PHP de Stripe proporciona un acceso conveniente a la API de Stripe desde aplicaciones escritas en el lenguaje PHP. Incluye un conjunto predefinido de clases para recursos API que se inicializan dinámicamente a partir de respuestas API, lo que lo hace compatible con una amplia gama de versiones de Stripe API.
PHP 5.6.0 y posteriores.
Puede instalar los enlaces a través de Composer. Ejecute el siguiente comando:
composer require stripe/stripe-php
Para usar los enlaces, use la carga automática de Composer:
require_once ' vendor/autoload.php ' ;
Si no desea utilizar Composer, puede descargar la última versión. Luego, para usar los enlaces, incluya el archivo init.php
.
require_once ' /path/to/stripe-php/init.php ' ;
Las fijaciones requieren las siguientes extensiones para funcionar correctamente:
curl
, aunque puedes usar tu propio cliente que no sea cURL si lo prefieresjson
mbstring
(cadena multibyte)Si usa Composer, estas dependencias deben manejarse automáticamente. Si instala manualmente, querrá asegurarse de que estas extensiones estén disponibles.
El uso simple parece:
$ stripe = new Stripe StripeClient ( ' sk_test_BQokikJOvBiI2HlWgH4olfQ2 ' );
$ customer = $ stripe -> customers -> create ([
' description ' => ' example customer ' ,
' email ' => ' [email protected] ' ,
' payment_method ' => ' pm_card_visa ' ,
]);
echo $ customer ;
Puede continuar usando los patrones de integración heredados utilizados antes de la versión 7.33.0. Revise la guía de migración para conocer los cambios en los patrones de clientes/servicios compatibles con versiones anteriores.
Consulte los documentos de la API de PHP.
Vea demostraciones en vídeo que cubren cómo utilizar la biblioteca.
Si está utilizando PHP 5.4 o 5.5, debería considerar actualizar su entorno, ya que esas versiones ya no están disponibles desde septiembre de 2015 y julio de 2016, respectivamente. De lo contrario, aún puedes usar Stripe descargando stripe-php v6.43.1 (zip, tar.gz) desde nuestra página de lanzamientos. Esta versión funcionará, pero es posible que no admita las funciones recientes que agregamos desde que se lanzó la versión y actualizar PHP es el mejor curso de acción.
Si está utilizando PHP 5.3, debe actualizar su entorno ya que esta versión ya no está disponible desde agosto de 2014. De lo contrario, puede descargar la versión 5.9.2 (zip, tar.gz) desde nuestra página de versiones. Esta versión seguirá funcionando con nuevas versiones de la API de Stripe para todos los usos comunes.
Nota No recomendamos disminuir el tiempo de espera para llamadas que no son de solo lectura (por ejemplo, creación de cargos), ya que incluso si se agota el tiempo de espera localmente, la solicitud por parte de Stripe aún puede completarse. Si está reduciendo los tiempos de espera en estas llamadas, asegúrese de usar tokens de idempotencia para evitar ejecutar la misma transacción dos veces como resultado de la lógica de reintento del tiempo de espera.
Para modificar los tiempos de espera de las solicitudes (de conexión o totales, en segundos), deberá indicarle al cliente API que utilice un CurlClient distinto del predeterminado. Establecerás los tiempos de espera en ese 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
¿Necesita configurar un proxy para sus solicitudes? Pase la matriz CURLOPT_*
requerida al constructor CurlClient, usando la misma sintaxis que curl_stopt_array()
. Esto establecerá las opciones de cURL predeterminadas para cada solicitud HTTP realizada por el SDK, aunque el cliente anulará muchas opciones más comunes (por ejemplo, tiempos de espera; consulte más arriba sobre cómo configurarlas) incluso si se configuran aquí.
// 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, se puede pasar un elemento invocable al constructor CurlClient que devuelve la matriz anterior en función de las entradas de la solicitud. Consulte testDefaultOptions()
en tests/CurlClientTest.php
para ver un ejemplo de este comportamiento. Tenga en cuenta que el invocable se llama al comienzo de cada solicitud de API, antes de enviar la solicitud.
La biblioteca realiza un registro mínimo, pero se puede configurar con un registrador compatible con PSR-3
para que los mensajes terminen allí en lugar de error_log
:
Stripe Stripe :: setLogger ( $ logger );
Puede acceder a los datos de la última respuesta API en cualquier objeto a través de getLastResponse()
.
$ customer = $ stripe -> customers -> create ([
' description ' => ' example customer ' ,
]);
echo $ customer -> getLastResponse ()-> headers [ ' Request-Id ' ];
La API de Stripe ahora requiere que todas las conexiones utilicen TLS 1.2. Algunos sistemas (sobre todo algunas versiones anteriores de CentOS y RHEL) son capaces de utilizar TLS 1.2, pero utilizarán TLS 1.0 o 1.1 de forma predeterminada. En este caso, obtendría un invalid_request_error
con el siguiente mensaje de error: "Stripe ya no admite solicitudes de API realizadas con TLS 1.0. Inicie conexiones HTTPS con TLS 1.2 o posterior. Puede obtener más información sobre esto en https://stripe .com/blog/upgrading-tls".
El curso de acción recomendado es actualizar sus paquetes cURL y OpenSSL para que se use TLS 1.2 de forma predeterminada, pero si eso no es posible, es posible que pueda resolver el problema configurando la opción CURLOPT_SSLVERSION
en CURL_SSLVERSION_TLSv1
o CURL_SSLVERSION_TLSv1_2
:
$ curl = new Stripe HttpClient CurlClient ([ CURLOPT_SSLVERSION => CURL_SSLVERSION_TLSv1 ]);
Stripe ApiRequestor :: setHttpClient ( $ curl );
Para las aplicaciones que necesitan usar varias claves durante la vida de un proceso, como una que usa Stripe Connect, también es posible configurar una clave y/o cuenta por solicitud:
$ customers = $ stripe -> customers -> all ([],[
' api_key ' => ' sk_test_... ' ,
' stripe_account ' => ' acct_... '
]);
$ stripe -> customers -> retrieve ( ' cus_123456789 ' , [], [
' api_key ' => ' sk_test_... ' ,
' stripe_account ' => ' acct_... '
]);
De forma predeterminada, la biblioteca utilizará su propio paquete interno de certificados de CA conocidos, pero es posible configurar el suyo propio:
Stripe Stripe :: setCABundlePath ( " path/to/ca/bundle " );
La biblioteca se puede configurar para reintentar automáticamente las solicitudes que fallan debido a un problema de red intermitente:
Stripe Stripe :: setMaxNetworkRetries ( 2 );
Se agregan claves de idempotencia a las solicitudes para garantizar que los reintentos sean seguros.
De forma predeterminada, la biblioteca envía telemetría a Stripe con respecto a la latencia de las solicitudes y el uso de funciones. Estos números ayudan a Stripe a mejorar la latencia general de su API para todos los usuarios y a mejorar las funciones populares.
Puede desactivar este comportamiento si lo prefiere:
Stripe Stripe :: setEnableTelemetry ( false );
Stripe tiene funciones en la fase beta a las que se puede acceder a través de la versión beta de este paquete. Nos encantaría que las probara y compartiera sus comentarios con nosotros antes de que estas funciones lleguen a la fase estable. Utilice el comando composer require
con una versión exacta especificada para instalar la versión beta del paquete stripe-php.
composer require stripe/stripe-php:v9.2.0-beta.1
Nota Puede haber cambios importantes entre las versiones beta. Por lo tanto, recomendamos fijar la versión del paquete a una versión beta específica en su archivo compositor.json. De esta manera, puede instalar la misma versión cada vez sin cambios importantes, a menos que esté buscando intencionalmente la última versión beta.
Recomendamos encarecidamente estar atento a cuándo la función beta que le interesa pasa de beta a estable para que pueda pasar de utilizar una versión beta del SDK a la versión estable.
Si su función beta requiere que se envíe un encabezado Stripe-Version
, establezca la propiedad apiVersion
del objeto config
mediante la función addBetaVersion
:
Stripe :: addBetaVersion ( " feature_beta " , " v3 " );
Si desea enviar una solicitud a una API no documentada (por ejemplo, si está en una versión beta privada), o si prefiere omitir las definiciones de métodos en la biblioteca y especificar los detalles de su solicitud directamente, puede usar el método rawRequest
en el Cliente Stripe.
$ 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 " ,
]);
Se publican nuevas funciones y correcciones de errores en la última versión principal de la biblioteca PHP de Stripe. Si tiene una versión principal anterior, le recomendamos que actualice a la última para poder utilizar las nuevas funciones y correcciones de errores, incluidas las de vulnerabilidades de seguridad. Las versiones principales más antiguas del paquete seguirán estando disponibles para su uso, pero no recibirán ninguna actualización.
Obtener compositor. Por ejemplo, en Mac OS:
brew install composer
Instalar dependencias:
composer install
El conjunto de pruebas depende de stripe-mock, así que asegúrese de buscarlo y ejecutarlo desde una terminal en segundo plano (el README de stripe-mock también contiene instrucciones para instalar a través de Homebrew y otros métodos):
go install github.com/stripe/stripe-mock@latest
stripe-mock
Instale las dependencias como se mencionó anteriormente (que resolverán PHPUnit), luego podrá ejecutar el conjunto de pruebas:
./vendor/bin/phpunit
O para ejecutar un archivo de prueba individual:
./vendor/bin/phpunit tests/Stripe/UtilTest.php
Actualice los certificados de CA incluidos desde la versión Mozilla cURL:
./update_certs.php
La biblioteca utiliza PHP CS Fixer para formatear el código. El código debe formatearse antes de enviar los RP; de lo contrario, la CI fallará. Ejecute el formateador con:
./vendor/bin/php-cs-fixer fix -v .
¿Estás escribiendo un complemento que integre Stripe e incorpore nuestra biblioteca? Luego utilice la función setAppInfo
para identificar su complemento. Por ejemplo:
Stripe Stripe :: setAppInfo ( " MyAwesomePlugin " , " 1.2.34 " , " https://myawesomeplugin.info " );
El método debe llamarse una vez, antes de enviar cualquier solicitud a la API. El segundo y tercer parámetro son opcionales.
Consulte el párrafo anterior "Problemas de compatibilidad SSL/TLS" para obtener el contexto completo. Si desea asegurarse de que su complemento se pueda utilizar en todos los sistemas, debe agregar una opción de configuración para permitir que sus usuarios elijan entre diferentes valores para CURLOPT_SSLVERSION
: ninguno (predeterminado), CURL_SSLVERSION_TLSv1
y CURL_SSLVERSION_TLSv1_2
.