def pytools_capture(request): if request.method != 'POST': return user = request.user user_creation = user.date_joined if user.is_authenticated else now() pagarme_resp = payment_facade.pytools_capture(request.POST['token'], user_creation) customer = pagarme_resp['customer'] customer_email = customer['email'] source = request.GET.get('utm_source', default='unknown') customer_first_name = customer['name'].split()[0] payment_method = pagarme_resp['payment_method'] if payment_method == 'credit_card': if user.is_authenticated: _promote_client(user, request) else: user_facade.force_register_client(customer_first_name, customer_email, source) dct = {'redirect_url': reverse('payments:pytools_thanks')} elif payment_method == 'boleto': if not user.is_authenticated: user = user_facade.force_register_lead(customer_first_name, customer_email, source) user_facade.client_generated_boleto(user) path = reverse('payments:pytools_boleto') qs = urlencode(_extract_boleto_params(pagarme_resp)) dct = {'redirect_url': f'{path}?{qs}'} else: raise ValueError(f'Invalid payment method {payment_method}') return JsonResponse(dct)
def capture_payment(token, user, source='unknow'): pagarme_resp = _payment_facade.membership_capture( calculate_membership_price(user), token) customer = pagarme_resp['customer'] customer_email = customer['email'] customer_first_name = customer['name'].split()[0] payment_method = pagarme_resp['payment_method'] if payment_method == 'credit_card': if user.is_authenticated: _user_facade.promote_member(user, source) else: _user_facade.force_register_member(customer_first_name, customer_email, source) dct = {'redirect_url': reverse('payments:membership_thanks')} elif payment_method == 'boleto': if not user.is_authenticated: user = _user_facade.force_register_lead(customer_first_name, customer_email, source) _user_facade.member_generated_boleto(user) path = reverse('payments:membership_boleto') qs = urlencode( {k: pagarme_resp[k] for k in ['boleto_barcode', 'boleto_url']}) dct = {'redirect_url': f'{path}?{qs}'} else: raise ValueError(f'Invalid payment method {payment_method}') return dct
def user_factory(pagarme_transaction): customer = pagarme_transaction['customer'] customer_email = customer['email'].lower() customer_first_name = customer['name'].split()[0] return user_facade.force_register_lead(customer_first_name, customer_email)