def process_art_show_payment(self, session, payment_id, stripeToken):
     charge = Charge.get(payment_id)
     [attendee] = charge.attendees
     attendee = session.merge(attendee)
     apps = attendee.art_show_applications
     for app in apps:
         message = charge.charge_cc(session, stripeToken)
         if message:
             raise HTTPRedirect('edit?id={}&message={}', app.id, message)
         else:
             attendee.amount_paid += charge.dollar_amount
             app.status = c.PAID
             if attendee.paid == c.NOT_PAID:
                 attendee.paid = c.HAS_PAID
         session.add(attendee)
         send_email.delay(c.ADMIN_EMAIL,
                          c.ART_SHOW_EMAIL,
                          'Art Show Payment Received',
                          render('emails/art_show/payment_notification.txt',
                                 {'app': app},
                                 encoding=None),
                          model=app.to_dict('id'))
         send_email.delay(c.ART_SHOW_EMAIL,
                          app.email,
                          'Art Show Payment Received',
                          render('emails/art_show/payment_confirmation.txt',
                                 {'app': app},
                                 encoding=None),
                          model=app.to_dict('id'))
         raise HTTPRedirect('edit?id={}&message={}', app.id,
                            'Your payment has been accepted!')
예제 #2
0
    def pay_for_extra_members(self, session, payment_id, stripeToken):
        charge = Charge.get(payment_id)
        [group] = charge.groups
        group_badge_price = c.DEALER_BADGE_PRICE if group.tables else c.GROUP_PRICE
        badges_to_add = charge.dollar_amount // group_badge_price
        if charge.dollar_amount % group_badge_price:
            message = 'Our preregistration price has gone up since you tried to add the badges; please try again'
        else:
            message = charge.charge_cc(session, stripeToken)

        if message:
            raise HTTPRedirect('group_members?id={}&message={}', group.id, message)
        else:
            session.assign_badges(group, group.badges + badges_to_add)
            group.amount_paid += charge.dollar_amount
            session.merge(group)
            if group.is_dealer:
                send_email.delay(
                    c.MARKETPLACE_EMAIL,
                    c.MARKETPLACE_EMAIL,
                    'Dealer Paid for Extra Members',
                    render('emails/dealers/payment_notification.txt', {'group': group}, encoding=None),
                    model=group.to_dict('id'))
            raise HTTPRedirect(
                'group_members?id={}&message={}',
                group.id,
                'You payment has been accepted and the badges have been added to your group')
예제 #3
0
    def process_group_payment(self, session, payment_id, stripeToken):
        charge = Charge.get(payment_id)
        [group] = charge.groups
        message = charge.charge_cc(session, stripeToken)
        if message:
            raise HTTPRedirect('group_members?id={}&message={}', group.id,
                               message)
        else:
            group.amount_paid += charge.dollar_amount

            session.merge(group)
            if group.is_dealer:
                try:
                    send_email.delay(
                        c.MARKETPLACE_EMAIL,
                        c.MARKETPLACE_EMAIL,
                        'Dealer Payment Completed',
                        render('emails/dealers/payment_notification.txt',
                               {'group': group},
                               encoding=None),
                        model=group.to_dict('id'))
                except Exception:
                    log.error(
                        'unable to send dealer payment confirmation email',
                        exc_info=True)
            raise HTTPRedirect('group_members?id={}&message={}', group.id,
                               'Your payment has been accepted!')
예제 #4
0
    def pay_for_extra_codes(self, session, payment_id, stripeToken):
        charge = Charge.get(payment_id)
        [attendee] = charge.attendees
        attendee = session.attendee(attendee.id)
        group = attendee.promo_code_groups[0]
        badges_to_add = charge.dollar_amount // c.GROUP_PRICE
        if charge.dollar_amount % c.GROUP_PRICE:
            message = 'Our preregistration price has gone up since you tried to add more codes; please try again'
        else:
            message = charge.charge_cc(session, stripeToken)

        if message:
            raise HTTPRedirect('group_promo_codes?id={}&message={}', group.id, message)
        else:
            session.add(session.create_receipt_item(
                attendee, charge.amount,
                "Adding {} badge{} to promo code group {} (${} each)".format(
                    badges_to_add,
                    "s" if badges_to_add > 1 else "",
                    group.name, c.GROUP_PRICE), charge.stripe_transaction, c.PROMO_CODE),
            )

            session.add_codes_to_pc_group(group, badges_to_add)
            attendee.amount_paid_override += charge.dollar_amount

            raise HTTPRedirect(
                'group_promo_codes?id={}&message={}',
                group.id,
                'You payment has been accepted and the codes have been added to your group')
예제 #5
0
    def pay_for_extra_members(self, session, payment_id, stripeToken):
        charge = Charge.get(payment_id)
        [group] = charge.groups
        group_badge_price = c.DEALER_BADGE_PRICE if group.tables else c.GROUP_PRICE
        badges_to_add = charge.dollar_amount // group_badge_price
        if charge.dollar_amount % group_badge_price:
            message = 'Our preregistration price has gone up since you tried to add the badges; please try again'
        else:
            message = charge.charge_cc(session, stripeToken)

        if message:
            raise HTTPRedirect('group_members?id={}&message={}', group.id, message)
        else:
            session.assign_badges(group, group.badges + badges_to_add)
            group.amount_paid_override += charge.dollar_amount
            session.add(session.create_receipt_item(
                group, charge.amount,
                "{} badge{} (${} each)".format(
                    badges_to_add,
                    "s" if badges_to_add > 1 else "",
                    group.new_badge_cost), charge.stripe_transaction, c.BADGE),
            )
            session.merge(group)
            if group.is_dealer:
                send_email.delay(
                    c.MARKETPLACE_EMAIL,
                    c.MARKETPLACE_EMAIL,
                    '{} Paid for Extra Members'.format(c.DEALER_TERM.title()),
                    render('emails/dealers/payment_notification.txt', {'group': group}, encoding=None),
                    model=group.to_dict('id'))
            raise HTTPRedirect(
                'group_members?id={}&message={}',
                group.id,
                'You payment has been accepted and the badges have been added to your group')
예제 #6
0
    def process_marketplace_payment(self, session, payment_id, stripeToken):
        charge = Charge.get(payment_id)
        [attendee] = charge.attendees
        attendee = session.merge(attendee)
        apps = attendee.marketplace_applications

        message = charge.charge_cc(session, stripeToken)
        if message:
            raise HTTPRedirect('edit?id={}&message={}', apps[0].id, message)
        else:
            attendee_payment = charge.dollar_amount
            if attendee.marketplace_cost:
                for app in attendee.marketplace_applications:
                    attendee_payment -= app.amount_unpaid
                    app.amount_paid += app.amount_unpaid
            attendee.amount_paid += attendee_payment
            if attendee.paid == c.NOT_PAID:
                attendee.paid = c.HAS_PAID
        session.add(attendee)
        send_email.delay(c.ADMIN_EMAIL,
                         c.MARKETPLACE_APP_EMAIL,
                         'Marketplace Payment Received',
                         render('emails/marketplace/payment_notification.txt',
                                {'app': app},
                                encoding=None),
                         model=app.to_dict('id'))
        send_email.delay(c.MARKETPLACE_APP_EMAIL,
                         app.email,
                         'Marketplace Payment Received',
                         render('emails/marketplace/payment_confirmation.txt',
                                {'app': app},
                                encoding=None),
                         model=app.to_dict('id'))
        raise HTTPRedirect('edit?id={}&message={}', app.id,
                           'Your payment has been accepted!')
예제 #7
0
 def manual_reg_charge(self, session, payment_id, stripeToken):
     charge = Charge.get(payment_id)
     [attendee] = charge.attendees
     message = charge.charge_cc(session, stripeToken)
     if message:
         return {
             'success': False,
             'message': 'Error processing card: {}'.format(message)
         }
     else:
         attendee.paid = c.HAS_PAID
         attendee.payment_method = c.MANUAL
         session.add(
             session.create_receipt_item(attendee,
                                         attendee.total_cost * 100,
                                         "At-door desk payment",
                                         charge.stripe_transaction))
         attendee.amount_paid_override = attendee.total_cost
         session.merge(attendee)
         session.commit()
         return {
             'success': True,
             'message': 'Payment accepted.',
             'id': attendee.id
         }
예제 #8
0
    def pay_for_extra_members(self, session, payment_id, stripeToken):
        charge = Charge.get(payment_id)
        [group] = charge.groups
        badges_to_add = charge.dollar_amount // c.GROUP_PRICE
        if charge.dollar_amount % c.GROUP_PRICE:
            message = 'Our preregistration price has gone up since you tried to add the badges; please try again'
        else:
            message = charge.charge_cc(session, stripeToken)

        if message:
            raise HTTPRedirect('group_members?id={}&message={}', group.id,
                               message)
        else:
            session.assign_badges(group, group.badges + badges_to_add)
            group.amount_paid += charge.dollar_amount
            session.merge(group)
            if group.is_dealer:
                send_email.delay(
                    c.MARKETPLACE_EMAIL,
                    c.MARKETPLACE_EMAIL,
                    'Dealer Paid for Extra Members',
                    render('emails/dealers/payment_notification.txt',
                           {'group': group},
                           encoding=None),
                    model=group.to_dict('id'))
            raise HTTPRedirect(
                'group_members?id={}&message={}', group.id,
                'You payment has been accepted and the badges have been added to your group'
            )
예제 #9
0
 def sales_charge(self, session, payment_id, stripeToken):
     charge = Charge.get(payment_id)
     message = charge.charge_cc(session, stripeToken)
     if message:
         raise HTTPRedirect('sales_charge_form?message={}', message)
     else:
         session.add(
             ArbitraryCharge(amount=charge.dollar_amount,
                             what=charge.description))
         raise HTTPRedirect('sales_charge_form?message={}',
                            'Charge successfully processed')
예제 #10
0
 def arbitrary_charge(self, session, payment_id, stripeToken):
     charge = Charge.get(payment_id)
     message = charge.charge_cc(session, stripeToken)
     if message:
         raise HTTPRedirect('arbitrary_charge_form?message={}', message)
     else:
         session.add(ArbitraryCharge(
             amount=charge.dollar_amount,
             what=charge.description,
             reg_station=cherrypy.session.get('reg_station')
         ))
         raise HTTPRedirect('{}?message={}', return_to, 'Charge successfully processed')
예제 #11
0
    def prereg_payment(self, session, payment_id=None, stripeToken=None):
        if not payment_id or not stripeToken or c.HTTP_METHOD != 'POST':
            message = 'The payment was interrupted. Please check below to ensure you received your badge.'
            raise HTTPRedirect('paid_preregistrations?message={}', message)

        charge = Charge.get(payment_id)
        if not charge.total_cost:
            message = 'Your total cost was $0. Your credit card has not been charged.'
        elif charge.amount != charge.total_cost:
            message = 'Our preregistration price has gone up; ' \
                'please fill out the payment form again at the higher price'
        else:
            message = charge.charge_cc(session, stripeToken)

        if message:
            raise HTTPRedirect('index?message={}', message)

        # from this point on, the credit card has actually been charged but we haven't marked anything as charged yet.
        # be ultra-careful until the attendees/groups are marked paid and written to the DB or we could end up in a
        # situation where we took the payment, but didn't mark the cards charged

        for attendee in charge.attendees:
            attendee.paid = c.HAS_PAID
            attendee.amount_paid = attendee.total_cost
            attendee_name = 'PLACEHOLDER' if attendee.is_unassigned else attendee.full_name
            log.info("PAYMENT: marked attendee id={} ({}) as paid",
                     attendee.id, attendee_name)
            session.add(attendee)

        for group in charge.groups:
            group.amount_paid = group.default_cost
            log.info("PAYMENT: marked group id={} ({}) as paid", group.id,
                     group.name)

            for attendee in group.attendees:
                attendee.amount_paid = attendee.total_cost - attendee.badge_cost
                attendee_name = 'UNASSIGNED PLACEHOLDER' if attendee.is_unassigned else attendee.full_name
                log.info("PAYMENT: marked group member id={} ({}) as paid",
                         attendee.id, attendee_name)
            session.add(group)

        session.commit(
        )  # paranoia: really make sure we lock in marking taking payments in the database

        Charge.unpaid_preregs.clear()
        Charge.paid_preregs.extend(charge.targets)

        log.debug(
            'PAYMENT: prereg payment actual charging process FINISHED for stripeToken={}',
            stripeToken)
        raise HTTPRedirect('paid_preregistrations?payment_received={}',
                           charge.dollar_amount)
예제 #12
0
 def manual_reg_charge(self, session, payment_id, stripeToken):
     charge = Charge.get(payment_id)
     [attendee] = charge.attendees
     message = charge.charge_cc(session, stripeToken)
     if message:
         return {'success': False, 'message': 'Error processing card: {}'.format(message)}
     else:
         attendee.paid = c.HAS_PAID
         attendee.payment_method = c.MANUAL
         attendee.amount_paid = attendee.total_cost
         session.merge(attendee)
         session.commit()
         return {'success': True, 'message': 'Payment accepted.', 'id': attendee.id}
예제 #13
0
 def manual_reg_charge(self, session, payment_id, stripeToken):
     charge = Charge.get(payment_id)
     [attendee] = charge.attendees
     message = charge.charge_cc(session, stripeToken)
     if message:
         return {'success': False, 'message': 'Error processing card: {}'.format(message)}
     else:
         attendee.paid = c.HAS_PAID
         attendee.payment_method = c.MANUAL
         attendee.amount_paid = attendee.total_cost
         session.merge(attendee)
         session.commit()
         return {'success': True, 'message': 'Payment accepted.', 'id': attendee.id}
예제 #14
0
 def take_payment(self, session, payment_id, stripeToken):
     charge = Charge.get(payment_id)
     [attendee] = charge.attendees
     message = charge.charge_cc(session, stripeToken)
     if message:
         raise HTTPRedirect('pay?id={}&message={}', attendee.id, message)
     else:
         db_attendee = session.query(Attendee).filter_by(id=attendee.id).first()
         if db_attendee:
             attendee = db_attendee
         attendee.paid = c.HAS_PAID
         attendee.amount_paid = attendee.total_cost
         session.add(attendee)
         raise HTTPRedirect(
             'register?message={}', c.AT_DOOR_PREPAID_MSG)
예제 #15
0
 def take_payment(self, session, payment_id, stripeToken):
     charge = Charge.get(payment_id)
     [attendee] = charge.attendees
     message = charge.charge_cc(session, stripeToken)
     if message:
         raise HTTPRedirect('pay?id={}&message={}', attendee.id, message)
     else:
         db_attendee = session.query(Attendee).filter_by(
             id=attendee.id).first()
         if db_attendee:
             attendee = db_attendee
         attendee.paid = c.HAS_PAID
         session.add_receipt_items_by_model(charge, attendee)
         attendee.amount_paid_override = attendee.total_cost
         session.add(attendee)
         raise HTTPRedirect('register?message={}', c.AT_DOOR_PREPAID_MSG)
예제 #16
0
 def take_payment(self, session, payment_id, stripeToken):
     charge = Charge.get(payment_id)
     [attendee] = charge.attendees
     message = charge.charge_cc(session, stripeToken)
     if message:
         raise HTTPRedirect('pay?id={}&message={}', attendee.id, message)
     else:
         db_attendee = session.query(Attendee).filter_by(id=attendee.id).first()
         if db_attendee:
             attendee = db_attendee
         attendee.paid = c.HAS_PAID
         attendee.amount_paid = attendee.total_cost
         session.add(attendee)
         raise HTTPRedirect(
             'register?message={}',
             'Your payment has been accepted, please proceed to the Preregistration desk to pick up your badge')
예제 #17
0
 def process_attendee_donation(self, session, payment_id, stripeToken):
     charge = Charge.get(payment_id)
     [attendee] = charge.attendees
     message = charge.charge_cc(session, stripeToken)
     if message:
         raise HTTPRedirect('attendee_donation_form?id=' + attendee.id + '&message={}', message)
     else:
         # It's safe to assume the attendee exists in the database already.
         # The only path to reach this method requires the attendee to have
         # already paid for their registration, thus the attendee has been
         # saved to the database.
         attendee = session.query(Attendee).get(attendee.id)
         attendee.amount_paid += charge.dollar_amount
         if attendee.paid == c.NOT_PAID and attendee.amount_paid == attendee.total_cost:
             attendee.paid = c.HAS_PAID
         raise HTTPRedirect('badge_updated?id={}&message={}', attendee.id, 'Your payment has been accepted')
예제 #18
0
 def process_attendee_donation(self, session, payment_id, stripeToken):
     charge = Charge.get(payment_id)
     [attendee] = charge.attendees
     message = charge.charge_cc(session, stripeToken)
     if message:
         raise HTTPRedirect('attendee_donation_form?id=' + attendee.id + '&message={}', message)
     else:
         # It's safe to assume the attendee exists in the database already.
         # The only path to reach this method requires the attendee to have
         # already paid for their registration, thus the attendee has been
         # saved to the database.
         attendee = session.query(Attendee).get(attendee.id)
         attendee.amount_paid_override += charge.dollar_amount
         if attendee.paid == c.NOT_PAID and attendee.amount_paid == attendee.total_cost:
             attendee.paid = c.HAS_PAID
         session.add_receipt_items_by_model(charge, attendee)
         raise HTTPRedirect('badge_updated?id={}&message={}', attendee.id, 'Your payment has been accepted')
예제 #19
0
 def arbitrary_charge(self,
                      session,
                      payment_id,
                      stripeToken,
                      return_to='arbitrary_charge_form'):
     charge = Charge.get(payment_id)
     message = charge.charge_cc(session, stripeToken)
     if message:
         raise HTTPRedirect('arbitrary_charge_form?message={}', message)
     else:
         session.add(
             ArbitraryCharge(
                 amount=charge.dollar_amount,
                 what=charge.description,
                 reg_station=cherrypy.session.get('reg_station')))
         raise HTTPRedirect('{}?message={}', return_to,
                            'Charge successfully processed')
예제 #20
0
    def prereg_payment(self, session, payment_id=None, stripeToken=None, message=''):
        if not payment_id or not stripeToken or c.HTTP_METHOD != 'POST':
            message = 'The payment was interrupted. Please check below to ensure you received your badge.'
            raise HTTPRedirect('paid_preregistrations?message={}', message)

        charge = Charge.get(payment_id)
        if not charge.total_cost:
            message = 'Your total cost was $0. Your credit card has not been charged.'
        elif charge.amount != charge.total_cost:
            message = 'Our preregistration price has gone up; ' \
                'please fill out the payment form again at the higher price'
        else:
            for attendee in charge.attendees:
                if not message and attendee.promo_code_id:
                    message = check_prereg_promo_code(session, attendee)
            
            if not message:
                message = charge.charge_cc(session, stripeToken)

        if message:
            raise HTTPRedirect('index?message={}', message)

        # from this point on, the credit card has actually been charged but we haven't marked anything as charged yet.
        # be ultra-careful until the attendees/groups are marked paid and written to the DB or we could end up in a
        # situation where we took the payment, but didn't mark the cards charged
        for attendee in charge.attendees:
            attendee.paid = c.HAS_PAID
            attendee.amount_paid_override = attendee.total_cost
            attendee_name = 'PLACEHOLDER' if attendee.is_unassigned else attendee.full_name
            log.info("PAYMENT: marked attendee id={} ({}) as paid", attendee.id, attendee_name)
            session.add(attendee)

            if attendee.badges:
                pc_group = session.create_promo_code_group(attendee, attendee.name, int(attendee.badges) - 1)
                session.add(pc_group)

        session.commit() # save PromoCodeGroup to the database to generate receipt items correctly
        for attendee in charge.attendees:
            session.add_receipt_items_by_model(charge, attendee)

        Charge.unpaid_preregs.clear()
        Charge.paid_preregs.extend(charge.targets)

        log.debug('PAYMENT: prereg payment actual charging process FINISHED for stripeToken={}', stripeToken)
        raise HTTPRedirect('paid_preregistrations?payment_received={}', charge.dollar_amount)
예제 #21
0
 def purchases_charge(self, session, payment_id, stripeToken):
     charge = Charge.get(payment_id)
     message = charge.charge_cc(session, stripeToken)
     attendee_id = charge.attendees[0].id
     attendee = session.attendee(attendee_id)
     receipt = attendee.art_show_receipt
     if message:
         raise HTTPRedirect('pieces_bought?id={}&message={}', attendee.id,
                            message)
     else:
         session.add(
             ArtShowPayment(
                 receipt=receipt,
                 amount=charge.amount,
                 type=c.STRIPE,
             ))
         raise HTTPRedirect('pieces_bought?id={}&message={}', attendee.id,
                            'Charge successfully processed')
예제 #22
0
    def process_group_payment(self, session, payment_id, stripeToken):
        charge = Charge.get(payment_id)
        [group] = charge.groups
        message = charge.charge_cc(session, stripeToken)
        if message:
            raise HTTPRedirect('group_members?id={}&message={}', group.id, message)
        else:
            group.amount_paid += charge.dollar_amount

            session.merge(group)
            if group.is_dealer:
                try:
                    send_email.delay(
                        c.MARKETPLACE_EMAIL,
                        c.MARKETPLACE_EMAIL,
                        'Dealer Payment Completed',
                        render('emails/dealers/payment_notification.txt', {'group': group}, encoding=None),
                        model=group.to_dict('id'))
                except Exception:
                    log.error('unable to send dealer payment confirmation email', exc_info=True)
            raise HTTPRedirect('group_members?id={}&message={}', group.id, 'Your payment has been accepted!')
예제 #23
0
    def pay_for_extra_codes(self, session, payment_id, stripeToken):
        charge = Charge.get(payment_id)
        [attendee] = charge.attendees
        group = session.attendee(attendee.id).promo_code_groups[0]
        badges_to_add = charge.dollar_amount // c.GROUP_PRICE
        if charge.dollar_amount % c.GROUP_PRICE:
            message = 'Our preregistration price has gone up since you tried to add more codes; please try again'
        else:
            message = charge.charge_cc(session, stripeToken)

        if message:
            raise HTTPRedirect('group_promo_codes?id={}&message={}', group.id, message)
        else:
            session.add_codes_to_pc_group(group, badges_to_add)
            attendee.amount_paid += charge.dollar_amount
            session.merge(attendee)

            raise HTTPRedirect(
                'group_promo_codes?id={}&message={}',
                group.id,
                'You payment has been accepted and the codes have been added to your group')
예제 #24
0
    def pay_for_extra_codes(self, session, payment_id, stripeToken):
        charge = Charge.get(payment_id)
        [attendee] = charge.attendees
        group = session.attendee(attendee.id).promo_code_groups[0]
        badges_to_add = charge.dollar_amount // c.GROUP_PRICE
        if charge.dollar_amount % c.GROUP_PRICE:
            message = 'Our preregistration price has gone up since you tried to add more codes; please try again'
        else:
            message = charge.charge_cc(session, stripeToken)

        if message:
            raise HTTPRedirect('group_promo_codes?id={}&message={}', group.id, message)
        else:
            session.add_codes_to_pc_group(group, badges_to_add)
            attendee.amount_paid += charge.dollar_amount
            session.merge(attendee)

            raise HTTPRedirect(
                'group_promo_codes?id={}&message={}',
                group.id,
                'You payment has been accepted and the codes have been added to your group')
예제 #25
0
    def prereg_payment(self, session, payment_id=None, stripeToken=None):
        if not payment_id or not stripeToken or c.HTTP_METHOD != 'POST':
            message = 'The payment was interrupted. Please check below to ensure you received your badge.'
            raise HTTPRedirect('paid_preregistrations?message={}', message)

        charge = Charge.get(payment_id)
        if not charge.total_cost:
            message = 'Your total cost was $0. Your credit card has not been charged.'
        elif charge.amount != charge.total_cost:
            message = 'Our preregistration price has gone up; ' \
                'please fill out the payment form again at the higher price'
        else:
            message = charge.charge_cc(session, stripeToken)

        if message:
            raise HTTPRedirect('index?message={}', message)

        # from this point on, the credit card has actually been charged but we haven't marked anything as charged yet.
        # be ultra-careful until the attendees/groups are marked paid and written to the DB or we could end up in a
        # situation where we took the payment, but didn't mark the cards charged

        for attendee in charge.attendees:
            attendee.paid = c.HAS_PAID
            attendee_name = 'PLACEHOLDER' if attendee.is_unassigned else attendee.full_name
            log.info("PAYMENT: marked attendee id={} ({}) as paid", attendee.id, attendee_name)
            session.add(attendee)

            if attendee.badges:
                pc_group = session.create_promo_code_group(attendee, attendee.name, int(attendee.badges) - 1)
                session.add(pc_group)
                session.commit()
            attendee.amount_paid = attendee.total_cost

        session.commit()  # paranoia: really make sure we lock in marking taking payments in the database

        Charge.unpaid_preregs.clear()
        Charge.paid_preregs.extend(charge.targets)

        log.debug('PAYMENT: prereg payment actual charging process FINISHED for stripeToken={}', stripeToken)
        raise HTTPRedirect('paid_preregistrations?payment_received={}', charge.dollar_amount)