Create FailedInvoice when invoice.payment_failed webhook is fired
Also set the context parameters for sending emails
This commit is contained in:
parent
e981bf1542
commit
655316305b
1 changed files with 12 additions and 2 deletions
|
|
@ -7,7 +7,9 @@ from django.http import HttpResponse
|
||||||
from django.views.decorators.csrf import csrf_exempt
|
from django.views.decorators.csrf import csrf_exempt
|
||||||
from django.views.decorators.http import require_POST
|
from django.views.decorators.http import require_POST
|
||||||
|
|
||||||
from hosting.models import MonthlyHostingBill, HostingBillLineItem
|
from hosting.models import (
|
||||||
|
MonthlyHostingBill, HostingBillLineItem, FailedInvoice
|
||||||
|
)
|
||||||
from membership.models import StripeCustomer
|
from membership.models import StripeCustomer
|
||||||
from utils.mailer import BaseEmail
|
from utils.mailer import BaseEmail
|
||||||
from utils.tasks import send_plain_email_task
|
from utils.tasks import send_plain_email_task
|
||||||
|
|
@ -110,9 +112,15 @@ def handle_invoice_webhook(request):
|
||||||
send_plain_email_task.delay(email_to_admin_data)
|
send_plain_email_task.delay(email_to_admin_data)
|
||||||
|
|
||||||
elif event.type == "invoice.payment_failed":
|
elif event.type == "invoice.payment_failed":
|
||||||
|
# Create a failed invoice, so that we have a trace of which invoices
|
||||||
|
# need a followup
|
||||||
|
FailedInvoice.create(
|
||||||
|
stripe_customer, number_of_attempts = 1, invoice_id=invoice.id
|
||||||
|
)
|
||||||
|
VM_ID = invoice.lines.data[0].metadata["VM_ID"]
|
||||||
admin_msg_sub = "Invoice payment FAILED for user {} and {}".format(
|
admin_msg_sub = "Invoice payment FAILED for user {} and {}".format(
|
||||||
stripe_customer.user.email,
|
stripe_customer.user.email,
|
||||||
invoice.lines.data.metadata
|
VM_ID
|
||||||
)
|
)
|
||||||
logger.error(admin_msg_sub)
|
logger.error(admin_msg_sub)
|
||||||
# send email to admin
|
# send email to admin
|
||||||
|
|
@ -128,6 +136,8 @@ def handle_invoice_webhook(request):
|
||||||
'base_url': "{0}://{1}".format(request.scheme,
|
'base_url': "{0}://{1}".format(request.scheme,
|
||||||
request.get_host()),
|
request.get_host()),
|
||||||
'dcl_text': settings.DCL_TEXT,
|
'dcl_text': settings.DCL_TEXT,
|
||||||
|
'VM_ID': VM_ID,
|
||||||
|
'number_of_remaining_hours': 48 # for the first failure we wait 48 hours
|
||||||
}
|
}
|
||||||
email_data = {
|
email_data = {
|
||||||
'subject': 'IMPORTANT: The payment for VM {VM_ID} at {dcl_text} failed'.format(
|
'subject': 'IMPORTANT: The payment for VM {VM_ID} at {dcl_text} failed'.format(
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue