Exemplo n.º 1
0
    def form_valid(self, form):
        payment_provider = 'gocardless'
        provider = select_provider(payment_provider)
        app_domain = provider.get_redirect_url()
        user_code = str(self.request.user.id).zfill(5)
        # settings.PAYMENT_PROVIDERS[payment_provider]['redirect_url']

        form_subscription = MembershipJoinForm(data=self.request.POST)
        form_subscription.is_valid()

        result = {
            'email': self.request.user.email,
            'reference': user_code,
            'amount': form_subscription.cleaned_data.get('amount', 20.00),
            'start_date': timezone.now()
        }

        create_or_update_membership(
            user=self.request.user,
            signup_details=result,
            complete=False
        )

        success_url = '%s/membership/%s/success' % (app_domain, payment_provider)
        failure_url = '%s/membership/%s/failure' % (app_domain, payment_provider)
        url = provider.create_subscription(
            user=self.request.user,
            session=self.request.session.session_key,
            amount=form_subscription.cleaned_data.get('amount', 20.00),
            name="Membership your membership id is MH%s" % user_code,
            redirect_success=success_url,
            redirect_failure=failure_url
        )

        return redirect(url.redirect_url)
Exemplo n.º 2
0
def update_subscriptions(provider_name):
    provider = select_provider('gocardless')

    print(provider)
    Membership.objects.all().delete()
    for sub in provider.fetch_subscriptions():
        try:
            user_model = User.objects.get(email=sub.get('email'))
        except User.DoesNotExist:
            user_model = None

        create_or_update_membership(user=user_model,
                                    signup_details=sub,
                                    complete=True)
Exemplo n.º 3
0
    def get_redirect_url(self, *args, **kwargs):
        payment_provider = 'gocardless'
        provider = select_provider(payment_provider)
        print(self.request.user)
        membership = Membership.objects.get(user=self.request.user)

        name = "Membership your membership id is MH%s" % membership.reference
        result = provider.confirm_subscription(
            membership=membership,
            session=self.request.session.session_key,
            provider_response=self.request.GET,
            name=name
        )

        #  if something went wrong return to profile with an error

        result['start_date'] = timezone.now()
        if result.get('success') is False:
            messages.add_message(
                self.request,
                messages.ERROR,
                'Failure something went wrong activating your membership please contact us.')
            return super(MembershipJoinSuccessView, self).get_redirect_url(*args, **kwargs)

        del(kwargs['provider'])

        if create_or_update_membership(user=self.request.user,
                                       signup_details=result,
                                       complete=True) is True:
            messages.add_message(
                self.request,
                messages.SUCCESS,
                'Success your membership should now be active')
        kwargs['username'] = self.request.user.get_username()
        return super(MembershipJoinSuccessView, self).get_redirect_url(*args, **kwargs)
Exemplo n.º 4
0
    def handle(self, *args, **options):
        provider_name = 'gocardless'
        self.stdout.write(
            self.style.NOTICE('== %s subscriptions ==' %
                              provider_name.capitalize()))

        provider = select_provider('gocardless')
        Membership.objects.all().delete()

        group = Group.objects.get(name='members')

        for sub in provider.fetch_subscriptions():
            prefix = ''
            sub['amount'] = sub['amount'] * 0.01
            try:
                user_model = User.objects.get(email=sub.get('email'))
                if sub.get('status') == 'active':
                    user_model.groups.add(group)
            except User.DoesNotExist:
                user_model = None
                prefix = 'NO USER - '

            create_or_update_membership(user=user_model,
                                        signup_details=sub,
                                        complete=True)

            message = '\t{prefix}{date} - {reference} - {payment} - {last_payment} - {status} - {email} '.format(
                **{
                    'prefix': prefix,
                    'date': sub.get('start_date'),
                    'reference': sub.get('reference'),
                    'payment': sub.get('amount'),
                    'last_payment': sub.get('last_payment'),
                    'status': sub.get('status'),
                    'email': sub.get('email')
                })

            if user_model:
                self.stdout.write(self.style.SUCCESS(message))
            else:
                self.stdout.write(self.style.NOTICE(message))