
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 用戶端jsonmbstring (多位元組字串)如果您使用 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 月起就已停止使用。該版本將繼續與新版本的 Stripe API 一起用於所有常見用途。
注意我們不建議減少非唯讀呼叫(例如費用建立)的逾時,因為即使您本地逾時,Stripe 端的請求仍然可以完成。如果您要減少這些呼叫的逾時,請確保使用冪等性令牌以避免因逾時重試邏輯而執行相同交易兩次。
若要修改請求逾時(連線逾時或總逾時,以秒為單位),您需要告訴 API 用戶端使用預設值以外的 CurlClient。您將在該 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 請求開始時、發送請求之前呼叫。
該庫執行最少的日誌記錄,但可以使用PSR-3相容的記錄器進行配置,以便訊息最終出現在那裡,而不是error_log :
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。
建議的操作過程是升級您的 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 憑證的內部捆綁包,但也可以配置您自己的:
Stripe Stripe :: setCABundlePath ( " path/to/ca/bundle " );該庫可以配置為自動重試由於間歇性網路問題而失敗的請求:
Stripe Stripe :: setMaxNetworkRetries ( 2 );將冪等鍵加入請求中以確保重試的安全。
預設情況下,該程式庫向 Stripe 發送有關請求延遲和功能使用情況的遙測資料。這些數字有助於 Stripe 改善所有用戶 API 的整體延遲,並改善流行的功能。
如果您願意,可以停用此行為:
Stripe Stripe :: setEnableTelemetry ( false ); Stripe 具有處於測試階段的功能,可透過該套件的測試版本存取這些功能。我們希望您在這些功能達到穩定階段之前嘗試這些功能並與我們分享回饋。使用指定確切版本的composer require指令來安裝stripe-php pacakge 的測試版。
composer require stripe/stripe-php:v9.2.0-beta.1注意Beta 版本之間可能存在重大變更。因此,我們建議將套件版本固定到 Composer.json 檔案中的特定 Beta 版本。這樣,您每次都可以安裝相同的版本,而不會破壞更改,除非您有意尋找最新的測試版。
我們強烈建議您專注於您感興趣的測試版功能何時從測試版變為穩定版,以便您可以從使用 SDK 的測試版轉向穩定版。
如果您的 Beta 功能需要傳送Stripe-Version標頭,請使用函數addBetaVersion設定config物件的apiVersion屬性:
Stripe :: addBetaVersion ( " feature_beta " , " v3 " );如果您想要向未記錄的 API 發送請求(例如您處於私人測試版),或者您希望繞過庫中的方法定義並直接指定您的請求詳細信息,您可以使用rawRequest方法StripeClient。
$ 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 作業系統上:
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 之前,應呼叫該方法一次。第二個和第三個參數是可選的。
有關完整上下文,請參閱上面的“SSL / TLS 相容性問題”段落。如果您想要確保您的外掛程式可以在所有系統上使用,您應該新增一個設定選項,讓您的使用者在CURLOPT_SSLVERSION的不同值之間進行選擇:none(預設)、 CURL_SSLVERSION_TLSv1和CURL_SSLVERSION_TLSv1_2 。