def pay(id): order = OrderBiz.get_order_by_id(id) if not order: raise DaixieError(u'订单不存在') elif order.status != Order.STATUS.CREATED: raise DaixieError(u'该订单已付款') elif order.expect_order_price > current_user.account: raise DaixieError(u'账户余额不足') try: #从账户扣钱 amount = int(order.expect_order_price) UserBiz.refund(order.user_id, amount, Transaction.TYPE.PAY, u'用户对订单进行付款') order.status = Order.STATUS.PAID db_session.add(order) db_session.commit() except DaixieError as e: OrderBiz.refund(id) raise e return PAY_ORDER_SUCCESS