shubhamdhaboya / stripe-php
Stripe PHP 库
Requires
- php: >=5.6.0
- ext-curl: *
- ext-json: *
- ext-mbstring: *
Requires (Dev)
- friendsofphp/php-cs-fixer: 2.16.1
- php-coveralls/php-coveralls: ^2.1
- phpunit/phpunit: ^5.7
- squizlabs/php_codesniffer: ^3.3
- symfony/process: ~3.4
- v7.53.1
- v7.53.0
- v7.52.0
- v7.51.0
- v7.50.0
- v7.49.0
- v7.48.0
- v7.47.0
- v7.46.1
- v7.46.0
- v7.45.0
- v7.44.0
- v7.43.0
- v7.42.0
- v7.41.1
- v7.41.0
- v7.40.0
- v7.39.0
- v7.38.0
- v7.37.2
- v7.37.1
- v7.37.0
- v7.36.2
- v7.36.1
- v7.36.0
- v7.35.0
- v7.34.0
- v7.33.1
- v7.33.0
- v7.32.1
- v7.32.0
- v7.31.0
- v7.30.0
- v7.29.0
- v7.28.1
- v7.28.0
- v7.27.3
- v7.27.2
- v7.27.1
- v7.27.0
- v7.26.0
- v7.25.0
- v7.24.0
- v7.23.0
- v7.22.0
- v7.21.1
- v7.21.0
- v7.20.0
- v7.19.1
- v7.19.0
- v7.18.0
- v7.17.0
- v7.16.0
- v7.15.0
- v7.14.2
- v7.14.1
- v7.14.0
- v7.13.0
- v7.12.0
- v7.11.0
- v7.10.0
- v7.9.0
- v7.8.0
- v7.7.1
- v7.7.0
- v7.6.0
- v7.5.0
- v7.4.0
- v7.3.1
- v7.3.0
- v7.2.2
- v7.2.1
- v7.2.0
- v7.1.1
- v7.1.0
- v7.0.2
- v7.0.1
- v7.0.0
- v6.43.1
- v6.43.0
- v6.42.0
- v6.41.0
- v6.40.0
- v6.39.2
- v6.39.1
- v6.39.0
- v6.38.0
- v6.37.2
- v6.37.1
- v6.37.0
- v6.36.0
- v6.35.2
- v6.35.1
- v6.35.0
- v6.34.6
- v6.34.5
- v6.34.4
- v6.34.3
- v6.34.2
- v6.34.1
- v6.34.0
- v6.33.0
- v6.32.1
- v6.32.0
- v6.31.5
- v6.31.4
- v6.31.3
- v6.31.2
- v6.31.1
- v6.31.0
- v6.30.5
- v6.30.4
- v6.30.3
- v6.30.2
- v6.30.1
- v6.30.0
- v6.29.3
- v6.29.2
- v6.29.1
- v6.29.0
- v6.28.1
- v6.28.0
- v6.27.0
- v6.26.0
- v6.25.0
- v6.24.0
- v6.23.0
- v6.22.1
- v6.22.0
- v6.21.1
- v6.21.0
- v6.20.1
- v6.20.0
- v6.19.5
- v6.19.4
- v6.19.3
- v6.19.2
- v6.19.1
- v6.19.0
- v6.18.0
- v6.17.2
- v6.17.1
- v6.17.0
- v6.16.0
- v6.15.0
- v6.14.0
- v6.13.0
- v6.12.0
- v6.11.0
- v6.10.4
- v6.10.3
- v6.10.2
- v6.10.1
- v6.10.0
- v6.9.0
- v6.8.2
- v6.8.1
- v6.8.0
- v6.7.4
- v6.7.3
- v6.7.2
- v6.7.1
- v6.7.0
- v6.6.0
- v6.5.0
- v6.4.2
- v6.4.1
- v6.4.0
- v6.3.2
- v6.3.1
- v6.3.0
- v6.2.0
- v6.1.0
- v6.0.0
- v5.9.2
- v5.9.1
- v5.9.0
- v5.8.0
- v5.7.0
- v5.6.0
- v5.5.1
- v5.5.0
- v5.4.0
- v5.3.0
- v5.2.3
- v5.2.2
- v5.2.1
- v5.2.0
- v5.1.3
- v5.1.2
- v5.1.1
- v5.1.0
- v5.0.0
- v4.13.0
- v4.12.0
- v4.11.0
- v4.10.0
- v4.9.1
- v4.9.0
- v4.8.1
- v4.8.0
- v4.7.0
- v4.6.0
- v4.5.1
- v4.5.0
- v4.4.2
- v4.4.1
- v4.4.0
- v4.3.0
- v4.2.0
- v4.1.1
- v4.1.0
- v4.0.1
- v4.0.0
- v3.23.0
- v3.22.0
- v3.21.0
- v3.20.0
- v3.19.0
- v3.18.0
- v3.17.1
- v3.17.0
- v3.16.0
- v3.15.0
- v3.14.3
- v3.14.2
- v3.14.1
- v3.14.0
- v3.13.0
- v3.12.1
- v3.12.0
- v3.11.0
- v3.10.1
- v3.10.0
- v3.9.2
- v3.9.1
- v3.9.0
- v3.8.0
- v3.7.1
- v3.7.0
- v3.6.0
- v3.5.0
- v3.4.0
- v3.3.0
- v3.2.0
- v3.1.0
- v3.0.0
- v2.3.0
- v2.2.0
- v2.1.4
- v2.1.3
- v2.1.2
- v2.1.1
- v2.1.0
- dev-master / 2.0.x-dev
- v2.0.1
- v2.0.0
- v1.18.0
- v1.17.5
- v1.17.4
- v1.17.3
- v1.17.2
- v1.17.1
- v1.17.0
- v1.16.0
- v1.15.0
- v1.14.1
- v1.13.1
- v1.13.0
- v1.12.0
- v1.11.0
- v1.10.1
- v1.9.1
- v1.9.0
- v1.8.3
- v1.8.2
- v1.8.1
- v1.8.0
- v1.7.15
- v1.7.14
- v1.7.13
- v1.7.12
- v1.7.11
- v1.7.10
- v1.7.9
- v1.7.8
- v1.7.7
- v1.7.6
- v1.7.5
- v1.7.4
- v1.7.3
- v1.7.2
- v1.7.1
- v1.7.0
- dev-richardm-release
This package is auto-updated.
Last update: 2024-09-15 16:03:39 UTC
README
Stripe PHP 库提供了从 PHP 语言编写的应用程序中方便地访问 Stripe API 的方法。它包括一组预定义的类,用于初始化 API 资源,这些类可以从 API 响应中动态初始化,这使得它与 Stripe API 的多种版本兼容。
要求
PHP 5.6.0 及以上版本。
Composer
您可以通过 Composer 安装绑定。运行以下命令
composer require stripe/stripe-php
要使用绑定,请使用 Composer 的 自动加载
require_once('vendor/autoload.php');
手动安装
如果您不想使用 Composer,可以下载最新的版本 [链接]。然后,为了使用绑定,请包含 init.php
文件。
require_once('/path/to/stripe-php/init.php');
依赖
绑定需要以下扩展才能正常工作
如果您使用 Composer,这些依赖项应自动处理。如果您手动安装,请确保这些扩展可用。
入门
简单用法如下
$stripe = new \Stripe\StripeClient('sk_test_BQokikJOvBiI2HlWgH4olfQ2'); $customer = $stripe->customers->create([ 'description' => 'example customer', 'email' => 'email@example.com', 'payment_method' => 'pm_card_visa', ]); echo $customer;
客户端/服务模式与旧模式
您可以使用在版本 7.33.0 之前使用的旧集成模式。请参阅 迁移指南 了解向后兼容客户端/服务模式的变化。
文档
请参阅 PHP API 文档。
旧版本支持
PHP 5.4 & 5.5
如果您正在使用 PHP 5.4 或 5.5,可以从我们的 发布页面 下载 v6.21.1(zip,tar.gz)。此版本将继续与 Stripe API 的新版本在所有常见用途上工作。
PHP 5.3
如果您正在使用 PHP 5.3,可以从我们的 发布页面 下载 v5.9.2(zip,tar.gz)。此版本将继续与 Stripe API 的新版本在所有常见用途上工作。
自定义请求超时
注意:我们不推荐减少非只读调用(例如,创建费用)的超时时间,因为即使您本地超时,Stripe 端的请求仍然可以完成。如果您正在减少这些调用中的超时时间,请确保使用 幂等令牌,以避免由于超时重试逻辑而执行相同的交易两次。
要修改请求超时(连接或总时间,以秒为单位),您需要告诉 API 客户端使用非默认的 CurlClient。您将在该 CurlClient 中设置超时。
// set up your tweaked Curl client $curl = new \Stripe\HttpClient\CurlClient(); $curl->setTimeout(10); // default is \Stripe\HttpClient\CurlClient::DEFAULT_TIMEOUT $curl->setConnectTimeout(5); // default is \Stripe\HttpClient\CurlClient::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
自定义 cURL 选项(例如,代理)
需要为您的请求设置代理吗?将所需的 CURLOPT_*
数组传递给 CurlClient 构造函数,使用与 curl_stopt_array()
相同的语法。这将设置 SDK 每次HTTP请求的默认 cURL 选项,尽管即使在此处设置,许多更常见的选项(例如超时;参见上方如何设置它们)也将被客户端覆盖。
// 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);
或者,可以将一个可调用的函数传递给 CurlClient 构造函数,该函数根据请求输入返回上述数组。参见 tests/CurlClientTest.php
中的 testDefaultOptions()
以获取此行为的示例。请注意,可调用的函数在每个 API 请求开始时被调用,在请求发送之前。
配置日志记录器
库执行了最少的日志记录,但可以配置为使用与 PSR-3
兼容的日志记录器,以便消息最终出现在那里而不是 error_log
。
\Stripe\Stripe::setLogger($logger);
访问响应数据
您可以通过 getLastResponse()
在任何对象上访问最后一次 API 响应中的数据。
$customer = $stripe->customers->create([ 'description' => 'example customer', ]); echo $customer->getLastResponse()->headers['Request-Id'];
SSL / TLS 兼容性问题
Stripe 的 API 现在要求所有连接都使用 TLS 1.2。一些系统(特别是某些较旧的 CentOS 和 RHEL 版本)能够使用 TLS 1.2,但默认情况下将使用 TLS 1.0 或 1.1。在这种情况下,您将收到一个带有以下错误消息的 invalid_request_error
:“Stripe 不再支持使用 TLS 1.0 发送的 API 请求。请使用 TLS 1.2 或更高版本的 HTTPS 连接。您可以在 https://stripe.com/blog/upgrading-tls 上了解更多信息。”。
建议的措施是升级您的 cURL 和 OpenSSL 包,以便默认使用 TLS 1.2,但如果这不可能实现,您可能可以通过将 CURLOPT_SSLVERSION
选项设置为 CURL_SSLVERSION_TLSv1
或 CURL_SSLVERSION_TLSv1_2
来解决这个问题。
$curl = new \Stripe\HttpClient\CurlClient([CURLOPT_SSLVERSION => CURL_SSLVERSION_TLSv1]); \Stripe\ApiRequestor::setHttpClient($curl);
按请求配置
对于需要在整个进程生命周期中使用多个密钥的应用程序,例如使用 Stripe Connect 的应用程序,也可以设置每个请求的密钥和/或账户。
$customers = $stripe->customers->all([],[ 'api_key' => 'sk_test_...', 'stripe_account' => 'acct_...' ]); $stripe->customers->retrieve('cus_123456789', [], [ 'api_key' => 'sk_test_...', 'stripe_account' => 'acct_...' ]);
配置 CA 套件
默认情况下,库将使用其自己的已知 CA 证书内部套件,但也可以配置您自己的套件。
\Stripe\Stripe::setCABundlePath("path/to/ca/bundle");
配置自动重试
库可以配置为自动重试因间歇性网络问题而失败的请求。
\Stripe\Stripe::setMaxNetworkRetries(2);
在请求中添加 幂等性键,以确保重试是安全的。
请求延迟遥测
默认情况下,库会将请求延迟遥测发送到 Stripe。这些数字有助于 Stripe 提高其 API 的整体延迟。
如果您愿意,可以禁用此行为。
\Stripe\Stripe::setEnableTelemetry(false);
开发
获取 Composer。例如,在 Mac OS 上
brew install composer
安装依赖项
composer install
测试套件依赖于 stripe-mock,因此请确保从后台终端获取并运行它(stripe-mock 的 README 还包含通过 Homebrew 和其他方法安装的说明)
go get -u github.com/stripe/stripe-mock stripe-mock
如上所述安装依赖项(这将解决 PHPUnit),然后您可以运行测试套件
./vendor/bin/phpunit
或者运行单个测试文件
./vendor/bin/phpunit tests/UtilTest.php
从 Mozilla cURL 发布 更新捆绑的 CA 证书
./update_certs.php
该库使用PHP CS Fixer进行代码格式化。在提交PR之前,代码必须格式化,否则CI将失败。使用以下命令运行格式化工具:
./vendor/bin/php-cs-fixer fix -v .
注意插件开发者
您是否正在编写一个集成Stripe并嵌入我们库的插件?那么请使用setAppInfo
函数来识别您的插件。例如
\Stripe\Stripe::setAppInfo("MyAwesomePlugin", "1.2.34", "https://myawesomeplugin.info");
该方法应该在发送任何请求到API之前调用一次。第二个和第三个参数是可选的。
SSL / TLS配置选项
请参阅上述“SSL / TLS兼容性问题”段落以获取完整上下文。如果您想确保您的插件可以在所有系统上使用,您应该添加一个配置选项,让用户可以选择不同的CURLOPT_SSLVERSION
值:无(默认),CURL_SSLVERSION_TLSv1
和CURL_SSLVERSION_TLSv1_2
。