update dg payment
This commit is contained in:
		
					parent
					
						
							
								e0fc542673
							
						
					
				
			
			
				commit
				
					
						45730e4eb1
					
				
			
		
					 10 changed files with 69 additions and 60 deletions
				
			
		| 
						 | 
					@ -28,7 +28,7 @@
 | 
				
			||||||
          rel="stylesheet" type="text/css">
 | 
					          rel="stylesheet" type="text/css">
 | 
				
			||||||
    <link href="//fonts.googleapis.com/css?family=Josefin+Slab:100,300,400,600,700,100italic,300italic,400italic,600italic,700italic"
 | 
					    <link href="//fonts.googleapis.com/css?family=Josefin+Slab:100,300,400,600,700,100italic,300italic,400italic,600italic,700italic"
 | 
				
			||||||
          rel="stylesheet" type="text/css">
 | 
					          rel="stylesheet" type="text/css">
 | 
				
			||||||
    <link href="{% static 'digitalglarus/css/font-awesome.min.css' %}"
 | 
					    <link href="{% static 'digitalglarus/bower_components/font-awesome/css/font-awesome.min.css' %}"
 | 
				
			||||||
          rel="stylesheet" type="text/css">
 | 
					          rel="stylesheet" type="text/css">
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    {% render_block "css" postprocessor "compressor.contrib.sekizai.compress" %}
 | 
					    {% render_block "css" postprocessor "compressor.contrib.sekizai.compress" %}
 | 
				
			||||||
| 
						 | 
					@ -65,7 +65,7 @@
 | 
				
			||||||
<div class="pull-right u_P user">
 | 
					<div class="pull-right u_P user">
 | 
				
			||||||
    {% if request.user.is_authenticated %}
 | 
					    {% if request.user.is_authenticated %}
 | 
				
			||||||
        <div class="user_loggedin">
 | 
					        <div class="user_loggedin">
 | 
				
			||||||
            <h4>{{ request.user.name }}
 | 
					            <h4><a href="{% url 'membership' %}">{{ request.user.name }}</a>
 | 
				
			||||||
                <a href="{% url 'logout_glarus' %}"><i class="fa fa-1x fa-sign-out"
 | 
					                <a href="{% url 'logout_glarus' %}"><i class="fa fa-1x fa-sign-out"
 | 
				
			||||||
                                                       aria-hidden="true"></i></a>
 | 
					                                                       aria-hidden="true"></i></a>
 | 
				
			||||||
            </h4>
 | 
					            </h4>
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,17 +1,17 @@
 | 
				
			||||||
from django.conf.urls import url
 | 
					from django.conf.urls import url
 | 
				
			||||||
 | 
					 | 
				
			||||||
from django.utils.translation import ugettext_lazy as _
 | 
					from django.utils.translation import ugettext_lazy as _
 | 
				
			||||||
 | 
					
 | 
				
			||||||
from . import views
 | 
					from . import views
 | 
				
			||||||
from .views import ContactView, IndexView, AboutView
 | 
					from .views import ContactView, IndexView, AboutView
 | 
				
			||||||
 | 
					
 | 
				
			||||||
urlpatterns = [
 | 
					urlpatterns = [
 | 
				
			||||||
#    url(r'^$', IndexView.as_view(), name='home'),
 | 
					    #    url(r'^$', IndexView.as_view(), name='home'),
 | 
				
			||||||
   url(_(r'home/?$'), IndexView.as_view(), name='home'),
 | 
					    # url(_(r'home/?$'), IndexView.as_view(), name='home'),
 | 
				
			||||||
   url(_(r'about/?$'), AboutView.as_view(), name='about'),
 | 
					    # url(_(r'about/?$'), AboutView.as_view(), name='about'),
 | 
				
			||||||
    url(_(r'contact/?$'), ContactView.as_view(), name='contact'),
 | 
					    url(_(r'contact/?$'), ContactView.as_view(), name='contact'),
 | 
				
			||||||
    url(_(r'supporters/?$'), views.supporters, name='supporters'),
 | 
					    url(_(r'supporters/?$'), views.supporters, name='supporters'),
 | 
				
			||||||
    url(r'calendar_api/(?P<month>\d+)/(?P<year>\d+)?$',views.CalendarApi.as_view()),
 | 
					    url(r'calendar_api/(?P<month>\d+)/(?P<year>\d+)?$', views.CalendarApi.as_view()),
 | 
				
			||||||
    url(r'calendar_api/',views.CalendarApi.as_view()),
 | 
					    url(r'calendar_api/', views.CalendarApi.as_view()),
 | 
				
			||||||
    url(_(r'support-us/?$'), views.support, name='support'),
 | 
					    url(_(r'support-us/?$'), views.support, name='support'),
 | 
				
			||||||
    url(r'^blog/(?P<slug>\w[-\w]*)/$', views.blog_detail, name='blog-detail'),
 | 
					    url(r'^blog/(?P<slug>\w[-\w]*)/$', views.blog_detail, name='blog-detail'),
 | 
				
			||||||
    url(r'blog/$', views.blog, name='blog'),
 | 
					    url(r'blog/$', views.blog, name='blog'),
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -446,8 +446,8 @@ AUTH_USER_MODEL = 'membership.CustomUser'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# PAYMENT
 | 
					# PAYMENT
 | 
				
			||||||
 | 
					
 | 
				
			||||||
STRIPE_API_PUBLIC_KEY = 'pk_test_QqBZ50Am8KOxaAlOxbcm9Psl'  # used in frontend to call from user browser
 | 
					STRIPE_API_PUBLIC_KEY = 'pk_test_ZRg6P8g5ybiHE6l2RW5pSaYV'  # used in frontend to call from user browser
 | 
				
			||||||
STRIPE_API_PRIVATE_KEY = 'sk_test_dqAmbKAij12QCGfkYZ3poGt2'  # used in backend payment
 | 
					STRIPE_API_PRIVATE_KEY = 'sk_test_uIPMdgXoRGydrcD7fkwcn7dj'  # used in backend payment
 | 
				
			||||||
STRIPE_DESCRIPTION_ON_PAYMENT = "Payment for ungleich GmbH services"
 | 
					STRIPE_DESCRIPTION_ON_PAYMENT = "Payment for ungleich GmbH services"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# EMAIL MESSAGES
 | 
					# EMAIL MESSAGES
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -23,13 +23,13 @@ urlpatterns += i18n_patterns('',
 | 
				
			||||||
                             url(r'^admin/', include(admin.site.urls)),
 | 
					                             url(r'^admin/', include(admin.site.urls)),
 | 
				
			||||||
                             url(r'^digitalglarus/login/', include(membership_urls)),
 | 
					                             url(r'^digitalglarus/login/', include(membership_urls)),
 | 
				
			||||||
                             url(r'^digitalglarus/', include('digitalglarus.urls',
 | 
					                             url(r'^digitalglarus/', include('digitalglarus.urls',
 | 
				
			||||||
                                                             namespace="digitalglarus"),
 | 
					                                                             namespace="digitalglarus")),
 | 
				
			||||||
                             url(r'^blog/', include('ungleich.urls', namespace='ungleich')),
 | 
					                             url(r'^blog/', include('ungleich.urls', namespace='ungleich')),
 | 
				
			||||||
                             url(r'^ungleich_page/',
 | 
					                             url(r'^ungleich_page/',
 | 
				
			||||||
                                 include('ungleich_page.urls', namespace='ungleich_page'),
 | 
					                                 include('ungleich_page.urls', namespace='ungleich_page'),
 | 
				
			||||||
                                 name='ungleich_page'),
 | 
					                                 name='ungleich_page'),
 | 
				
			||||||
                             url(r'^blog/',include('ungleich.urls',namespace='ungleich')),
 | 
					                             url(r'^blog/',include('ungleich.urls',namespace='ungleich')),
 | 
				
			||||||
                             url(r'^', include('cms.urls')),
 | 
					                             url(r'^', include('cms.urls'))
 | 
				
			||||||
                             )
 | 
					                             )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if settings.DEBUG:
 | 
					if settings.DEBUG:
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -4,7 +4,7 @@ from .views import DjangoHostingView, RailsHostingView, PaymentVMView, \
 | 
				
			||||||
                    NodeJSHostingView, LoginView, SignupView, IndexView
 | 
					                    NodeJSHostingView, LoginView, SignupView, IndexView
 | 
				
			||||||
 | 
					
 | 
				
			||||||
urlpatterns = [
 | 
					urlpatterns = [
 | 
				
			||||||
    url(r'pricing/?$', VMPricingView.as_view(), name='pricing'),
 | 
					    # url(r'pricing/?$', VMPricingView.as_view(), name='pricing'),
 | 
				
			||||||
    url(r'index/?$', IndexView.as_view(), name='index'),
 | 
					    url(r'index/?$', IndexView.as_view(), name='index'),
 | 
				
			||||||
    url(r'django/?$', DjangoHostingView.as_view(), name='djangohosting'),
 | 
					    url(r'django/?$', DjangoHostingView.as_view(), name='djangohosting'),
 | 
				
			||||||
    url(r'nodejs/?$', NodeJSHostingView.as_view(), name='nodejshosting'),
 | 
					    url(r'nodejs/?$', NodeJSHostingView.as_view(), name='nodejshosting'),
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -8,6 +8,7 @@ from django.core.mail import send_mail
 | 
				
			||||||
from django.core.validators import RegexValidator
 | 
					from django.core.validators import RegexValidator
 | 
				
			||||||
from django.contrib.auth.models import User
 | 
					from django.contrib.auth.models import User
 | 
				
			||||||
from django.contrib.sites.models import Site
 | 
					from django.contrib.sites.models import Site
 | 
				
			||||||
 | 
					
 | 
				
			||||||
from utils.stripe_utils import StripeUtils
 | 
					from utils.stripe_utils import StripeUtils
 | 
				
			||||||
 | 
					
 | 
				
			||||||
REGISTRATION_MESSAGE = {'subject': "Validation mail",
 | 
					REGISTRATION_MESSAGE = {'subject': "Validation mail",
 | 
				
			||||||
| 
						 | 
					@ -132,8 +133,12 @@ class StripeCustomer(models.Model):
 | 
				
			||||||
            Check if there is a registered stripe customer with that email
 | 
					            Check if there is a registered stripe customer with that email
 | 
				
			||||||
            or create a new one
 | 
					            or create a new one
 | 
				
			||||||
        """
 | 
					        """
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        try:
 | 
					        try:
 | 
				
			||||||
 | 
					            stripe_utils = StripeUtils()
 | 
				
			||||||
            stripe_customer = cls.objects.get(user__email=email)
 | 
					            stripe_customer = cls.objects.get(user__email=email)
 | 
				
			||||||
 | 
					            #check if user is not in stripe but in database
 | 
				
			||||||
 | 
					            stripe_utils.check_customer(stripe_customer.stripe_id,stripe_customer.user,token)
 | 
				
			||||||
            return stripe_customer
 | 
					            return stripe_customer
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        except StripeCustomer.DoesNotExist:
 | 
					        except StripeCustomer.DoesNotExist:
 | 
				
			||||||
| 
						 | 
					@ -142,7 +147,7 @@ class StripeCustomer(models.Model):
 | 
				
			||||||
            stripe_utils = StripeUtils()
 | 
					            stripe_utils = StripeUtils()
 | 
				
			||||||
            stripe_data = stripe_utils.create_customer(token, email)
 | 
					            stripe_data = stripe_utils.create_customer(token, email)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            stripe_customer = StripeCustomer.objects.\
 | 
					            stripe_customer = StripeCustomer.objects. \
 | 
				
			||||||
                create(user=user, stripe_id=stripe_data.get('id'))
 | 
					                create(user=user, stripe_id=stripe_data.get('id'))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            return stripe_customer
 | 
					            return stripe_customer
 | 
				
			||||||
| 
						 | 
					@ -157,6 +162,10 @@ class CreditCards(models.Model):
 | 
				
			||||||
    ccv = models.CharField(max_length=4, validators=[RegexValidator(r'\d{3,4}', _('Wrong CCV number.'))])
 | 
					    ccv = models.CharField(max_length=4, validators=[RegexValidator(r'\d{3,4}', _('Wrong CCV number.'))])
 | 
				
			||||||
    payment_type = models.CharField(max_length=5, default='N')
 | 
					    payment_type = models.CharField(max_length=5, default='N')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def save(self, *args, **kwargs):
 | 
				
			||||||
 | 
					        # override saving to database
 | 
				
			||||||
 | 
					        pass
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class Calendar(models.Model):
 | 
					class Calendar(models.Model):
 | 
				
			||||||
    datebooked = models.DateField()
 | 
					    datebooked = models.DateField()
 | 
				
			||||||
| 
						 | 
					@ -170,10 +179,9 @@ class Calendar(models.Model):
 | 
				
			||||||
        super(Calendar, self).__init__(*args, **kwargs)
 | 
					        super(Calendar, self).__init__(*args, **kwargs)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @classmethod
 | 
					    @classmethod
 | 
				
			||||||
    def add_dates(cls,dates,user):
 | 
					    def add_dates(cls, dates, user):
 | 
				
			||||||
        old_dates = Calendar.objects.filter(user_id=user.id)
 | 
					        old_dates = Calendar.objects.filter(user_id=user.id)
 | 
				
			||||||
        if old_dates:
 | 
					        if old_dates:
 | 
				
			||||||
            old_dates.delete()
 | 
					            old_dates.delete()
 | 
				
			||||||
        for date in dates:
 | 
					        for date in dates:
 | 
				
			||||||
            Calendar.objects.create(datebooked=date,user=user)
 | 
					            Calendar.objects.create(datebooked=date, user=user)
 | 
				
			||||||
 | 
					 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -125,7 +125,7 @@
 | 
				
			||||||
                    for coworking. It is a perfect try-out package!
 | 
					                    for coworking. It is a perfect try-out package!
 | 
				
			||||||
                    <br>
 | 
					                    <br>
 | 
				
			||||||
                </p>
 | 
					                </p>
 | 
				
			||||||
                <a class="btn btn-primary" href="/login/buy/month/">Buy Now</a>
 | 
					                <a class="btn btn-primary" href="{% url 'payment' time='month' %}">Buy Now</a>
 | 
				
			||||||
            </div>
 | 
					            </div>
 | 
				
			||||||
        </div>
 | 
					        </div>
 | 
				
			||||||
    </div>
 | 
					    </div>
 | 
				
			||||||
| 
						 | 
					@ -146,7 +146,7 @@
 | 
				
			||||||
                    membership.
 | 
					                    membership.
 | 
				
			||||||
                    <br>
 | 
					                    <br>
 | 
				
			||||||
                </p>
 | 
					                </p>
 | 
				
			||||||
                <a class="btn btn-primary" href="/login/buy/year/">Buy Now</a>
 | 
					                <a class="btn btn-primary" href="{% url 'payment' time='year' %}">Buy Now</a>
 | 
				
			||||||
            </div>
 | 
					            </div>
 | 
				
			||||||
            <div class="col-md-6">
 | 
					            <div class="col-md-6">
 | 
				
			||||||
                <img src="https://unsplash.imgix.net/photo-1413834932717-29e7d4714192?w=1024&q=50&fm=jpg&s=d9d6cbc32dd4968d0c21e331436a6af6"
 | 
					                <img src="https://unsplash.imgix.net/photo-1413834932717-29e7d4714192?w=1024&q=50&fm=jpg&s=d9d6cbc32dd4968d0c21e331436a6af6"
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,17 +1,18 @@
 | 
				
			||||||
 | 
					{% load static %}
 | 
				
			||||||
<html>
 | 
					<html>
 | 
				
			||||||
<head>
 | 
					<head>
 | 
				
			||||||
    <meta charset="utf-8">
 | 
					    <meta charset="utf-8">
 | 
				
			||||||
    <meta name="viewport" content="width=device-width, initial-scale=1">
 | 
					    <meta name="viewport" content="width=device-width, initial-scale=1">
 | 
				
			||||||
    <script type="text/javascript" src="{% static 'digitalglarus/bower_components/jquery/dist/jquery.min.js' %}"></script>
 | 
					    <script type="text/javascript" src="{% static 'digitalglarus/bower_components/jquery/dist/jquery.min.js' %}"></script>
 | 
				
			||||||
    <script type="text/javascript" src="{% static 'digitalglarus/bower_components/bootstrap/dist/js/bootstrap.min.js' %}"></script>
 | 
					    <script type="text/javascript" src="{% static 'digitalglarus/bower_components/bootstrap/dist/js/bootstrap.min.js' %}"></script>
 | 
				
			||||||
    <link href="{%  static 'digitalglarus/css/font-awesome.min.css' %}" rel="stylesheet" type="text/css">
 | 
					    <link href="{%  static 'digitalglarus/bower_components/font-awesome/css/font-awesome.min.css' %}" rel="stylesheet" type="text/css">
 | 
				
			||||||
    <link href="{% static 'digitalglarus/bower_components/bootstrap/dist/css/bootstrap.min.css' %}" rel="stylesheet"
 | 
					    <link href="{% static 'digitalglarus/bower_components/bootstrap/dist/css/bootstrap.min.css' %}" rel="stylesheet"
 | 
				
			||||||
          type="text/css">
 | 
					          type="text/css">
 | 
				
			||||||
    {% if request.session.next == None %}
 | 
					    {% if request.session.next == None %}
 | 
				
			||||||
    <script>
 | 
					    <script>
 | 
				
			||||||
        type = "text/javascript" >
 | 
					        type = "text/javascript" >
 | 
				
			||||||
                setTimeout(function () {
 | 
					                setTimeout(function () {
 | 
				
			||||||
                    window.location.href = "/";
 | 
					                    window.location.href = "{% url 'membership' %}";
 | 
				
			||||||
                }, 5000);
 | 
					                }, 5000);
 | 
				
			||||||
    </script>
 | 
					    </script>
 | 
				
			||||||
    {% endif %}
 | 
					    {% endif %}
 | 
				
			||||||
| 
						 | 
					@ -25,7 +26,7 @@
 | 
				
			||||||
                    {% if msg == 'succeeded' %}
 | 
					                    {% if msg == 'succeeded' %}
 | 
				
			||||||
                        Thank You for Your payment!<br> <p>redirecting...</p>
 | 
					                        Thank You for Your payment!<br> <p>redirecting...</p>
 | 
				
			||||||
                    {% else %}
 | 
					                    {% else %}
 | 
				
			||||||
                        Your payment was not processed correctly.<br> Reason: {{ msg }}
 | 
					                        Your payment was not processed correctly. Please contact us <a href="{% url 'digitalglarus:contact' %}">here</a>!
 | 
				
			||||||
                    {% endif %}
 | 
					                    {% endif %}
 | 
				
			||||||
                </h3>
 | 
					                </h3>
 | 
				
			||||||
            </div>
 | 
					            </div>
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -8,9 +8,9 @@ from django.contrib.auth import logout
 | 
				
			||||||
from django.http import HttpResponseRedirect
 | 
					from django.http import HttpResponseRedirect
 | 
				
			||||||
from django.contrib.auth import login
 | 
					from django.contrib.auth import login
 | 
				
			||||||
 | 
					
 | 
				
			||||||
from .models import CustomUser
 | 
					from .models import CustomUser,StripeCustomer
 | 
				
			||||||
from .forms import (LoginForm, RegisterForm, PaymentForm)
 | 
					from .forms import (LoginForm, RegisterForm, PaymentForm)
 | 
				
			||||||
from .payment import StripePayment
 | 
					from utils.stripe_utils import StripeUtils
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def validate_email(request, validate_slug):
 | 
					def validate_email(request, validate_slug):
 | 
				
			||||||
| 
						 | 
					@ -49,10 +49,12 @@ class CreditCardView(View):
 | 
				
			||||||
            template = 'templates/creditcard.html'
 | 
					            template = 'templates/creditcard.html'
 | 
				
			||||||
            request.session['next'] +=1
 | 
					            request.session['next'] +=1
 | 
				
			||||||
        elif next == 2:
 | 
					        elif next == 2:
 | 
				
			||||||
            msg = StripePayment.make_payment(request.user, request.session['amount'],
 | 
					            customer = StripeCustomer.get_or_create(email=request.user.email,token=request.session['token'])
 | 
				
			||||||
                                             request.session['token'],request.session['time'])
 | 
					            stripe_utils = StripeUtils()
 | 
				
			||||||
 | 
					            charge = stripe_utils.make_charge(request.session['amount'],customer=customer.stripe_id)
 | 
				
			||||||
            template = 'templates/validated.html'
 | 
					            template = 'templates/validated.html'
 | 
				
			||||||
            context['msg'] = msg
 | 
					            import ipdb;ipdb.set_trace()
 | 
				
			||||||
 | 
					            context['msg'] = charge.get('status')
 | 
				
			||||||
            request.session['next'] = None
 | 
					            request.session['next'] = None
 | 
				
			||||||
        return render(request, template, context)
 | 
					        return render(request, template, context)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -63,7 +65,6 @@ class CreditCardView(View):
 | 
				
			||||||
        if form.is_valid():
 | 
					        if form.is_valid():
 | 
				
			||||||
            ret = form.save(request.user)
 | 
					            ret = form.save(request.user)
 | 
				
			||||||
            amount = 35 if time == 'month' else 360
 | 
					            amount = 35 if time == 'month' else 360
 | 
				
			||||||
            amount = amount * 100  # payments are in 'cents'
 | 
					 | 
				
			||||||
            request.session['token'] = stripe_token
 | 
					            request.session['token'] = stripe_token
 | 
				
			||||||
            request.session['amount'] = amount
 | 
					            request.session['amount'] = amount
 | 
				
			||||||
            request.session['next'] +=1
 | 
					            request.session['next'] +=1
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,19 +1,32 @@
 | 
				
			||||||
import stripe
 | 
					import stripe
 | 
				
			||||||
from django.conf import settings
 | 
					from django.conf import settings
 | 
				
			||||||
 | 
					from django.db import models
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					stripe.api_key = settings.STRIPE_API_PRIVATE_KEY
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class StripeUtils(object):
 | 
					class StripeUtils(object):
 | 
				
			||||||
 | 
					 | 
				
			||||||
    CURRENCY = 'chf'
 | 
					    CURRENCY = 'chf'
 | 
				
			||||||
    INTERVAL = 'month'
 | 
					    INTERVAL = 'month'
 | 
				
			||||||
    SUCCEEDED_STATUS = 'succeeded'
 | 
					    SUCCEEDED_STATUS = 'succeeded'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def __init__(self):
 | 
					    def __init__(self):
 | 
				
			||||||
        self.stripe = stripe
 | 
					        self.stripe = stripe
 | 
				
			||||||
        self.stripe.api_key = settings.STRIPE_API_PRIVATE_KEY
 | 
					
 | 
				
			||||||
 | 
					    def check_customer(self, id,user,token):
 | 
				
			||||||
 | 
					        customers = self.stripe.Customer.all()
 | 
				
			||||||
 | 
					        if not customers.get('data'):
 | 
				
			||||||
 | 
					            customer = self.create_customer(token,user.email)
 | 
				
			||||||
 | 
					        else:
 | 
				
			||||||
 | 
					            try:
 | 
				
			||||||
 | 
					                customer = stripe.Customer.retrieve(id)
 | 
				
			||||||
 | 
					            except stripe.InvalidRequestError:
 | 
				
			||||||
 | 
					                customer = self.create_customer(token,user.email)
 | 
				
			||||||
 | 
					                user.stripecustomer.stripe_id=customer.get('id')
 | 
				
			||||||
 | 
					                user.stripecustomer.save()
 | 
				
			||||||
 | 
					        return customer
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def create_customer(self, token, email):
 | 
					    def create_customer(self, token, email):
 | 
				
			||||||
        stripe.api_key = settings.STRIPE_API_PRIVATE_KEY
 | 
					 | 
				
			||||||
        customer = stripe.Customer.create(
 | 
					        customer = stripe.Customer.create(
 | 
				
			||||||
            source=token,
 | 
					            source=token,
 | 
				
			||||||
            description='description for testing',
 | 
					            description='description for testing',
 | 
				
			||||||
| 
						 | 
					@ -23,36 +36,14 @@ class StripeUtils(object):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def make_charge(self, amount=None, customer=None):
 | 
					    def make_charge(self, amount=None, customer=None):
 | 
				
			||||||
        amount = int(amount * 100)  # stripe amount unit, in cents
 | 
					        amount = int(amount * 100)  # stripe amount unit, in cents
 | 
				
			||||||
 | 
					        import ipdb;ipdb.set_trace()
 | 
				
			||||||
 | 
					        try:
 | 
				
			||||||
            charge = self.stripe.Charge.create(
 | 
					            charge = self.stripe.Charge.create(
 | 
				
			||||||
                amount=amount,  # in cents
 | 
					                amount=amount,  # in cents
 | 
				
			||||||
                currency=self.CURRENCY,
 | 
					                currency=self.CURRENCY,
 | 
				
			||||||
                customer=customer
 | 
					                customer=customer
 | 
				
			||||||
            )
 | 
					            )
 | 
				
			||||||
            return charge
 | 
					            return charge
 | 
				
			||||||
 | 
					 | 
				
			||||||
    def create_plan(self, amount, name, id):
 | 
					 | 
				
			||||||
        self.stripe.Plan.create(
 | 
					 | 
				
			||||||
          amount=amount,
 | 
					 | 
				
			||||||
          interval=self.INTERVAL,
 | 
					 | 
				
			||||||
          name=name,
 | 
					 | 
				
			||||||
          currency=self.CURRENCY,
 | 
					 | 
				
			||||||
          id=id)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    def make_payment(self, user, amount, token):
 | 
					 | 
				
			||||||
        try:
 | 
					 | 
				
			||||||
            # Use Stripe's library to make requests...
 | 
					 | 
				
			||||||
            charge = self.stripe.Charge.create(
 | 
					 | 
				
			||||||
                amount=amount,
 | 
					 | 
				
			||||||
                currency=self.CURRENCY,
 | 
					 | 
				
			||||||
                source=token,
 | 
					 | 
				
			||||||
                description=settings.STRIPE_DESCRIPTION_ON_PAYMENT
 | 
					 | 
				
			||||||
            )
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            if charge.get('status') == self.SUCCEEDED_STATUS:
 | 
					 | 
				
			||||||
                # do something
 | 
					 | 
				
			||||||
                pass
 | 
					 | 
				
			||||||
            return charge['status']
 | 
					 | 
				
			||||||
        except self.stripe.error.CardError as e:
 | 
					        except self.stripe.error.CardError as e:
 | 
				
			||||||
            # Since it's a decline, stripe.error.CardError will be caught
 | 
					            # Since it's a decline, stripe.error.CardError will be caught
 | 
				
			||||||
            body = e.json_body
 | 
					            body = e.json_body
 | 
				
			||||||
| 
						 | 
					@ -74,3 +65,11 @@ class StripeUtils(object):
 | 
				
			||||||
        except Exception as e:
 | 
					        except Exception as e:
 | 
				
			||||||
            # maybe send email
 | 
					            # maybe send email
 | 
				
			||||||
            return "Currently its not possible to make payments."
 | 
					            return "Currently its not possible to make payments."
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def create_plan(self, amount, name, id):
 | 
				
			||||||
 | 
					        self.stripe.Plan.create(
 | 
				
			||||||
 | 
					            amount=amount,
 | 
				
			||||||
 | 
					            interval=self.INTERVAL,
 | 
				
			||||||
 | 
					            name=name,
 | 
				
			||||||
 | 
					            currency=self.CURRENCY,
 | 
				
			||||||
 | 
					            id=id)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue