mirror of
https://github.com/samuelclay/NewsBlur.git
synced 2025-08-31 21:41:33 +00:00
Adding Android premium activation and receipt saving. For #1343.
This commit is contained in:
parent
35a781fbc4
commit
d2045b7d06
3 changed files with 48 additions and 4 deletions
|
@ -493,7 +493,7 @@ class Profile(models.Model):
|
||||||
|
|
||||||
return ipn[0].payer_email
|
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,
|
payments = PaymentHistory.objects.filter(user=self.user,
|
||||||
payment_identifier=transaction_identifier,
|
payment_identifier=transaction_identifier,
|
||||||
payment_date__gte=datetime.datetime.now()-datetime.timedelta(days=3))
|
payment_date__gte=datetime.datetime.now()-datetime.timedelta(days=3))
|
||||||
|
@ -513,7 +513,30 @@ class Profile(models.Model):
|
||||||
if not self.is_premium:
|
if not self.is_premium:
|
||||||
self.activate_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
|
return True
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
|
|
|
@ -22,6 +22,7 @@ urlpatterns = patterns('',
|
||||||
url(r'^never_expire_premium/?', views.never_expire_premium, name='profile-never-expire-premium'),
|
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'^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_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'^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'^delete_account/?', views.delete_account, name='profile-delete-account'),
|
||||||
url(r'^forgot_password_return/?', views.forgot_password_return, name='profile-forgot-password-return'),
|
url(r'^forgot_password_return/?', views.forgot_password_return, name='profile-forgot-password-return'),
|
||||||
|
|
|
@ -334,7 +334,7 @@ def save_ios_receipt(request):
|
||||||
|
|
||||||
logging.user(request, "~BM~FBSaving iOS Receipt: %s %s" % (product_identifier, transaction_identifier))
|
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:
|
if paid:
|
||||||
logging.user(request, "~BM~FBSending iOS Receipt email: %s %s" % (product_identifier, transaction_identifier))
|
logging.user(request, "~BM~FBSending iOS Receipt email: %s %s" % (product_identifier, transaction_identifier))
|
||||||
subject = "iOS Premium: %s (%s)" % (request.user.profile, product_identifier)
|
subject = "iOS Premium: %s (%s)" % (request.user.profile, product_identifier)
|
||||||
|
@ -346,6 +346,26 @@ def save_ios_receipt(request):
|
||||||
|
|
||||||
return request.user.profile
|
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
|
@login_required
|
||||||
def stripe_form(request):
|
def stripe_form(request):
|
||||||
user = request.user
|
user = request.user
|
||||||
|
@ -697,4 +717,4 @@ def ios_subscription_status(request):
|
||||||
|
|
||||||
return {
|
return {
|
||||||
"code": 1
|
"code": 1
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue