Stripe PHP ライブラリは、PHP 言語で記述されたアプリケーションから Stripe API への便利なアクセスを提供します。これには、API 応答から動的に自身を初期化する API リソース用の事前定義されたクラスのセットが含まれているため、Stripe API の幅広いバージョンと互換性があります。
PHP 5.6.0以降。
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 protected] ' ,
' payment_method ' => ' pm_card_visa ' ,
]);
echo $ customer ;
バージョン 7.33.0 より前に使用されていたレガシー統合パターンを引き続き使用できます。下位互換性のあるクライアント/サービス パターンの変更については、移行ガイドを確認してください。
PHP API ドキュメントを参照してください。
ライブラリの使用方法を説明するビデオ デモンストレーションをご覧ください。
PHP 5.4 または 5.5 を使用している場合、これらのバージョンはそれぞれ 2015 年 9 月と 2016 年 7 月にサポート終了となっているため、環境のアップグレードを検討する必要があります。それ以外の場合は、リリース ページから Stripe-php v6.43.1 (zip、tar.gz) をダウンロードすることで、Stripe を引き続き使用できます。このバージョンは動作しますが、このバージョンのリリース以降に追加された最近の機能をサポートしていない可能性があるため、PHP をアップグレードすることが最善の策です。
PHP 5.3 を使用している場合は、このバージョンは 2014 年 8 月にサポート終了となっているため、環境をアップグレードする必要があります。それ以外の場合は、リリース ページから v5.9.2 (zip、tar.gz) をダウンロードできます。このバージョンは、すべての一般的な用途に対して新しいバージョンの Stripe API で引き続き動作します。
注ローカルでタイムアウトしても、Stripe 側のリクエストは完了する可能性があるため、読み取り専用以外の呼び出し (料金の作成など) のタイムアウトを減らすことはお勧めしません。これらの呼び出しのタイムアウトを短縮する場合は、タイムアウト再試行ロジックの結果として同じトランザクションが 2 回実行されることを避けるために、べき等トークンを必ず使用してください。
リクエストのタイムアウト (接続または合計、秒単位) を変更するには、デフォルト以外の CurlClient を使用するように API クライアントに指示する必要があります。その 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
リクエストに対してプロキシを設定する必要がありますか? curl_stopt_array()
と同じ構文を使用して、必要なCURLOPT_*
配列を CurlClient コンストラクターに渡します。これにより、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 リクエストの開始時、リクエストが送信される前に呼び出されることに注意してください。
このライブラリは最小限のロギングを行いますが、メッセージがerror_log
の代わりにそこに記録されるように、 PSR-3
互換ロガーを使用して構成できます。
Stripe Stripe :: setLogger ( $ logger );
getLastResponse()
を介して、任意のオブジェクトの最後の API 応答のデータにアクセスできます。
$ customer = $ stripe -> customers -> create ([
' description ' => ' example customer ' ,
]);
echo $ customer -> getLastResponse ()-> headers [ ' Request-Id ' ];
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.」。
推奨される対処方法は、デフォルトで TLS 1.2 が使用されるように cURL および OpenSSL パッケージをアップグレードすることです。ただし、それが不可能な場合は、 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 証明書の独自の内部バンドルを使用しますが、独自の証明書を構成することも可能です。
Stripe Stripe :: setCABundlePath ( " path/to/ca/bundle " );
断続的なネットワークの問題により失敗したリクエストを自動的に再試行するようにライブラリを構成できます。
Stripe Stripe :: setMaxNetworkRetries ( 2 );
再試行が安全であることを保証するために、冪等キーがリクエストに追加されます。
デフォルトでは、ライブラリはリクエストのレイテンシと機能の使用状況に関するテレメトリを Stripe に送信します。これらの数値は、Stripe がすべてのユーザーの API の全体的なレイテンシーを改善し、人気のある機能を改善するのに役立ちます。
必要に応じて、この動作を無効にすることができます。
Stripe Stripe :: setEnableTelemetry ( false );
Stripe には、このパッケージのベータ版からアクセスできるベータ段階の機能があります。これらの機能が安定段階に達する前に、これらを試してフィードバックを共有していただければ幸いです。正確なバージョンを指定して、 composer require
コマンドを使用して、ストライプ php パッケージのベータ版をインストールします。
composer require stripe/stripe-php:v9.2.0-beta.1
注ベータ版間には破壊的な変更が存在する可能性があります。したがって、composer.json ファイル内の特定のベータ バージョンにパッケージ バージョンを固定することをお勧めします。こうすることで、意図的に最新のベータ バージョンを探している場合を除き、変更を損なうことなく毎回同じバージョンをインストールできます。
SDK のベータ版の使用から安定版に移行できるように、関心のあるベータ機能がいつベータ版から安定版に移行するかを常に監視しておくことを強くお勧めします。
ベータ機能でStripe-Version
ヘッダーの送信が必要な場合は、関数addBetaVersion
を使用してconfig
オブジェクトのapiVersion
プロパティを設定します。
Stripe :: addBetaVersion ( " feature_beta " , " v3 " );
文書化されていない API にリクエストを送信したい場合 (プライベート ベータ版を使用している場合など)、またはライブラリ内のメソッド定義をバイパスしてrawRequest
の詳細を直接指定したい場合は、ストライプクライアント。
$ 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 " ,
]);
新機能とバグ修正は、Stripe PHP ライブラリの最新メジャー バージョンでリリースされます。古いメジャー バージョンを使用している場合は、新機能やセキュリティの脆弱性などのバグ修正を使用するために、最新のバージョンにアップグレードすることをお勧めします。パッケージの古いメジャー バージョンは引き続き使用できますが、更新は受信されません。
コンポーザーを入手します。たとえば、Mac OS の場合:
brew install composer
依存関係をインストールします。
composer install
テスト スイートは Stripe-mock に依存しているため、必ずバックグラウンド ターミナルからフェッチして実行してください (Stripe-mock の README には、Homebrew やその他の方法でインストールする手順も含まれています)。
go install github.com/stripe/stripe-mock@latest
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 に送信される前に 1 回呼び出される必要があります。 2 番目と 3 番目のパラメータはオプションです。
詳細については、上記の「SSL / TLS 互換性の問題」の段落を参照してください。プラグインをすべてのシステムで確実に使用できるようにするには、構成オプションを追加して、ユーザーがCURLOPT_SSLVERSION
のさまざまな値 ( none (デフォルト)、 CURL_SSLVERSION_TLSv1
およびCURL_SSLVERSION_TLSv1_2
) から選択できるようにする必要があります。