Как настроить стандартные веб-зачеты Stripe Invoice с Payola Gem?
Я использую две разные модели пользователей с разными наборами подписок для обеих. Проблема заключается в том, что Payola не обязательно предоставляет четкую документацию о том, какой подход вы должны использовать при создании счетов, при успешном списании, при невыплате ответов или даже при подходе к невыполненному платежу. Как я могу просто настроить поведение по умолчанию для случаев Payola Stripe Webhook?
payola.rb
Payola.configure do |config|
# Example subscription:
#
# config.subscribe 'payola.package.sale.finished' do |sale|
# EmailSender.send_an_email(sale.email)
# end
#
# In addition to any event that Stripe sends, you can subscribe
# to the following special payola events:
#
# - payola.<sellable class>.sale.finished
# - payola.<sellable class>.sale.refunded
# - payola.<sellable class>.sale.failed
#
# These events consume a Payola::Sale, not a Stripe::Event
#
# Example charge verifier:
#
# config.charge_verifier = lambda do |sale|
# raise "Nope!" if sale.email.includes?('yahoo.com')
# end
# Keep this subscription unless you want to disable refund handling
config.secret_key = ENV["STRIPE_SECRET_KEY_TEST"]
config.publishable_key = ENV["STRIPE_PUBLISHABLE_KEY_TEST"]
config.send_email_for :user_receipt, :employer_receipt
# send email when invoice is created
config.subscribe 'invoice.created' do |event|
subscription = Payola::SubscriptionPlan.find_by(stripe_id: event.data.object.subscription)
user = User.find(subscription.owner_id)
UserMailer.invoice_created_email(user).deliver_now
end
config.subscribe 'invoice.payment_succeeded' do |event|
subscription = Payola::SubscriptionPlan.find_by(stripe_id: event.data.object.subscription)
user = User.find(subscription.owner_id)
subscription.save
UserMailer.successful_payment_email(user).deliver_now
end
Payola.subscribe 'payola.sale.refunded' do |event|
sale = Payola::Sale.find_by(stripe_id: event.data.object.id)
sale.refund! unless sale.refunded?
end
Payola.subscribe 'payola.sale.finished' do |event|
# SubscriptionMailer.receipt(event.guid).deliver
end
Payola.subscribe 'payola.sale.failed' do |event|
# TO DO
end
Payola.subscribe 'payola.subscription.deleted' do |event|
sale = Sale.find_by(stripe_id: event.data.object.id)
customer = User.find_by(email: sale.email) || Employer.find_by(email: sale.email)
UserMailer.expire_email(customer).deliver || EmployerMailer.expire_email(customer)
customer.destroy
end
end