Esempio n. 1
0
def usaepay_user(request, username):
    user = get_object_or_404(User, username=username)

    # When we add a card we POST to USAePay and it comes back to this page
    # Any errors will be communicated to us in this GET variable
    if 'UMerror' in request.GET:
        messages.add_message(request, messages.ERROR, request.GET.get('UMerror'))

    history = None
    try:
        api = PaymentAPI()

        if 'disable_all' in request.POST:
            api.disable_recurring(username)

        customer_id = request.POST.get("customer_id", None)
        action = request.POST.get("action", "")
        if customer_id:
            if action == "verify_profile":
                # Run a $1.00 authorization to verify this profile works
                api.run_transaction(customer_id, 1.00, "Office Nomads Authorization", auth_only=True)
                messages.add_message(request, messages.INFO, "Profile authorization for %s successful" % username)
            elif action == "delete_profile":
                # TODO
                messages.add_message(request, messages.INFO, "Billing profile deleted for %s" % username)
            elif action == "manual_charge":
                invoice = request.POST.get("invoice")
                description = request.POST.get("description")
                amount = request.POST.get("amount")
                comment = request.POST.get("comment")
                api.run_transaction(customer_id, amount, description, invoice=invoice, comment=comment)
                messages.add_message(request, messages.INFO, "Sale for %s successfully authorized" % username)
            elif action == "edit_recurring":
                next_date = request.POST.get("next_date")
                description = request.POST.get("description")
                comment = request.POST.get("comment")
                amount = request.POST.get("amount")
                enabled = request.POST.get("enabled", "") == "on"
                api.update_recurring(customer_id, enabled, next_date, description,comment, amount)
                messages.add_message(request, messages.INFO, "Recurring billing updated for %s" % username)
            elif action == "edit_billing_details":
                address = request.POST.get("address")
                zipcode = request.POST.get("zipcode")
                email = request.POST.get("email")
                api.update_billing_details(customer_id, address, zipcode, email)
                messages.add_message(request, messages.INFO, "Billing detail updated for %s" % username)
        elif action == "email_receipt":
            transaction_id = request.POST.get("transaction_id")
            api.email_receipt(transaction_id, user.email)
            messages.add_message(request, messages.INFO, "Receipt emailed to: %s" % user.email)

        # Lastly pull all customers for this user
        history = api.get_history(username)
    except Exception as e:
        messages.add_message(request, messages.ERROR, e)

    context = {'user': user, 'history': history, 'settings':settings }
    return render(request, 'staff/billing/usaepay.html', context)
Esempio n. 2
0
def usaepay_user(request, username):
    user = get_object_or_404(User, username=username)

    # When we add a card we POST to USAePay and it comes back to this page
    # Any errors will be communicated to us in this GET variable
    if 'UMerror' in request.GET:
        messages.add_message(request, messages.ERROR, request.GET.get('UMerror'))

    history = None
    try:
        api = PaymentAPI()

        if 'disable_all' in request.POST:
            api.disable_recurring(username)

        customer_id = request.POST.get("customer_id", None)
        action = request.POST.get("action", "")
        if customer_id:
            if action == "verify_profile":
                # Run a $1.00 authorization to verify this profile works
                api.run_transaction(customer_id, 1.00, "Office Nomads Authorization", auth_only=True)
                messages.add_message(request, messages.INFO, "Profile authorization for %s successful" % username)
            elif action == "delete_profile":
                # TODO
                messages.add_message(request, messages.INFO, "Billing profile deleted for %s" % username)
            elif action == "manual_charge":
                invoice = request.POST.get("invoice")
                description = request.POST.get("description")
                amount = request.POST.get("amount")
                comment = request.POST.get("comment")
                api.run_transaction(customer_id, amount, description, invoice=invoice, comment=comment)
                messages.add_message(request, messages.INFO, "Sale for %s successfully authorized" % username)
            elif action == "edit_recurring":
                next_date = request.POST.get("next_date")
                description = request.POST.get("description")
                comment = request.POST.get("comment")
                amount = request.POST.get("amount")
                enabled = request.POST.get("enabled", "") == "on"
                api.update_recurring(customer_id, enabled, next_date, description,comment, amount)
                messages.add_message(request, messages.INFO, "Recurring billing updated for %s" % username)
            elif action == "edit_billing_details":
                address = request.POST.get("address")
                zipcode = request.POST.get("zipcode")
                email = request.POST.get("email")
                api.update_billing_details(customer_id, address, zipcode, email)
                messages.add_message(request, messages.INFO, "Billing detail updated for %s" % username)
        elif action == "email_receipt":
            transaction_id = request.POST.get("transaction_id")
            api.email_receipt(transaction_id, user.email)
            messages.add_message(request, messages.INFO, "Receipt emailed to: %s" % user.email)

        # Lastly pull all customers for this user
        history = api.get_history(username)
    except Exception as e:
        messages.add_message(request, messages.ERROR, e)

    context = {'user': user, 'history': history, 'settings':settings }
    return render(request, 'staff/billing/usaepay.html', context)