trendspider/stripe-php

Stripe PHP 库

v7.128.0 2022-05-05 17:18 UTC

This package is not auto-updated.

Last update: 2024-09-21 20:31:25 UTC


README

Build Status Latest Stable Version Total Downloads License

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');

依赖项

绑定需要以下扩展才能正常工作

  • curl,尽管您可以选择使用自己的非 cURL 客户端
  • json
  • mbstring(多字节字符串)

如果您使用 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,您应该考虑升级您的环境,因为这些版本自 2015 年 9 月和 2016 年 7 月以来已经过了生命周期的结束。否则,您仍然可以通过从我们的 发布页面 下载 stripe-php v6.43.1(ziptar.gz)来使用 Stripe。这个版本将正常工作,但可能不会支持自发布以来我们添加的最新功能,升级 PHP 是最好的做法。

PHP 5.3

如果您正在使用 PHP 5.3,您应该升级您的环境,因为这个版本自 2014 年 8 月以来已经过了生命周期的结束。否则,您可以从我们的 发布页面 下载 v5.9.2(ziptar.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请求的开始时都会调用该可调用对象。

配置Logger

该库进行最小化日志记录,但可以使用PSR-3兼容的logger进行配置,以便消息最终出现在那里而不是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。所有连接都使用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_TLSv1CURL_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/Stripe/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_TLSv1CURL_SSLVERSION_TLSv1_2