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))
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})
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)