2021/03/08
[Python]Stripeで日本の消費税(10%)に対応する
概要
stripeでユーザーが商品を購入した時に、消費税10%をつけて課金する必要があったので、調べて対応しました。
結論から言うと以下のstepが必要でした。
- TaxRateの定義を作成する
- 商品を購入(チェックアウトや定期購入の作成)するときに、そのTaxRateのIDを指定する
Backendはpythonを使用しているため、Pythonでの手順を残しておきます。
実装内容
TaxRateの定義
import logging
import stripe
stripe.api_key = "your-stripe-secret-key"
logger = logging.getLogger(__name__)
tax_rate = stripe.TaxRate.create(
display_name="消費税",
description="消費税",
country="JP",
jurisdiction="JP", # 管轄は日本の国コードを指定
percentage=10, # 10%
inclusive=False, # 外税を指定(内税の場合はTrue)
)
logger.info("STRIPE_TAX_ID initialized! tax_id: \"%s\"", tax_rate["id"])
税の指定
- 購入するときに、適用させたいTaxRateを配列で指定する必要がありました。
checkout
success_url = "チェックアウトに成功した時にリダイレクトされるURL"
cancel_url = "チェックアウトをキャンセルした時にリダイレクトされるURL"
tax_rate_id = "step1で定義したTaxRateのID"
session = stripe.checkout.Session.create(
payment_method_types=["card"],
line_items=[
{
"price": "購入させたい商品の価格ID",
"quantity": 1, # 購入数
"tax_rates": [tax_rate_id],
},
],
mode="payment",
success_url=success_url,
cancel_url=cancel_url,
)
subscription
customer_id = "課金させたいstripeの顧客ID"
tax_rate_id = "step1で定義したTaxRateのID"
add_invoice_items = [{
"price": "初回にのみ課金される商品の価格ID",
"quantity": 1, # 購入数
"tax_rates": [tax_rate_id],
}] if include_initial else None
items = [{
"price": "定期購入商品の価格ID",
"quantity": 1, # 購入数
"tax_rates": [tax_rate_id],
}]
subscription = stripe.Subscription.create(
customer=customer_id,
items=items,
add_invoice_items=add_invoice_items,
)
References
詳しくは以下を参照ください。
関連する記事
[Python]ハイフンなし電話番号からハイフン付きに復元
Pythonでハイフンなしの日本の電話番号をハイフン付きのものに変換する
[Python]BeautifulSoup4でhtmlの解析
BeautifulSoup4というPythonのライブラリを使って、特定のURLのコンテンツを取得し、タイトルや説明文を取得できるようにしました。
[Python]銀行コードと支店コードの取扱
Pythonで銀行コード、支店コードデータを取り扱う便利なライブラリzengin-codeを導入しました。
Sendgridを使ってメールの受信を行う
Inbound Email Parse Webhookという機能を利用してメールを受信したらWebhookを呼び出すようにしました