def charge_paypal_order_payment(order): payment_details = PayPalPaymentsManager.get_approved_payment_details(order) if 'PAYERID' in payment_details: capture_result = PayPalPaymentsManager.capture_payment(order, payment_details['PAYERID']) if capture_result['ACK'] == 'Success': order.paid_via = 'paypal' order.status = 'completed' order.transaction_id = capture_result['PAYMENTINFO_0_TRANSACTIONID'] order.completed_at = datetime.utcnow() save_to_db(order) invoice_id = order.get_invoice_number() order_url = url_for('ticketing.view_order_after_payment', order_identifier=order.identifier, _external=True) trigger_after_purchase_notifications(order.user.email, order.event_id, order.event, invoice_id, order_url) send_email_for_after_purchase(order.user.email, invoice_id, order_url, order.event.name, order.event.organizer_name) send_notif_for_after_purchase(order.user, invoice_id, order_url) return True, order else: return False, capture_result['L_SHORTMESSAGE0'] else: return False, 'Payer ID missing. Payment flow tampered.'
def charge_stripe_order_payment(form): order = TicketingManager.get_and_set_expiry(form['identifier']) order.stripe_token = form['stripe_token_id'] save_to_db(order) charge = StripePaymentsManager.capture_payment(order) if charge: order.paid_via = 'stripe' order.payment_mode = charge.source.object order.brand = charge.source.brand order.exp_month = charge.source.exp_month order.exp_year = charge.source.exp_year order.last4 = charge.source.last4 order.transaction_id = charge.id order.status = 'completed' order.completed_at = datetime.utcnow() save_to_db(order) invoice_id = order.get_invoice_number() order_url = url_for('ticketing.view_order_after_payment', order_identifier=order.identifier, _external=True) trigger_after_purchase_notifications(order.user.email, order.event_id, order.event, invoice_id, order_url) send_email_for_after_purchase(order.user.email, invoice_id, order_url, order.event.name, order.event.organizer_name) send_notif_for_after_purchase(order.user, invoice_id, order_url) return True, order else: return False, 'Error'
def charge_paypal_order_payment(order): payment_details = PayPalPaymentsManager.get_approved_payment_details(order) if 'PAYERID' in payment_details: capture_result = PayPalPaymentsManager.capture_payment(order, payment_details['PAYERID']) if capture_result['ACK'] == 'Success': order.paid_via = 'paypal' order.status = 'completed' order.transaction_id = capture_result['PAYMENTINFO_0_TRANSACTIONID'] order.completed_at = datetime.utcnow() save_to_db(order) invoice_id = order.get_invoice_number() order_url = url_for('ticketing.view_order_after_payment', order_identifier=order.identifier, _external=True) trigger_after_purchase_notifications(order.user.email, order.event_id, order.event, invoice_id, order_url) send_email_for_after_purchase(order.user.email, invoice_id, order_url, order.event.name, order.event.organizer_name) send_notif_for_after_purchase(order.user, invoice_id, order_url) return True, order else: return False, capture_result['L_SHORTMESSAGE0'] else: return False, 'Payer ID missing. Payment flow tampered.'
def charge_stripe_order_payment(form): order = TicketingManager.get_and_set_expiry(form['identifier']) order.stripe_token = form['stripe_token_id'] save_to_db(order) charge = StripePaymentsManager.capture_payment(order) if charge: order.paid_via = 'stripe' order.payment_mode = charge.source.object order.brand = charge.source.brand order.exp_month = charge.source.exp_month order.exp_year = charge.source.exp_year order.last4 = charge.source.last4 order.transaction_id = charge.id order.status = 'completed' order.completed_at = datetime.utcnow() save_to_db(order) invoice_id = order.get_invoice_number() order_url = url_for('ticketing.view_order_after_payment', order_identifier=order.identifier, _external=True) trigger_after_purchase_notifications(order.user.email, order.event_id, order.event, invoice_id, order_url) send_email_for_after_purchase(order.user.email, invoice_id, order_url, order.event.name, order.event.organizer_name) send_notif_for_after_purchase(order.user, invoice_id, order_url) return True, order else: return False, 'Error'
def initiate_order_payment(form, paid_via=None): identifier = form['identifier'] email = form['email'] order = TicketingManager.get_and_set_expiry(identifier) if order: user = DataGetter.get_or_create_user_by_email(email, form) order.user_id = user.id if not order.user.user_detail.firstname and not order.user.user_detail.lastname: order.user.user_detail.firstname = form['firstname'] order.user.user_detail.lastname = form['lastname'] if order.amount > 0 \ and (not order.paid_via or (order.paid_via and (order.paid_via == 'stripe' or order.paid_via == 'paypal'))): if paid_via: order.paid_via = paid_via country = form['country'] address = form['address'] city = form['city'] state = form['state'] zipcode = form['zipcode'] order.address = address order.city = city order.state = state order.country = country order.zipcode = zipcode if paid_via == 'transfer' or paid_via == 'onsite' or paid_via == 'cheque': order.status = 'placed' else: order.status = 'initialized' else: order.status = 'completed' order.completed_at = datetime.utcnow() if not order.paid_via: order.paid_via = 'free' invoice_id = order.get_invoice_number() order_url = url_for('ticketing.view_order_after_payment', order_identifier=order.identifier, _external=True) # add holders to user holders_firstnames = form.getlist('holders[firstname]') holders_lastnames = form.getlist('holders[lastname]') holders_ticket_ids = form.getlist('holders[ticket_id]') holders_emails = form.getlist('holders[email]') holders_occupations = form.getlist('holders[occupation]') holders_occupation_details = form.getlist('holders[occupation_detail]') holders_expertises = form.getlist('holders[expertise]') holders_genders = form.getlist('holders[gender]') holders_welcome_receptions = form.getlist('holders[welcome_reception]') holders_recruitments = form.getlist('holders[recruitment]') for i, firstname in enumerate(holders_firstnames): data = { 'firstname': firstname, 'lastname': get_or_default_string(holders_lastnames, i) } holder_user = DataGetter.get_or_create_user_by_email( get_or_default_string(holders_emails, i), data ) ticket_holder = TicketHolder(firstname=data['firstname'], lastname=data['lastname'], occupation=get_or_default_string(holders_occupations, i), occupation_detail=get_or_default_string(holders_occupation_details, i), expertise=get_or_default_string(holders_expertises, i), gender=get_or_default_string(holders_genders, i), welcome_reception=get_or_default_string(holders_welcome_receptions, i), recruitment=get_or_default_string(holders_recruitments, i), ticket_id=int(get_or_default_int(holders_ticket_ids, i)), email=holder_user.email, order_id=order.id) if data['firstname'] == '' or data['lastname'] == '' or holder_user.email == '': return abort(400) if order.status == "completed": send_email_for_after_purchase(holder_user.email, invoice_id, order_url, order.event.name, order.event.organizer_name) DataManager.add_attendee_role_to_event(holder_user, order.event_id) db.session.add(ticket_holder) # add attendee role to user if order.status == "completed": send_notif_for_after_purchase(order.user, invoice_id, order_url) trigger_after_purchase_notifications(email, order.event_id, order.event, invoice_id, order_url) send_email_for_after_purchase(email, invoice_id, order_url, order.event.name, order.event.organizer_name) DataManager.add_attendee_role_to_event(user, order.event_id) # save items save_to_db(order) return order else: return False
def initiate_order_payment(form, paid_via=None): identifier = form['identifier'] email = form['email'] order = TicketingManager.get_and_set_expiry(identifier) if order: user = DataGetter.get_or_create_user_by_email(email, form) order.user_id = user.id if not order.user.user_detail.firstname and not order.user.user_detail.lastname: order.user.user_detail.firstname = form['firstname'] order.user.user_detail.lastname = form['lastname'] if order.amount > 0 \ and (not order.paid_via or (order.paid_via and (order.paid_via == 'stripe' or order.paid_via == 'paypal'))): if paid_via: order.paid_via = paid_via country = form['country'] address = form['address'] city = form['city'] state = form['state'] zipcode = form['zipcode'] order.address = address order.city = city order.state = state order.country = country order.zipcode = zipcode if paid_via == 'transfer' or paid_via == 'onsite' or paid_via == 'cheque': order.status = 'placed' else: order.status = 'initialized' else: order.status = 'completed' order.completed_at = datetime.utcnow() if not order.paid_via: order.paid_via = 'free' invoice_id = order.get_invoice_number() order_url = url_for('ticketing.view_order_after_payment', order_identifier=order.identifier, _external=True) # add holders to user holders_firstnames = form.getlist('holders[firstname]') holders_lastnames = form.getlist('holders[lastname]') holders_ticket_ids = form.getlist('holders[ticket_id]') holders_emails = form.getlist('holders[email]') for i, firstname in enumerate(holders_firstnames): data = { 'firstname': firstname, 'lastname': holders_lastnames[i] } holder_user = DataGetter.get_or_create_user_by_email(holders_emails[i], data) ticket_holder = TicketHolder(firstname=data['firstname'], lastname=data['lastname'], ticket_id=int(holders_ticket_ids[i]), email=holder_user.email, order_id=order.id) if data['firstname'] == '' or data['lastname'] == '' or holder_user.email == '': return abort(400) if order.status == "completed": send_email_for_after_purchase(holder_user.email, invoice_id, order_url, order.event.name, order.event.organizer_name) DataManager.add_attendee_role_to_event(holder_user, order.event_id) db.session.add(ticket_holder) # add attendee role to user if order.status == "completed": send_notif_for_after_purchase(order.user, invoice_id, order_url) trigger_after_purchase_notifications(email, order.event_id, order.event, invoice_id, order_url) send_email_for_after_purchase(email, invoice_id, order_url, order.event.name, order.event.organizer_name) DataManager.add_attendee_role_to_event(user, order.event_id) # save items save_to_db(order) return order else: return False