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.
This commit is contained in:
evazion
2022-04-18 19:25:20 -05:00
parent a45b18ed36
commit 14c8146a5d

View File

@@ -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