trendspider / stripe-legacy
Stripe PHP 库
Requires
- php: >=5.3.3
- ext-curl: *
- ext-json: *
- ext-mbstring: *
Requires (Dev)
- phpunit/phpunit: ~4.0
- satooshi/php-coveralls: ~0.6.1
- squizlabs/php_codesniffer: ~2.0
This package is not auto-updated.
Last update: 2024-09-19 21:49:38 UTC
README
您可以在 https://stripe.com 注册 Stripe 账户。
要求
PHP 5.3.3 及以上版本。
Composer
您可以通过 Composer 安装绑定。运行以下命令
composer require stripe/stripe-php
要使用绑定,请使用 Composer 的 自动加载
require_once('vendor/autoload.php');
手动安装
如果您不希望使用 Composer,您可以下载最新的发行版 https://github.com/stripe/stripe-php/releases。然后,要使用绑定,包含 init.php
文件。
require_once('/path/to/stripe-php/init.php');
依赖关系
绑定需要以下扩展才能正常工作
如果您使用 Composer,这些依赖项应该会自动处理。如果您手动安装,请确保这些扩展可用。
入门
简单用法如下
\Stripe_Legacy\Stripe::setApiKey('sk_test_BQokikJOvBiI2HlWgH4olfQ2'); $charge = \Stripe_Legacy\Charge::create(array('amount' => 2000, 'currency' => 'usd', 'source' => 'tok_189fqt2eZvKYlo2CTGBeg6Uq' )); echo $charge;
文档
请参阅 https://stripe.com/docs/api 获取最新文档。
旧版本支持
如果您正在使用 PHP 5.2,您可以从中 zip,tar.gz) 从我们的 发布页面 下载 v1.18.0。这个版本将继续与新版本的 Stripe API 一起使用,适用于所有常见的用途。
您可以通过 require_once("/path/to/stripe-php/lib/Stripe.php");
包含此旧版本,并像下面这样使用它
Stripe::setApiKey('d8e8fca2dc0f896fd7cb4cb0031ba249'); $charge = Stripe_Charge::create(array('source' => 'tok_XXXXXXXX', 'amount' => 2000, 'currency' => 'usd')); echo $charge;
自定义请求超时
注意:我们不推荐降低非只读调用(例如创建费用)的超时时间,因为即使您本地超时,Stripe 端的请求仍可能完成。如果您正在降低这些调用的超时时间,请确保使用 幂等令牌 以避免由于超时重试逻辑而执行相同的交易两次。
要修改请求超时(连接或总超时,以秒为单位),您需要告诉 API 客户端使用除其默认值之外的 CurlClient。您将在该 CurlClient 中设置超时。
// set up your tweaked Curl client $curl = new \Stripe_Legacy\HttpClient\CurlClient(); $curl->setTimeout(10); // default is \Stripe_Legacy\HttpClient\CurlClient::DEFAULT_TIMEOUT $curl->setConnectTimeout(5); // default is \Stripe_Legacy\HttpClient\CurlClient::DEFAULT_CONNECT_TIMEOUT echo $curl->getTimeout(); // 10 echo $curl->getConnectTimeout(); // 5 // tell Stripe to use the tweaked client \Stripe_Legacy\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_Legacy\HttpClient\CurlClient(array(CURLOPT_PROXY => 'proxy.local:80')); // tell Stripe to use the tweaked client \Stripe_Legacy\ApiRequestor::setHttpClient($curl);
或者,可以将可调用的函数传递给 CurlClient 构造函数,该函数根据请求输入返回上述数组。有关此行为的示例,请参阅 tests/CurlClientTest.php
中的 testDefaultOptions()
。请注意,该可调用的函数在每次 API 请求发送之前都会被调用。
配置记录器
该库执行最少的日志记录,但可以通过配置与PSR-3
兼容的日志记录器来确保消息最终被记录到那里,而不是error_log
\Stripe_Legacy\Stripe::setLogger($logger);
访问响应数据
您可以通过调用getLastResponse()
在任何对象中访问最后API响应的数据。
$charge = \Stripe_Legacy\Charge::create(array('amount' => 2000, 'currency' => 'usd', 'source' => 'tok_visa')); echo $charge->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_Legacy\HttpClient\CurlClient(array(CURLOPT_SSLVERSION => CURL_SSLVERSION_TLSv1)); \Stripe_Legacy\ApiRequestor::setHttpClient($curl);
开发
安装依赖项
composer install
测试
按上述方法安装依赖项(这将解决PHPUnit),然后您可以运行测试套件
./vendor/bin/phpunit
或者运行单个测试文件
./vendor/bin/phpunit tests/UtilTest.php
注意插件开发者
您正在编写一个集成Stripe并嵌入我们库的插件吗?那么请使用setAppInfo
函数来识别您的插件。例如
\Stripe_Legacy\Stripe::setAppInfo("MyAwesomePlugin", "1.2.34", "https://myawesomeplugin.info");
该方法应只调用一次,在任何请求发送到API之前。第二个和第三个参数是可选的。
SSL / TLS配置选项
请参阅上述“SSL / TLS兼容性问题”段落以了解完整上下文。如果您想确保您的插件可以在所有系统上使用,您应添加一个配置选项,让用户可以选择不同的CURLOPT_SSLVERSION
值:无(默认),CURL_SSLVERSION_TLSv1
和CURL_SSLVERSION_TLSv1_2
。