예제 #1
0
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)
예제 #2
0
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
예제 #3
0
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)