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 측의 요청은 여전히 완료될 수 있기 때문입니다. 이러한 호출의 시간 초과를 줄이는 경우 시간 초과 재시도 논리로 인해 동일한 트랜잭션이 두 번 실행되지 않도록 멱등성 토큰을 사용해야 합니다.
요청 시간 제한(연결 또는 전체, 초 단위)을 수정하려면 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 요청 시작 시 호출됩니다.
라이브러리는 최소한의 로깅을 수행하지만 메시지가 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에는 이 패키지의 베타 버전을 통해 액세스할 수 있는 베타 단계의 기능이 있습니다. 이러한 기능이 안정화 단계에 도달하기 전에 이러한 기능을 사용해 보시고 피드백을 공유해 주시기 바랍니다. Stripe-php 패키지의 베타 버전을 설치하려면 지정된 정확한 버전과 함께 composer require
명령을 사용하십시오.
composer require stripe/stripe-php:v9.2.0-beta.1
참고 베타 버전 간에는 주요 변경 사항이 있을 수 있습니다. 따라서 작곡가.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로 전송되기 전에 이 메소드를 한 번 호출해야 합니다. 두 번째 및 세 번째 매개변수는 선택사항입니다.
전체 내용은 위의 "SSL/TLS 호환성 문제" 단락을 참조하세요. 플러그인을 모든 시스템에서 사용할 수 있도록 하려면 사용자가 CURLOPT_SSLVERSION
의 다양한 값(없음(기본값), CURL_SSLVERSION_TLSv1
및 CURL_SSLVERSION_TLSv1_2
중에서 선택할 수 있도록 구성 옵션을 추가해야 합니다.