Stripe Python ライブラリは、Python 言語で記述されたアプリケーションから Stripe API への便利なアクセスを提供します。これには、API 応答から動的に自身を初期化する API リソース用の事前定義されたクラスのセットが含まれているため、Stripe API の幅広いバージョンと互換性があります。
Python API ドキュメントを参照してください。
ライブラリの使用方法を説明するビデオ デモンストレーションをご覧ください。
パッケージを変更しない限り、このソース コードは必要ありません。パッケージを使用したいだけの場合は、次を実行してください。
pip install --upgrade stripe
以下を使用してソースからインストールします。
python setup.py install
Python Software Foundation (PSF) コミュニティは、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 ())
クライアントが構成されていない場合、デフォルトでは、ライブラリは上記の順序でライブラリをロードしようとします (つまり、 urlfetch
が推奨され、 urllib2
は最後の手段として使用されます)。私たちは通常、 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 以降では、ライブラリに型アノテーションが含まれています。詳細なガイドについては wiki を参照してください。
一部のアノテーションは、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
をオーバーライドしている場合、または古いバージョンに関連付けられた Webhook エンドポイントを使用している場合は、実行時に表示されるデータがタイプと一致しない可能性があることに注意してください。
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
は ストライプ Python 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
すべてのテストを 1 つのファイルで実行します。
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