diff --git a/apps/profile/models.py b/apps/profile/models.py index b5e728cd2..766788a48 100644 --- a/apps/profile/models.py +++ b/apps/profile/models.py @@ -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 diff --git a/apps/profile/urls.py b/apps/profile/urls.py index c117b4075..14bcaa74e 100644 --- a/apps/profile/urls.py +++ b/apps/profile/urls.py @@ -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'), diff --git a/apps/profile/views.py b/apps/profile/views.py index b2ec6c5cc..3a2787137 100644 --- a/apps/profile/views.py +++ b/apps/profile/views.py @@ -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 @@ -697,4 +717,4 @@ def ios_subscription_status(request): return { "code": 1 - } \ No newline at end of file + }