예제 #1
0
def bill_order(request, trx_id, passenger):
    billing_trx = BillingTransaction.by_id(trx_id)

    request.session[CURRENT_ORDER_KEY] = None

    page_specific_class = "transaction_page"
    pending = BillingStatus.PENDING
    processing = BillingStatus.PROCESSING
    approved = BillingStatus.APPROVED
    failed = BillingStatus.FAILED

    return custom_render_to_response("transaction_page.html", locals(), context_instance=RequestContext(request))
예제 #2
0
def get_trx_status(request, passenger):
    trx_id = request.GET.get("trx_id")
    trx = BillingTransaction.by_id(trx_id)

    if trx and trx.passenger == passenger:
        response = {'status': trx.status}
        if trx.status == BillingStatus.FAILED:
            msg = get_custom_message(trx.provider_status, trx.comments)
            if msg:
                response.update({'error_message': msg})
        return JSONResponse(response)

    return JSONResponse({'status': BillingStatus.FAILED})
예제 #3
0
def billing_task(request, token, card_expiration, billing_transaction_id, action):
    logging.info("billing task: transaction_id=%s" % billing_transaction_id)
    action = int(action)

    # update billing transaction amount
    billing_transaction = BillingTransaction.by_id(billing_transaction_id)
    billing_transaction.amount = billing_transaction.order.get_billing_amount()
    if billing_transaction.dirty_fields:
        logging.info("billing_task [%s]: updating billing transaction amount: %s --> %s" % (BillingAction.get_name(action), billing_transaction.dirty_fields.get("amount"), billing_transaction.amount))
        billing_transaction.save()

    callback_args = request.POST.get("callback_args")
    if callback_args:
        callback_args = pickle.loads(callback_args.encode("utf-8"))

    amount = billing_transaction.amount_in_cents

    if action == BillingAction.COMMIT:
        return billing_backend.do_J5(token, amount, card_expiration, billing_transaction, callback_args=callback_args)
    elif action == BillingAction.CHARGE:
        return billing_backend.do_J4(token, amount, card_expiration, billing_transaction)
    else:
        raise InvalidOperationError("Unknown action for billing: %s" % action)