
Stripe Python 라이브러리는 Python 언어로 작성된 애플리케이션에서 Stripe API에 대한 편리한 액세스를 제공합니다. 여기에는 API 응답에서 동적으로 초기화되는 API 리소스에 대한 사전 정의된 클래스 세트가 포함되어 있어 광범위한 Stripe API 버전과 호환됩니다.
Python API 문서를 참조하세요.
라이브러리 사용 방법을 다루는 비디오 데모를 참조하십시오.
패키지를 수정하려는 경우가 아니면 이 소스 코드가 필요하지 않습니다. 패키지만 사용하려면 다음을 실행하세요.
pip install --upgrade stripe다음을 사용하여 소스에서 설치합니다.
python setup.py installPSF(Python Software Foundation) 커뮤니티는 2020년 1월 1일에 Python 2 지원 종료를 발표했습니다. 버전 6.0.0 Stripe SDK부터 Python 패키지는 더 이상 Python 2.7을 지원하지 않습니다. 새로운 기능과 보안 업데이트를 계속 받으려면 Python 런타임을 Python 3.6 이상으로 업데이트하세요.
Python 2.7을 지원하는 Stripe SDK의 마지막 버전은 5.5.0입니다.
라이브러리는 Stripe 대시보드에서 사용할 수 있는 계정의 비밀 키로 구성되어야 합니다. stripe.api_key 해당 값으로 설정합니다.
from stripe import StripeClient
client = StripeClient ( "sk_test_..." )
# list customers
customers = client . customers . list ()
# print the first customer's email
print ( customers . data [ 0 ]. email )
# retrieve specific Customer
customer = client . customers . retrieve ( "cus_123456789" )
# print that customer's email
print ( customer . email )요청이 실패하면 예외가 발생합니다. 예외 클래스는 발생한 오류의 종류를 반영합니다. 처리해야 하는 오류 클래스에 대한 설명과 이러한 오류를 검사하는 방법에 대한 자세한 내용은 Api 참조를 참조하세요.
options 인수를 사용하여 개별 요청을 구성합니다. 예를 들어 특정 Stripe 버전 또는 연결된 계정으로 요청할 수 있습니다.
from stripe import StripeClient
client = StripeClient ( "sk_test_..." )
# list customers
client . customers . list (
options = {
"api_key" : "sk_test_..." ,
"stripe_account" : "acct_..." ,
"stripe_version" : "2019-02-19" ,
}
)
# retrieve single customer
client . customers . retrieve (
"cus_123456789" ,
options = {
"api_key" : "sk_test_..." ,
"stripe_account" : "acct_..." ,
"stripe_version" : "2019-02-19" ,
}
) http_client 옵션과 함께 urlfetch , requests , pycurl 또는 urllib2 사용하도록 StripeClient 구성할 수 있습니다.
client = StripeClient ( "sk_test_..." , http_client = stripe . UrlFetchClient ())
client = StripeClient ( "sk_test_..." , http_client = stripe . RequestsClient ())
client = StripeClient ( "sk_test_..." , http_client = stripe . PycurlClient ())
client = StripeClient ( "sk_test_..." , http_client = stripe . Urllib2Client ()) 구성된 클라이언트가 없으면 기본적으로 라이브러리는 위의 순서대로 라이브러리 로드를 시도합니다(즉, 최후의 수단으로 사용되는 urllib2 와 함께 urlfetch 선호됩니다). 우리는 일반적으로 사람들이 requests 사용하는 것을 권장합니다.
proxy 클라이언트 옵션을 사용하여 프록시를 구성할 수 있습니다.
client = StripeClient ( "sk_test_..." , proxy = "https://user:[email protected]:1234" )최대 재시도 횟수를 구성하여 일시적인 문제로 인해 실패한 요청에 대해 자동 재시도를 활성화할 수 있습니다.
client = StripeClient ( "sk_test_..." , max_network_retries = 2 ) 연결 오류 또는 시간 초과와 같은 다양한 오류와 HTTP 상태 409 Conflict 과 같은 특정 API 응답으로 인해 재시도가 발생할 수 있습니다.
멱등성 키는 제공되지 않은 경우 자동으로 생성되어 요청에 추가되어 재시도가 안전한지 보장합니다.
라이브러리는 수행 중인 작업에 대한 더 나은 통찰력을 제공하는 로깅을 생성하도록 구성할 수 있습니다. info 로깅 수준은 일반적으로 프로덕션 용도에 가장 적합하지만 더 자세한 내용을 위해 debug 도 사용할 수 있습니다.
이를 활성화하는 몇 가지 옵션이 있습니다:
환경 변수 STRIPE_LOG debug 또는 info 값으로 설정합니다.
$ export STRIPE_LOG=debug stripe.log 설정 :
import stripe
stripe . log = 'debug'Python의 로깅 모듈을 통해 활성화합니다.
import logging
logging . basicConfig ()
logging . getLogger ( 'stripe' ). setLevel ( logging . DEBUG ) 반환된 리소스의 last_response 속성을 사용하여 HTTP 응답 코드 및 헤더에 액세스할 수 있습니다.
customer = client . customers . retrieve (
"cus_123456789"
)
print ( customer . last_response . code )
print ( customer . last_response . headers ) 라이브러리를 사용하는 플러그인을 작성하는 경우 stripe.set_app_info() 사용을 식별해 주시면 감사하겠습니다.
stripe . set_app_info ( "MyAwesomePlugin" , version = "1.2.34" , url = "https://myawesomeplugin.info" )이 정보는 라이브러리가 Stripe API를 호출할 때 전달됩니다.
기본적으로 라이브러리는 요청 대기 시간 및 기능 사용과 관련하여 원격 분석을 Stripe에 보냅니다. 이러한 수치는 Stripe이 모든 사용자에 대한 API의 전체 대기 시간을 개선하고 인기 있는 기능을 개선하는 데 도움이 됩니다.
원하는 경우 이 동작을 비활성화할 수 있습니다.
stripe . enable_telemetry = False v7.1.0 이상에서는 라이브러리에 유형 주석이 포함됩니다. 자세한 가이드는 위키를 참조하세요.
일부 주석은 2023년 1월에 승인된 Unpack[TypedDict] 와 같이 최근에야 승인된 기능을 사용합니다. 우리는 이러한 유형이 Pyright에서 제대로 인식되는지 테스트했습니다. MyPy의 Unpack 지원은 아직 실험적이지만 점차적으로 성능이 저하되는 것으로 보입니다. 귀하가 선택한 유형 검사기의 유형을 개선하기 위해 우리가 할 수 있는 일이 있으면 문제를 보고해 주십시오.
마이너 릴리스에서는 유형 변경 사항을 릴리스합니다. Stripe-Python은 의미론적 버전 관리를 따르는 반면, 우리의 의미론적 버전은 라이브러리의 런타임 동작 만 설명합니다. 우리의 유형 주석은 의미론적 버전에 반영되지 않습니다 . 즉, Stripe-Python의 새로운 마이너 버전으로 업그레이드하면 유형 검사기에서 이전에 발생하지 않았던 유형 오류가 발생할 수 있습니다. 요구 requirements.txt 에서 ~=xx 또는 xx* 버전 지정자를 사용하여 pip 특정 부 범위의 stripe-python 으로 제한할 수 있습니다.
유형은 출시 당시 최신이었던 Stripe API 버전을 설명합니다. 이는 라이브러리에서 기본적으로 보내는 버전입니다. StripeClient 에서 stripe.api_version / stripe_version 재정의하거나 이전 버전에 연결된 웹훅 엔드포인트를 사용하는 경우 런타임에 표시되는 데이터가 유형과 일치하지 않을 수 있다는 점에 유의하세요.
Stripe에는 이 패키지의 베타 버전을 통해 액세스할 수 있는 베타 단계의 기능이 있습니다. 이러한 기능이 안정화 단계에 도달하기 전에 이러한 기능을 사용해 보시고 피드백을 공유해 주시기 바랍니다. 베타 버전을 설치하려면 사용하려는 정확한 버전과 함께 pip install 사용하세요.
pip install --pre stripe
참고 베타 버전 간에는 주요 변경 사항이 있을 수 있습니다. 따라서 요구 사항 파일 또는
setup.py에서 패키지 버전을 특정 베타 버전에 고정하는 것이 좋습니다. 이렇게 하면 의도적으로 최신 베타 버전을 찾는 것이 아닌 이상 변경 사항을 손상시키지 않고 매번 동일한 버전을 설치할 수 있습니다.
SDK의 베타 버전 사용에서 안정 버전으로 전환할 수 있도록 관심 있는 베타 기능이 베타에서 안정 버전으로 전환되는 시기를 계속 주시하는 것이 좋습니다.
베타 기능에 Stripe-Version 헤더 전송이 필요한 경우, stripe.add_beta_version 함수를 사용하여 stripe.api_version 필드를 설정하세요.
stripe . add_beta_version ( "feature_beta" , "v3" ) 문서화되지 않은 API에 요청을 보내려는 경우(예: 비공개 베타에 있는 경우) 또는 라이브러리의 메서드 정의를 우회하고 요청 세부 정보를 직접 지정하려는 경우 StripeClient 에서 raw_request 메서드를 사용할 수 있습니다. .
client = StripeClient ( "sk_test_..." )
response = client . raw_request (
"post" , "/v1/beta_endpoint" , param = 123 , stripe_version = "2022-11-15; feature_beta=v3"
)
# (Optional) response is a StripeResponse. You can use `client.deserialize` to get a StripeObject.
deserialized_resp = client . deserialize ( response , api_mode = 'V1' ) 요청 작성 메서드의 비동기 버전은 메서드 이름 뒤에 _async 붙여 사용할 수 있습니다.
# With StripeClient
client = StripeClient ( "sk_test_..." )
customer = await client . customers . retrieve_async ( "cus_xyz" )
# With global client
stripe . api_key = "sk_test_..."
customer = await stripe . Customer . retrieve_async ( "cus_xyz" )
# .auto_paging_iter() implements both AsyncIterable and Iterable
async for c in await stripe . Customer . list_async (). auto_paging_iter ():
... .save 스트라이프 파이썬 v5부터 더 이상 사용되지 않으므로 .save_async 없습니다. .modify_async 로 마이그레이션하세요.
기본 HTTP 클라이언트는 동기 요청을 만들기 위해 requests 사용하지만 비동기 요청을 만들기 위해서는 httpx 사용합니다. 비동기로 마이그레이션하는 경우 자체 http 클라이언트를 명시적으로 초기화하고 이를 StripeClient에 전달하거나 전역 기본값으로 설정하는 것이 좋습니다.
# By default, an explicitly initialized HTTPXClient will raise an exception if you
# attempt to call a sync method. If you intend to only use async, this is useful to
# make sure you don't unintentionally make a synchronous request.
my_http_client = stripe . HTTPXClient ()
# If you want to use httpx to make sync requests, you can disable this
# behavior.
my_http_client = stripe . HTTPXClient ( allow_sync_methods = True )
# aiohttp is also available (does not support sync requests)
my_http_client = stripe . AIOHTTPClient ()
# With StripeClient
client = StripeClient ( "sk_test_..." , http_client = my_http_client )
# With the global client
stripe . default_http_client = my_http_client 또한 stripe.HTTPClient 하위 클래스로 분류하고 고유한 인스턴스를 제공할 수도 있습니다.
Stripe Python 라이브러리의 최신 주요 버전에 새로운 기능과 버그 수정이 출시되었습니다. 이전 주요 버전을 사용하는 경우 보안 취약점을 포함한 새로운 기능과 버그 수정을 사용하려면 최신 버전으로 업그레이드하는 것이 좋습니다. 패키지의 이전 주요 버전을 계속 사용할 수 있지만 업데이트는 제공되지 않습니다.
테스트 스위트는 Stripe-Mock에 의존하므로 백그라운드 터미널에서 가져와서 실행해야 합니다(stripe-mock의 README에는 Homebrew 및 기타 방법을 통해 설치하기 위한 지침도 포함되어 있습니다).
go install github.com/stripe/stripe-mock@latest
stripe-mock개발 virtualenv를 설정하려면 다음 명령을 실행하십시오.
make지원되는 모든 Python 버전에서 모든 테스트를 실행합니다.
make test 특정 Python 버전에 대한 모든 테스트를 실행합니다(Python 대상에 따라 -e 수정).
TOX_ARGS= " -e py37 " make test단일 파일에서 모든 테스트를 실행합니다.
TOX_ARGS= " -e py37 -- tests/api_resources/abstract/test_updateable_api_resource.py " make test단일 테스트 모음을 실행합니다.
TOX_ARGS= " -e py37 -- tests/api_resources/abstract/test_updateable_api_resource.py::TestUpdateableAPIResource " make test단일 테스트를 실행합니다.
TOX_ARGS= " -e py37 -- tests/api_resources/abstract/test_updateable_api_resource.py::TestUpdateableAPIResource::test_save " make test다음을 사용하여 린터를 실행합니다.
make lint라이브러리는 코드 형식 지정에 Ruff를 사용합니다. PR을 제출하기 전에 코드 형식을 검정색으로 지정해야 합니다. 그렇지 않으면 CI가 실패합니다. 다음을 사용하여 포맷터를 실행합니다.
make fmt