こんにちは。
今回は、Stripeから発行できる見積書をActiveStorageに保存する方法を紹介します。
Stripeの見積書とは
こちらのドキュメントに詳しく書かれています。
https://stripe.com/docs/quotes
見積書は、StripeのAPIを使って発行することができます。
Stripeの見積書を発行する
# Set your secret key. Remember to switch to your live secret key in production.
# See your keys here: https://dashboard.stripe.com/apikeys
Stripe.api_key = 'sk_test_**************'
Stripe::Quote.create({
customer: 'cus_GBV60HKsE0mb5v',
line_items: [
{
price: 'price_CBb6IXqvTLXp3f',
quantity: 5,
},
{price: 'price_HGd7M3DV3IMXkC'},
],
})
Stripeの見積書のステータス
Stripeの見積書には、以下のステータスがあります。
- draft: 見積書はこのステータスでも編集できますが、顧客には送信されていません。
- open: 見積もりは完了し、顧客からのアクションを待っています。
- accepted: 顧客は見積もりと請求書を受け入れ、サブスクリプションまたはサブスクリプション スケジュールが作成されました。
- canceled: 見積もりはキャンセルされ、無効になりました。
うち、draftステータスの見積書は、見積書のPDFを取得することができません。
openにするには、以下のようにfinalizeを実行します。
Stripe::Quote.finalize_quote('qt_**************')
Stripeの見積書のPDFを取得する
app/models/quote.rb
class Quote < ApplicationRecord
has_one_attached :pdf
validates :stripe_quote_id, uniqueness: true
def save_pdf
File.open("/tmp/#{stripe_quote_id}.pdf", "wb") do |file|
quote.pdf do |x|
file.write(x)
end
end
stripe_quote.pdf.attach(io: File.open("/tmp/#{stripe_quote_id}.pdf"), filename: "#{stripe_quote_id}.pdf", content_type: 'application/pdf')
end
end
これで、Stripeの見積書のPDFをActiveStorageに保存することができます。
今回はこのあたりで。