Ejemplo n.º 1
0
    def payfor_shopcart(self, userobj):
        """
        购物车结算模块,功能包括:购物车付款、购物记录写入文件、
        :param kwargs: 字典参数 {cost=购物车金额, userobj=用户对象}
        :return:
        """
        # 判断用户有没有绑定信用卡
        if not userobj.bindcard:
            # 用户没有绑定信用卡,直接返回错误,在外层绑卡
            return errorcode.CARD_NOT_BINDED
        else:
            # 用户绑定了信用卡了, 获取信用卡信息(实例化对象)
            cardobj = CreditCard(userobj.bindcard)
            # 卡余额够吗
            if cardobj.credit_balance < self.shopping_cost:
                common.show_message("您的信用卡本月额度不够! ", "NOTICE")
                return errorcode.BALANCE_NOT_ENOUGHT
            else:
                # 生成一个流水号
                serno = common.create_serialno()
                # 调用卡的支付模块进行支付
                cardobj.card_pay(self.shopping_cost, 1, serno)
                # 记录购物流水
                shopping_record = {userobj.username: {"time": datetime.now().strftime("%Y-%m-%d %H:%M"),
                                                      "cost": self.shopping_cost,
                                                      "serno": serno,
                                                      "detail": self.shopping_cart}}
                # 写入报表记录文件
                dbapi.append_db_json(shopping_record, self.__shop_report_file)

                # 购物结算完成后将对象的购物车清空, 购物车商品总价清0 ,待下次购物
                self.shopping_cart.clear()
                self.shopping_cost = 0
                return errorcode.NO_ERROR
Ejemplo n.º 2
0
    def payfor_shopcart(self, userobj):
        """
        购物车结算模块,功能包括:购物车付款、购物记录写入文件、
        :param kwargs: 字典参数 {cost=购物车金额, userobj=用户对象}
        :return:
        """
        # 判断用户有没有绑定信用卡
        if not userobj.bindcard:
            # 用户没有绑定信用卡,直接返回错误,在外层绑卡
            return errorcode.CARD_NOT_BINDED
        else:
            # 用户绑定了信用卡了, 获取信用卡信息(实例化对象)
            cardobj = CreditCard(userobj.bindcard)
            # 卡余额够吗
            if cardobj.credit_balance < self.shopping_cost:
                common.show_message("您的信用卡本月额度不够! ", "NOTICE")
                return errorcode.BALANCE_NOT_ENOUGHT
            else:
                # 生成一个流水号
                serno = common.create_serialno()
                # 调用卡的支付模块进行支付
                cardobj.card_pay(self.shopping_cost, 1, serno)
                # 记录购物流水
                shopping_record = {userobj.username: {"time": datetime.now().strftime("%Y-%m-%d %H:%M"),
                                                      "cost": self.shopping_cost,
                                                      "serno": serno,
                                                      "detail": self.shopping_cart}}
                # 写入报表记录文件
                dbapi.append_db_json(shopping_record, self.__shop_report_file)

                # 购物结算完成后将对象的购物车清空, 购物车商品总价清0 ,待下次购物
                self.shopping_cart.clear()
                self.shopping_cost = 0
                return errorcode.NO_ERROR
Ejemplo n.º 3
0
 def fetch_money(self, count, passwd):
     """
     提现
     :param count: 提现金额
     :param passwd:信用卡提现密码
     :return: 返回错误类型码
     """
     totalfee = count + count * self.feerate
     check_result = self._pay_check(totalfee, passwd)
     if check_result == errorcode.NO_ERROR:
         # 扣取提现金额并写入数据库,生成账单
         self.card_pay(count, 3, common.create_serialno())
         # 扣取手续费并写入数据库, 生成账单
         self.card_pay(count * self.feerate, 4, common.create_serialno())
         return errorcode.NO_ERROR
     else:
         return check_result
Ejemplo n.º 4
0
 def fetch_money(self, count, passwd):
     """
     提现
     :param count: 提现金额
     :param passwd:信用卡提现密码
     :return: 返回错误类型码
     """
     totalfee = count + count * self.feerate
     check_result = self._pay_check(totalfee, passwd)
     if check_result == errorcode.NO_ERROR:
         # 扣取提现金额并写入数据库,生成账单
         self.card_pay(count, 3, common.create_serialno())
         # 扣取手续费并写入数据库, 生成账单
         self.card_pay(count * self.feerate, 4, common.create_serialno())
         return errorcode.NO_ERROR
     else:
         return check_result
Ejemplo n.º 5
0
 def translate_money(self, trans_count, passwd, trans_cardobj):
     """
     信用卡转账模块
     :param trans_count: 要转账的金额
     :param passwd: 信用卡密码
     :param trans_cardobj: 对方卡号对应的卡对象
     :return: 转账结果
     """
     totalfee = trans_count + trans_count * self.feerate
     check_result = self._pay_check(totalfee, passwd)
     if check_result == errorcode.NO_ERROR:
         # 先扣款,生成消费流水账单
         self.card_pay(trans_count, 2, common.create_serialno())
         # 扣手续费, 生成消费流水账单
         self.card_pay(trans_count * self.feerate, 4, common.create_serialno())
         # 给对方卡充值,并写入数据库文件
         trans_cardobj.credit_balance += totalfee
         trans_cardobj.update_card()
         return errorcode.NO_ERROR
     else:
         return check_result
Ejemplo n.º 6
0
 def translate_money(self, trans_count, passwd, trans_cardobj):
     """
     信用卡转账模块
     :param trans_count: 要转账的金额
     :param passwd: 信用卡密码
     :param trans_cardobj: 对方卡号对应的卡对象
     :return: 转账结果
     """
     totalfee = trans_count + trans_count * self.feerate
     check_result = self._pay_check(totalfee, passwd)
     if check_result == errorcode.NO_ERROR:
         # 先扣款,生成消费流水账单
         self.card_pay(trans_count, 2, common.create_serialno())
         # 扣手续费, 生成消费流水账单
         self.card_pay(trans_count * self.feerate, 4,
                       common.create_serialno())
         # 给对方卡充值,并写入数据库文件
         trans_cardobj.credit_balance += totalfee
         trans_cardobj.update_card()
         return errorcode.NO_ERROR
     else:
         return check_result