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」と似たような画面が表示されます。
領収書PDFのURLを得る
「receipt_url」に「/pdf」を追加すると、領収書PDFが得られます。(invoiceの「invoice_pdf」を真似た)
https://pay.stripe.com/receipts/invoices/zzz/pdf?s=ap
ただし、この領収書PDFのURLは、Stripe公式が案内している方法ではありません。PDF取得ができない場合があったり、突然利用不可になるリスクがあります。
また、これらのURLは、一定期間後に期限切れになるため恒久保存できません。