Adding Android premium activation and receipt saving. For #1343.

This commit is contained in:
Samuel Clay 2020-08-25 21:08:27 -04:00
parent 35a781fbc4
commit d2045b7d06
3 changed files with 48 additions and 4 deletions

View file

@ -493,7 +493,7 @@ class Profile(models.Model):
return ipn[0].payer_email
def activate_ios_premium(self, product_identifier, transaction_identifier, amount=36):
def activate_ios_premium(self, transaction_identifier=None, amount=36):
payments = PaymentHistory.objects.filter(user=self.user,
payment_identifier=transaction_identifier,
payment_date__gte=datetime.datetime.now()-datetime.timedelta(days=3))
@ -513,7 +513,30 @@ class Profile(models.Model):
if not self.is_premium:
self.activate_premium()
logging.user(self.user, "~FG~BBNew iOS premium subscription: $%s~FW" % product_identifier)
logging.user(self.user, "~FG~BBNew iOS premium subscription: $%s~FW" % amount)
return True
def activate_android_premium(self, order_id=None, amount=36):
payments = PaymentHistory.objects.filter(user=self.user,
payment_identifier=order_id,
payment_date__gte=datetime.datetime.now()-datetime.timedelta(days=3))
if len(payments):
# Already paid
logging.user(self.user, "~FG~BBAlready paid Android premium subscription: $%s~FW" % amount)
return False
PaymentHistory.objects.create(user=self.user,
payment_date=datetime.datetime.now(),
payment_amount=amount,
payment_provider='android-subscription',
payment_identifier=order_id)
self.setup_premium_history()
if not self.is_premium:
self.activate_premium()
logging.user(self.user, "~FG~BBNew Android premium subscription: $%s~FW" % amount)
return True
@classmethod

View file

@ -22,6 +22,7 @@ urlpatterns = patterns('',
url(r'^never_expire_premium/?', views.never_expire_premium, name='profile-never-expire-premium'),
url(r'^upgrade_premium/?', views.upgrade_premium, name='profile-upgrade-premium'),
url(r'^save_ios_receipt/?', views.save_ios_receipt, name='save-ios-receipt'),
url(r'^save_android_receipt/?', views.save_android_receipt, name='save-android-receipt'),
url(r'^update_payment_history/?', views.update_payment_history, name='profile-update-payment-history'),
url(r'^delete_account/?', views.delete_account, name='profile-delete-account'),
url(r'^forgot_password_return/?', views.forgot_password_return, name='profile-forgot-password-return'),

View file

@ -334,7 +334,7 @@ def save_ios_receipt(request):
logging.user(request, "~BM~FBSaving iOS Receipt: %s %s" % (product_identifier, transaction_identifier))
paid = request.user.profile.activate_ios_premium(product_identifier, transaction_identifier)
paid = request.user.profile.activate_ios_premium(transaction_identifier)
if paid:
logging.user(request, "~BM~FBSending iOS Receipt email: %s %s" % (product_identifier, transaction_identifier))
subject = "iOS Premium: %s (%s)" % (request.user.profile, product_identifier)
@ -346,6 +346,26 @@ def save_ios_receipt(request):
return request.user.profile
@ajax_login_required
@json.json_view
def save_android_receipt(request):
order_id = request.POST.get('order_id')
product_id = request.POST.get('product_id')
logging.user(request, "~BM~FBSaving Android Receipt: %s %s" % (product_id, order_id))
paid = request.user.profile.activate_android_premium(order_id)
if paid:
logging.user(request, "~BM~FBSending Android Receipt email: %s %s" % (product_id, order_id))
subject = "Android Premium: %s (%s)" % (request.user.profile, product_identifier)
message = """User: %s (%s) -- Email: %s, product: %s, order: %s, receipt: %s""" % (request.user.username, request.user.pk, request.user.email, product_id, order_id, receipt)
mail_admins(subject, message, fail_silently=True)
else:
logging.user(request, "~BM~FBNot sending Android Receipt email, already paid: %s %s" % (product_id, order_id))
return request.user.profile
@login_required
def stripe_form(request):
user = request.user