Stripe SDKで「支払い済みのinvoice情報」から「支払い情報(領収書PDFのURL)」を取得する

Stripe SDKで「支払い済みのinvoice情報」から「支払い情報(領収書PDFのURL)」を取得してみました。
2024.01.12

StripeのSDKで「支払い済みのinvoice情報」を取得すると、請求書PDFなどの情報は得られますが、支払い情報(領収書URLなど)は得られません。 これは、支払い情報として別途管理されているためです。 本記事では、invoice情報から支払い情報の取得を試してみます。

おすすめの方

  • Stripe SDKで「支払い済みのinvoice情報」から「支払い情報(領収書PDFのURL)」を取得したい方

重要

  • 支払い情報は、払い戻しなどによって適宜変化します。最新情報は、Stripeから都度取得してください。
  • 領収書PDFのURLは、Stripe公式が案内している方法ではありません。PDF取得ができない場合があったり、突然利用不可になるリスクがあります。

まずは、invoice情報を確認する

invoice情報にあるPDFのURLは、「invoice_pdf」だけです。

{
    "object": "invoice",
    "hosted_invoice_url": "https://invoice.stripe.com/i/xxx/yyy?s=ap",
    "invoice_pdf": "https://pay.stripe.com/invoice/xxx/yyy/pdf?s=ap",
    "charge": "ch_zzz",
    ...
}

そのため、支払い情報は、「charge」の値を利用して取得します。

invoice情報を取得してから、charge情報を取得する

invoice_idでinvoice情報を取得し、得られたcharge_idでcharge情報を取得します。

app.py

import stripe

stripe.api_key = "sk_test123"


def main():
    invoice = stripe.Invoice.retrieve("in_aaa")
    charge_id = invoice["charge"]
    print(invoice["invoice_pdf"])

    charge = stripe.Charge.retrieve(charge_id)
    print(charge["receipt_url"])


if __name__ == "__main__":
    main()

charge情報を確認する

charge情報には、「receipt_url」があります。

{
    "object": "charge",
    "receipt_url": "https://pay.stripe.com/receipts/invoices/zzz?s=ap",
    ...
}

この「receipt_url」にアクセスすると、invoiceの「hosted_invoice_url」と似たような画面が表示されます。

01_stripe

領収書PDFのURLを得る

「receipt_url」に「/pdf」を追加すると、領収書PDFが得られます。(invoiceの「invoice_pdf」を真似た)

https://pay.stripe.com/receipts/invoices/zzz/pdf?s=ap

ただし、この領収書PDFのURLは、Stripe公式が案内している方法ではありません。PDF取得ができない場合があったり、突然利用不可になるリスクがあります。

また、これらのURLは、一定期間後に期限切れになるため恒久保存できません。

参考