def create(): if current_user.subscription: flash(_('You already have an active subscription.'), 'info') return redirect(url_for('user.settings')) plan = request.args.get('plan') active_plan = Subscription.get_plan_by_id(plan) # Guard against an invalid or missing plan. if active_plan is None and request.method == 'GET': return redirect(url_for('billing.pricing')) stripe_key = current_app.config.get('STRIPE_PUBLISHABLE_KEY') form = CreditCardForm(stripe_key=stripe_key, plan=plan) if form.validate_on_submit(): subscription = Subscription() created = subscription.create(user=current_user, name=request.form.get('name'), plan=request.form.get('plan'), coupon=request.form.get('coupon_code'), token=request.form.get('stripe_token')) if created: flash(_('Awesome, thanks for subscribing!'), 'success') else: flash(_('You must enable Javascript for this request.'), 'warn') return redirect(url_for('user.settings')) return render_template('billing/payment_method.jinja2', form=form, plan=active_plan)
def update_payment_method(): if not current_user.credit_card: flash(_('You do not have a payment method on file.'), 'error') return redirect(url_for('user.settings')) active_plan = Subscription.get_plan_by_id( current_user.subscription.plan) card_last4 = str(current_user.credit_card.last4) stripe_key = current_app.config.get('STRIPE_PUBLISHABLE_KEY') form = CreditCardForm(stripe_key=stripe_key, plan=active_plan, name=current_user.name) if form.validate_on_submit(): subscription = Subscription() updated = subscription.update_payment_method(user=current_user, name=request.form.get( 'name'), token=request.form.get( 'stripe_token')) if updated: flash(_('Your payment method has been updated.'), 'success') else: flash(_('You must enable Javascript for this request.'), 'warn') return redirect(url_for('user.settings')) return render_template('billing/payment_method.jinja2', form=form, plan=active_plan, card_last4=card_last4)