def __init__(self, email, customer_id=None, stripe_id=None, root=True, sub_id=None): self.customer_id = customer_id self.stripe_id = stripe_id self.root = root self.sub_id = sub_id self.stripe_obj = PaymentsService(email, customer_id=stripe_id) self.compile()
def analytics_checkout(): obj = PaymentsService(session['email'], customer_id=session['stripe_id']) obj.analytics() if request.args.get('session_id'): return render_template('core/checkout.html', plan="analytics") else: return redirect(url_for('analytics_checkout', session_id=obj.id))
class SettingsViewModel: def __init__(self, email, customer_id=None, stripe_id=None, root=True, sub_id=None): self.customer_id = customer_id self.stripe_id = stripe_id self.root = root self.sub_id = sub_id self.stripe_obj = PaymentsService(email, customer_id=stripe_id) self.compile() def get_stripe(self): self.plans = self.stripe_obj.fetch_plans() self.invoices = self.stripe_obj.invoices() def get_customer_data(self): query = "SELECT * FROM settings_view(?)" data, cursor = db.execute(query, True, (self.customer_id,)) data = cursor.fetchone() self.customer = { 'first_name': data[0], 'current_plan': False if not data[1] else True, 'almost_free': False if not data[2] else True, 'ad_mid': False if not data[3] else True, 'ad_premium': False if not data[4] else True, 'funds_remaining': data[5], 'spend_rate': data[6], 'analytics': data[7] } def subscription(self): data = self.stripe_obj.get_plan_meta(self.sub_id) self.plan_meta = { 'amount': (data['plan']['amount']/100) if data['plan']['amount'] else 0, 'start_date': data.get('start_date') if data.get('start_date') else 0, 'canceled_at': data.get('canceled_at') if data['canceled_at'] else 0, 'cancel_at': data.get('cancel_at') if data['cancel_at'] else 0 } def compile(self): self.get_stripe() self.get_customer_data() if self.root == False: self.subscription() upcoming_invoices = self.stripe_obj.upcoming_invoices() past_invoices = self.stripe_obj.invoices(sub_num=self.sub_id) self.upcoming_invoices = { 'amount': (upcoming_invoices['data'][0]['amount']/100), 'start': upcoming_invoices['data'][0]['period']['start'], 'end': upcoming_invoices['data'][0]['period']['end'] } invoices = {} for i in range(len(past_invoices['data'])): invoices[i] = { 'id': past_invoices['data'][i]['id'], 'amount_due': (past_invoices['data'][i]['amount_due']/100), 'status': 'paid' if past_invoices['data'][i]['amount_due'] == past_invoices['data'][i]['amount_paid'] else 'open', 'due': past_invoices['data'][i]['created'] } self.past_invoices = invoices
def paid_ads_premium_checkout(): obj = PaymentsService(session['email'], customer_id=session['stripe_id']) obj.paid_ads_premium() if request.args.get('session_id'): return render_template('core/checkout.html', plan="ads_premium") else: return redirect(url_for('paid_ads_premium_checkout', session_id=obj.id))
def single_campaign(): obj = PaymentsService(session['email'], customer_id=session['stripe_id']) quantity = request.args.get('quantity') if request.args.get( 'quantity') else 1 obj.single_campaign(quantity=quantity) db.execute("update customer_basic set num_campaigns = ? where id = ?", False, (quantity, session['user']), commit=True) if request.args.get('session_id'): return render_template('core/checkout.html', plan="ab") else: return redirect( url_for('single_campaign', session_id=obj.id, quantity=quantity))
def success(): # get plan id email = session['email'] if session['logged_in'] else request.args.get( 'email') customer_id = session['stripe_id'] if session[ 'logged_in'] else request.args.get('stripe_id') payments = PaymentsService(session['email'], customer_id=session['stripe_id']) gchat = GoogleChatService() plans = payments.get_plan() for plan in plans: gchat.new_customer(email=session['email'], customer_type=plan) # update db with plan id UserService.update_plan(session['user'], plan) UserService.init_profile_after_purchase(UserService.now(), session['user']) # redirect to home return redirect(url_for('home', view='campaigns'))
def plan_view(plan_id): page = SettingsViewModel(session['email'], customer_id=session['user'], stripe_id=session['stripe_id'], root=False, sub_id=plan_id) if request.method == 'POST': if request.form['cancel_sub']: payments = PaymentsService(session['email'], customer_id=session['stripe_id']) payments.delete_subscriptions(sub_id=plan_id, customer_id=session['stripe_id']) return redirect(url_for('settings')) # if request.form['send_invoice']: # payments = PaymentsService(session['email'], customer_id=session['stripe_id']) # payments.send_invoice(invoice_id=request.form['invoice_id']) # return redirect(url_for('plan_view', plan_id=request.form['plan_id'])) return render_template('core/settings.html', page=page, root=False, plan_id=plan_id)
def begin(): form = forms.Profile() service = IntakeService(session['user'], 'begin', session['onboarding_complete']) if ViewFuncs.ValidSubmission(form=form, method=request.method): if request.form['submit_button'] != 'skip': service.begin(form.data) if session['onboarding_complete'] == False: payments = PaymentsService(session['email']) stripe_id = payments.create_customer() session['stripe_id'] = stripe_id UserService.UpdateStripeId(session['email'], session['stripe_id']) gchat = GoogleChatService() gchat.onboarding_started(email=session['email']) stripe_info = PaymentsService(session['email'], customer_id=session['stripe_id']) stripe_info.modify(company_name=form.company_name.data) else: service.skip(10) if session['onboarding_complete'] == True: return redirect(url_for('home', view='profile')) else: return redirect(url_for('competitors')) return ViewFuncs.view_page( user=session['user'], user_name=session['user_name'], form=form, view_page='profile', next_page='competitors', coming_home=request.args.get('home'), splash=request.args.get('splash'), onboarding_complete=session['onboarding_complete'], onboarding=True if session['onboarding_complete'] == False else False)
def inspect(): service = PaymentsService(None, customer_id='cus_Fg7dwInveMv4wX') customer = service.get_plan_meta(plan_id='sub_FhE3gUPeN4xjE4') return json.dumps(customer)