From 14c8146a5d9133f42dd69d33e54ed30d357b8591 Mon Sep 17 00:00:00 2001 From: evazion Date: Mon, 18 Apr 2022 19:25:20 -0500 Subject: [PATCH] stripe: notify site owner when a chargeback is created. Send a notification Dmail to the site owner when a chargeback is created, or when an impending chargeback warning is received. --- app/models/user_upgrade.rb | 25 ++++++++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) diff --git a/app/models/user_upgrade.rb b/app/models/user_upgrade.rb index 6ec4f2488..fc9721c81 100644 --- a/app/models/user_upgrade.rb +++ b/app/models/user_upgrade.rb @@ -287,9 +287,11 @@ class UserUpgrade < ApplicationRecord webhook = Stripe::WebhookEndpoint.create({ url: Routes.webhook_user_upgrade_url(source: "stripe"), enabled_events: [ - "payment_intent.created", - "payment_intent.payment_failed", "checkout.session.completed", + "checkout.session.async_payment_failed", + "checkout.session.async_payment_succeeded", + "charge.dispute.created", + "radar.early_fraud_warning.created", ], }) @@ -299,8 +301,13 @@ class UserUpgrade < ApplicationRecord def receive_webhook(request) event = build_event(request) - if event.type == "checkout.session.completed" + case event.type + when "checkout.session.completed" checkout_session_completed(event.data.object) + when "charge.dispute.created" + charge_dispute_created(event.data.object) + when "radar.early_fraud_warning.created" + radar_early_fraud_warning_created(event.data.object) end end @@ -314,6 +321,18 @@ class UserUpgrade < ApplicationRecord user_upgrade = UserUpgrade.find(checkout.metadata.user_upgrade_id) user_upgrade.process_upgrade!(checkout.payment_status) end + + def charge_dispute_created(dispute) + Dmail.create_automated(to: User.owner, title: "Stripe Dispute", body: <<~EOS) + Dispute: https://stripe.com/payments/#{dispute.charge} + EOS + end + + def radar_early_fraud_warning_created(fraud_warning) + Dmail.create_automated(to: User.owner, title: "Stripe Early Fraud Warning", body: <<~EOS) + Charge: https://stripe.com/payments/#{fraud_warning.charge} + EOS + end end end end