weboptic / stripe-php
Stripe PHP 库
Requires
- php: >=5.6.0
- ext-curl: *
- ext-json: *
- ext-mbstring: *
Requires (Dev)
- friendsofphp/php-cs-fixer: 3.5.0
- phpstan/phpstan: ^1.2
- phpunit/phpunit: ^5.7 || ^9.0
- squizlabs/php_codesniffer: ^3.3
- v7.133.2
- v7.113.1
- v7.113.0
- v7.112.0
- v7.111.0
- v7.110.0
- v7.109.0
- v7.108.0
- v7.107.0
- v7.106.0
- v7.105.0
- v7.104.0
- v7.103.0
- v7.102.0
- v7.101.0
- v7.100.0
- v7.99.0
- v7.98.0
- v7.97.0
- v7.96.0
- v7.95.0
- v7.94.0
- v7.93.0
- v7.92.0
- v7.91.0
- v7.90.0
- v7.89.0
- v7.88.0
- v7.87.0
- v7.86.0
- v7.85.0
- v7.84.0
- v7.83.0
- v7.82.0
- v7.81.0
- v7.80.0
- v7.79.0
- v7.78.0
- v7.77.0
- v7.76.0
- v7.75.0
- v7.74.0
- v7.73.0
- v7.72.0
- v7.71.0
- v7.70.0
- v7.69.0
- v7.68.0
- v7.67.0
- v7.66.1
- v7.66.0
- v7.65.0
- v7.64.0
- v7.63.0
- v7.62.0
- v7.61.0
- v7.60.0
- v7.59.0
- v7.58.0
- v7.57.0
- v7.56.0
- v7.55.0
- v7.54.0
- 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-latest-codegen
- dev-richardm-php8-support
- dev-richardm-update-support-contact
- dev-richardm-generated-test-suite
- dev-dcr-create-search-methods
- dev-dcr-php-search-impl
- dev-richardm-quote-list-computed-upfront-line-items
- dev-ob-update-ca-bundle
- dev-richardm-php-streaming
- dev-richardm-deprecate-travis
- dev-richardm-phpdoc-array-syntax
- dev-cjavilla/add-youtube-playlist-to-readme
- dev-ob-php-8
- dev-remi-fix-error-message
- dev-richardm/codegen-c08e2d9
- dev-richardm/codegen-c4ce6f6
- dev-richardm-release
This package is auto-updated.
Last update: 2024-09-16 14:23:45 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 \StripePhp\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,您应该考虑升级您的环境,因为这些版本分别在 2015 年 9 月和 2016 年 7 月之后已经过了生命周期的结束。否则,您仍然可以通过从我们的 发布页面 下载 stripe-php v6.43.1(zip,tar.gz)来使用 Stripe。这个版本将可以工作,但可能不支持自版本发布以来我们添加的某些新功能,升级 PHP 是最好的行动方案。
PHP 5.3
如果您正在使用 PHP 5.3,您应该升级您的环境,因为这个版本自 2014 年 8 月以来已经过了生命周期的结束。否则,您可以从我们的 发布页面 下载 v5.9.2(zip,tar.gz)。这个版本将继续与新版本的 Stripe API 一起工作,适用于所有常见的用途。
自定义请求超时
注意:我们不建议降低非只读调用(例如创建收费)的超时时间,因为即使您本地超时,Stripe端面的请求仍然可以完成。如果您正在降低这些调用中的超时时间,请确保使用幂等性令牌,以避免由于超时重试逻辑而执行两次相同的交易。
要修改请求超时(连接或总超时,以秒为单位),您需要让API客户端使用默认以外的CurlClient。您将在该CurlClient中设置超时。
// set up your tweaked Curl client $curl = new \StripePhp\HttpClient\CurlClient(); $curl->setTimeout(10); // default is \StripePhp\HttpClient\CurlClient::DEFAULT_TIMEOUT $curl->setConnectTimeout(5); // default is \StripePhp\HttpClient\CurlClient::DEFAULT_CONNECT_TIMEOUT echo $curl->getTimeout(); // 10 echo $curl->getConnectTimeout(); // 5 // tell Stripe to use the tweaked client \StripePhp\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 \StripePhp\HttpClient\CurlClient([CURLOPT_PROXY => 'proxy.local:80']); // tell Stripe to use the tweaked client \StripePhp\ApiRequestor::setHttpClient($curl);
或者,可以将一个可调用的函数传递给CurlClient构造函数,该函数根据请求输入返回上述数组。请参阅tests/CurlClientTest.php
中的testDefaultOptions()
以了解此行为的示例。请注意,在发送请求之前,在每次API请求的开始时会调用此可调用的函数。
配置记录器
该库仅进行最小化日志记录,但它可以配置为使用PSR-3
兼容的记录器,以便消息最终出现在那里而不是error_log
\StripePhp\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 \StripePhp\HttpClient\CurlClient([CURLOPT_SSLVERSION => CURL_SSLVERSION_TLSv1]); \StripePhp\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证书捆绑包,但您可以配置自己的捆绑包。
\StripePhp\Stripe::setCABundlePath("path/to/ca/bundle");
配置自动重试
该库可以配置为自动重试由于间歇性网络问题而失败的请求。
\StripePhp\Stripe::setMaxNetworkRetries(2);
在请求中添加幂等性密钥,以保证重试的安全性。
请求延迟遥测
默认情况下,该库会将请求延迟遥测发送到Stripe。这些数字有助于Stripe提高其API对所有用户的整体延迟。
如果您更喜欢,可以禁用此行为
\StripePhp\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/Stripe/UtilTest.php
从Mozilla cURL发布版更新捆绑的CA证书
./update_certs.php
该库使用PHP CS Fixer进行代码格式化。在提交PR之前必须对代码进行格式化,否则CI将失败。使用以下命令运行格式化程序:
./vendor/bin/php-cs-fixer fix -v .
注意插件开发者
您是否正在编写一个集成Stripe并嵌入我们库的插件?那么请使用setAppInfo
函数来识别您的插件。例如
\StripePhp\Stripe::setAppInfo("MyAwesomePlugin", "1.2.34", "https://myawesomeplugin.info");
该方法应只调用一次,在向API发送任何请求之前。第二个和第三个参数是可选的。
SSL / TLS配置选项
请参阅上文的“SSL / TLS兼容性问题”段落以获取完整上下文。如果您想确保您的插件可以在所有系统上使用,您应添加一个配置选项,让用户可以在不同的CURLOPT_SSLVERSION
值之间进行选择:无(默认),CURL_SSLVERSION_TLSv1
和CURL_SSLVERSION_TLSv1_2
。