config/initializers/stripe_event.rb in tang-0.0.1 vs config/initializers/stripe_event.rb in tang-0.0.8

- old
+ new

@@ -1,11 +1,86 @@ -StripeEvent.event_retriever = lambda do |params| +StripeEvent.event_filter = lambda do |params| + # return nil if Rails.env.production? && !params[:livemode] return nil if Tang::StripeWebhook.exists?(stripe_id: params[:id]) Tang::StripeWebhook.create!(stripe_id: params[:id]) Stripe::Event.retrieve(params[:id]) end StripeEvent.configure do |events| events.all do |event| - logger.debug "stripe_event: #{event}" + # puts "stripe_event: #{event}" + end + + # Disputes + + events.subscribe 'charge.dispute.created' do |event| + dispute = event.data.object + # TODO: create actual dispute model + charge = Tang::Charge.find_by(stripe_id: dispute.charge) + if Tang.delayed_email + Tang::StripeMailer.admin_dispute_created(charge).deliver_later + else + Tang::StripeMailer.admin_dispute_created(charge).deliver_now + end + end + + events.subscribe 'charge.dispute.updated' do |event| + dispute = event.data.object + end + + events.subscribe 'charge.dispute.closed' do |event| + dispute = event.data.object + end + + # Subscription lifecycle + + events.subscribe 'invoice.created' do |event| + invoice = Tang::CreateInvoice.call(event) + end + + # events.subscribe 'charge.succeeded' do |event| + # charge = event.data.object + # StripeMailer.receipt(charge).deliver + # StripeMailer.admin_charge_succeeded(charge).deliver + # end + + events.subscribe('invoice.payment_succeeded') do |event| + invoice = event.data.object + charge = Tang::PayInvoice.call(invoice) + if charge.present? + if Tang.delayed_email + Tang::StripeMailer.customer_payment_succeeded(charge).deliver_later + Tang::StripeMailer.admin_payment_succeeded(charge).deliver_later + else + Tang::StripeMailer.customer_payment_succeeded(charge).deliver_now + Tang::StripeMailer.admin_payment_succeeded(charge).deliver_now + end + end + end + + # Subscription lifecycle errors + + events.subscribe('invoice.payment_failed') do |event| + invoice = event.data.object + charge = Tang::FailInvoice.call(invoice) + if charge.present? + if Tang.delayed_email + Tang::StripeMailer.customer_payment_failed(charge).deliver_later + Tang::StripeMailer.admin_payment_failed(charge).deliver_later + else + Tang::StripeMailer.customer_payment_failed(charge).deliver_now + Tang::StripeMailer.admin_payment_failed(charge).deliver_now + end + end + end + + # events.subscribe('customer.subscription.updated') do |event| + # end + + events.subscribe('customer.subscription.deleted') do |event| + stripe_subscription = event.data.object + subscription = Tang::Subscription.find_by(stripe_id: stripe_subscription.id) + if subscription.present? + subscription.cancel! if !subscription.canceled? + end end end \ No newline at end of file