Exemple #1
0
 def get(self, oiid):
     result = {'status' : False, 'msg' : 0}
     user = self.get_current_user()
     
     if user:
         try:
             orderitem  = OrderItem.get(id = oiid)
             order = Order.get(id = orderitem.oid)
             
             if order.uid == user.id:
                 if OrderItem.select().where(OrderItem.oid == orderitem.oid).count() == 1:
                     order.delete_instance()
                     
                     if user.order > 0:
                         user.order = user.order - 1
                         user.save()
                         self.session['user'] = user
                         self.session.save()
                 
                 orderitem.delete_instance()
                 result['status'] = True
                 result['msg'] = 200
                 
             else:
                 result['msg'] = 403
             
         except Exception, ex:
             logging.error(ex)
             result['msg'] = 500
Exemple #2
0
 def get(self, oid):
     try:
         order = Order.get(id = oid)
     except:
         pass
     
     self.render("admin/changeorder.html", order = order)
Exemple #3
0
 def post(self, oid, sid):
     
     result = {'status' : False, 'msg' : 0}
     user = self.get_current_user()
     
     if user:
         try:
             order = Order.get(id = oid)
             
             if order.uid == user.id:
                 try:
                     orderitem = OrderItem.get(OrderItem.oid == oid, OrderItem.sid == sid)
                 except:
                     orderitem = OrderItem()
                 
                 orderitem.oid = oid
                 orderitem.sid = sid
                 orderitem.num = orderitem.num + 1
                 
                 try:
                     orderitem.save()
                     result['status'] = True
                     result['msg'] = 200
                 except Exception, ex:
                     logging.error(ex)
                     result['msg'] = 500
             else:
                 result['msg'] = 403
Exemple #4
0
def check_order_store_quantity(store_id, oid):
    result = 0
    items = OrderItem.select().where(OrderItem.order == oid)
    r = 0
    if store_id:
        for i in items:
            if i.product.is_store == 1:  # and i.product.store.id == int(store_id)
                r += 1
            else:
                r += check_store_product_quantity(store_id,
                                                  i.product_standard.id)
        if r == items.count():
            result = 1
    else:
        list = []
        order = Order.get(Order.id == oid)
        store = Store.select().where(Store.status == 1)
        sid = 0
        for s in store:
            ss = getDistanceAS(order.take_address.replace(' ', ''), s.id)
            if ss['flag'] == 1:
                list.append(float(ss['data']))
                if float(ss['data']) < setting.PeiSongDistance:
                    sid = s.id
        for i in items:
            if i.product.is_store == 1 and i.product.store.id == sid:
                r += 1
            else:
                r += check_store_product_quantity(sid, i.product_standard.id)
        if r == items.count():
            result = 1
    return result
Exemple #5
0
    def get(self):
        orderitems = []
        user = self.current_user

        try:
            order = Order.get(uid=user.id, status=0)

            for orderitem in OrderItem.select().where(
                    OrderItem.oid == order.id).dicts():
                try:
                    orderitem['shop'] = Shop.get(id=orderitem['sid'])
                    if orderitem['said'] > 0:
                        orderitem['shopattr'] = ShopAttr.get(
                            id=orderitem['said'])
                    orderitems.append(orderitem)
                except:
                    pass
        except:
            order = Order()

        ashops = Shop.select().where((Shop.cid == 2) & (Shop.status != 9))
        self.render("shop/order.html",
                    orderitems=orderitems,
                    order=order,
                    ashops=ashops)
Exemple #6
0
    def get(self, oid):
        try:
            order = Order.get(id=oid)
        except:
            pass

        self.render("admin/changeorder.html", order=order)
Exemple #7
0
 def get(self, oid):
     orderitems = []
     price = 0.0
     credit = 0.0
     order = None
     try:
         order = Order.get(id = oid)
         print order.id
         for orderitem in OrderItem.select().where(OrderItem.oid == order.id).dicts():
             try:
                 orderitem['shop'] = Shop.get(id = orderitem['sid'])
                 _oiprice = orderitem['shop'].price
                 
                 if orderitem['said'] > 0:
                     orderitem['shopattr'] = ShopAttr.get(id = orderitem['said'])
                     if orderitem['shop'].cid == 1:
                         _oicredit = orderitem['shopattr'].price
                         credit = credit + _oicredit * orderitem['num']
                         _oiprice = orderitem['shopattr'].price
                     else:
                         _oiprice = orderitem['shopattr'].price
                 else:
                     _oiprice = float(_oiprice)
                     
                 orderitems.append(orderitem)
                 price = price + float(_oiprice) * orderitem['num']
             except:
                 pass
         print price
     except:
         pass
     
     self.render("/responsive/user_confirmorder.html", order = order, credit = credit, orderitems = orderitems)
Exemple #8
0
    def post(self, oid, sid):

        result = {'status': False, 'msg': 0}
        user = self.get_current_user()

        if user:
            try:
                order = Order.get(id=oid)

                if order.uid == user.id:
                    try:
                        orderitem = OrderItem.get(OrderItem.oid == oid,
                                                  OrderItem.sid == sid)
                    except:
                        orderitem = OrderItem()

                    orderitem.oid = oid
                    orderitem.sid = sid
                    orderitem.num = orderitem.num + 1

                    try:
                        orderitem.save()
                        result['status'] = True
                        result['msg'] = 200
                    except Exception, ex:
                        logging.error(ex)
                        result['msg'] = 500
                else:
                    result['msg'] = 403
Exemple #9
0
    def get(self, oiid):
        result = {'status': False, 'msg': 0}
        user = self.get_current_user()

        if user:
            try:
                orderitem = OrderItem.get(id=oiid)
                order = Order.get(id=orderitem.oid)

                if order.uid == user.id:
                    if OrderItem.select().where(
                            OrderItem.oid == orderitem.oid).count() == 1:
                        order.delete_instance()

                        if user.order > 0:
                            user.order = user.order - 1
                            user.save()
                            self.session['user'] = user
                            self.session.save()

                    orderitem.delete_instance()
                    result['status'] = True
                    result['msg'] = 200

                else:
                    result['msg'] = 403

            except Exception, ex:
                logging.error(ex)
                result['msg'] = 500
Exemple #10
0
    def get(self):
        orderitems = []
        user = self.current_user

        order = None

        distributions = self.get_distributions()
        price = 0.0
        credit = 0.0

        try:
            order = Order.get(uid=user.id, status=0)

            try:
                mobile = '18014349809'
                sendmsg(self.settings, mobile, '新订单')
            except:
                pass

            for orderitem in OrderItem.select().where(
                    OrderItem.oid == order.id).dicts():
                try:
                    orderitem['shop'] = Shop.get(id=orderitem['sid'])
                    _oiprice = orderitem['shop'].price

                    if orderitem['said'] > 0:
                        orderitem['shopattr'] = ShopAttr.get(
                            id=orderitem['said'])
                        if orderitem['shop'].cid == 1:
                            _oicredit = orderitem['shopattr'].price
                            credit = credit + _oicredit * orderitem['num']
                        else:
                            _oiprice = orderitem['shopattr'].price
                    else:
                        _oiprice = float(_oiprice)

                    orderitems.append(orderitem)

                    price = price + _oiprice * orderitem['num']

                except:
                    pass
            order.price = price
            order.save()

        except:
            pass

        if orderitems:
            self.render("shop/settle.html",
                        tmday=datetime.date.today() +
                        datetime.timedelta(days=1),
                        order=order,
                        orderitems=orderitems,
                        distributions=distributions.values(),
                        credit=credit)
Exemple #11
0
    def post(self):

        result = {'status': False, 'msg': 0}
        user = self.get_current_user()

        if user:
            sid = int(self.get_argument("sid", 0))
            said = int(self.get_argument("said", 0))
            num = int(self.get_argument("num", 1))

            #判断商品是否下架
            if sid > 0 and said > 0 and num > 0:
                try:
                    Shop.get(id=sid)
                    ShopAttr.get(id=said)

                    #判断是否有未使用的订单或生成新订单
                    try:
                        try:
                            order = Order.get(uid=user.id, status=0)
                        except:
                            order = Order()
                            order.uid = user.id
                            order.mobile = user.mobile
                            order.ordered = int(time.time())
                            try:
                                order.save()
                            except Exception, ex:
                                logging.error(ex)

                        try:
                            orderitem = OrderItem.get(oid=order.id,
                                                      sid=sid,
                                                      said=said)
                        except:
                            orderitem = OrderItem()

                        orderitem.oid = order.id
                        orderitem.sid = sid
                        orderitem.said = said
                        orderitem.num = orderitem.num + num
                        orderitem.save()

                        result['status'] = True
                        result['msg'] = 200

                    except Exception, ex:
                        logging.error(ex)
                        result['msg'] = 500

                except:
Exemple #12
0
    def post(self):
        
        result = {'status' : False, 'msg' : 0}
        user = self.get_current_user()
        
        if user:
            sid = int(self.get_argument("sid", 0))
            said = int(self.get_argument("said", 0))
            num = int(self.get_argument("num", 1))
            
            #判断商品是否下架
            if sid > 0 and said > 0 and num > 0:
                try:
                    Shop.get(id = sid)
                    ShopAttr.get(id = said)
                    
                    #判断是否有未使用的订单或生成新订单
                    try:
                        try:
                            order = Order.get(uid = user.id, status = 0)
                        except:
                            order = Order()
                            order.uid = user.id
                            order.mobile = user.mobile
                            order.ordered = int(time.time())
                            try:
                                order.save()
                            except Exception, ex:
                                logging.error(ex)
                        
                        try:
                            orderitem = OrderItem.get(oid = order.id, sid = sid, said = said)
                        except:
                            orderitem = OrderItem()

                        orderitem.oid = order.id
                        orderitem.sid = sid
                        orderitem.said = said
                        orderitem.num = orderitem.num + num
                        orderitem.save()
                        
                        result['status'] = True
                        result['msg'] = 200
                        
                    except Exception, ex:
                        logging.error(ex)
                        result['msg'] = 500
                    
                except:
Exemple #13
0
 def get(self):
     orderitems = []
     user = self.current_user
     
     order = None
     
     distributions = self.get_distributions()
     price = 0.0
     credit = 0.0
     
     try:
         order = Order.get(uid = user.id, status = 0)
         
         try:
             mobile = '18014349809'
             sendmsg(self.settings, mobile, '新订单')
         except:
             pass
             
         for orderitem in OrderItem.select().where(OrderItem.oid == order.id).dicts():
             try:
                 orderitem['shop'] = Shop.get(id = orderitem['sid'])
                 _oiprice = orderitem['shop'].price
                 
                 if orderitem['said'] > 0:
                     orderitem['shopattr'] = ShopAttr.get(id = orderitem['said'])
                     if orderitem['shop'].cid == 1:
                         _oicredit = orderitem['shopattr'].price
                         credit = credit + _oicredit * orderitem['num']
                     else:
                         _oiprice = orderitem['shopattr'].price
                 else:
                     _oiprice = float(_oiprice)
                 
                 orderitems.append(orderitem)
                 
                 price = price + _oiprice * orderitem['num']
                 
             except:
                 pass
         order.price = price
         order.save()
         
     except:
         pass
     
     if orderitems:
         self.render("shop/settle.html", tmday = datetime.date.today() + datetime.timedelta(days=1), order  = order, orderitems = orderitems, distributions = distributions.values(), credit = credit)
Exemple #14
0
 def post(self):
     alipay = Alipay(**self.settings)
     
     params = {}
     ks = list(self.request.arguments.keys())
     
     for k in ks:
         params[k] = self.get_argument(k)
         
     if alipay.notify_verify(params):
         tn = self.get_argument("out_trade_no", None)
         trade_no = self.get_argument("trade_no", None)
         trade_status = self.get_argument("trade_status", None)
         logging.info("notify:%s - %s - %s" % (tn, trade_no, trade_status))
         
         oid = int(tn.split('-')[1].replace('S', ''))
         
         try:
             order = Order.get(id = oid)
             
             if order.status == 0:
                 order.status = 1
                 order.save()
                 
                 user = User.get(id = order.uid)
                 user.credit = user.credit + int(order.price)
                 user.save()
                 
                 log = CreditLog()
                 log.uid = order.uid
                 log.mobile = user.mobile
                 log.ctype = 0
                 log.affect = int(order.price)
                 log.log = '成功下单 - %s' %  tn
                 log.save()
             
         except Exception as ex:
             logging.error(ex)
         
         if trade_status == 'WAIT_SELLER_SEND_GOODS':
             alipay.send_goods_confirm_by_platform(trade_no)
         
         self.write("success")
     else:
         self.write("fail")
Exemple #15
0
 def post(self):
     alipay = Alipay(**self.settings)
     
     params = {}
     ks = self.request.arguments.keys()
     
     for k in ks:
         params[k] = self.get_argument(k)
         
     if alipay.notify_verify(params):
         tn = self.get_argument("out_trade_no", None)
         trade_no = self.get_argument("trade_no", None)
         trade_status = self.get_argument("trade_status", None)
         logging.info("notify:%s - %s - %s" % (tn, trade_no, trade_status))
         
         oid = int(tn.split('-')[1].replace('S', ''))
         
         try:
             order = Order.get(id = oid)
             
             if order.status == 0:
                 order.status = 1
                 order.save()
                 
                 user = User.get(id = order.uid)
                 user.credit = user.credit + int(order.price)
                 user.save()
                 
                 log = CreditLog()
                 log.uid = order.uid
                 log.mobile = user.mobile
                 log.ctype = 0
                 log.affect = int(order.price)
                 log.log = u'成功下单 - %s' %  tn
                 log.save()
             
         except Exception, ex:
             logging.error(ex)
         
         if trade_status == 'WAIT_SELLER_SEND_GOODS':
             alipay.send_goods_confirm_by_platform(trade_no)
         
         self.write("success")
Exemple #16
0
 def get(self):
     alipay = Alipay(**self.settings)
     
     params = {}
     ks = list(self.request.arguments.keys())
     
     for k in ks:
         params[k] = self.get_argument(k)
     
     if alipay.notify_verify(params):
         tn = self.get_argument("out_trade_no", None)
         trade_no = self.get_argument("trade_no", None)
         trade_status = self.get_argument("trade_status", None)
         logging.info("return:%s - %s - %s" % (tn, trade_no, trade_status))
         oid = int(tn.split('-')[1].replace('S', ''))
         
         try:
             order = Order.get(id = oid)
             order.status = 1
             order.save()
             
             user = User.get(id = order.uid)
             user.credit = user.credit + int(order.price)
             user.save()
             
             log = CreditLog()
             log.uid = order.uid
             log.mobile = user.mobile
             log.ctype = 0
             log.affect = int(order.price)
             log.log = '成功下单 - %s' %  tn
             log.save()
             
             self.session['user'] = user
             self.session.save()
         
             alipay.send_goods_confirm_by_platform(trade_no)
             self.flash("支付成功")
         except Exception as ex:
             logging.error(ex)
         else:
             self.flash("支付失败")
     self.redirect("/pay")
Exemple #17
0
 def get(self):
     alipay = Alipay(**self.settings)
     
     params = {}
     ks = self.request.arguments.keys()
     
     for k in ks:
         params[k] = self.get_argument(k)
     
     if alipay.notify_verify(params):
         tn = self.get_argument("out_trade_no", None)
         trade_no = self.get_argument("trade_no", None)
         trade_status = self.get_argument("trade_status", None)
         logging.info("return:%s - %s - %s" % (tn, trade_no, trade_status))
         oid = int(tn.split('-')[1].replace('S', ''))
         
         try:
             order = Order.get(id = oid)
             order.status = 1
             order.save()
             
             user = User.get(id = order.uid)
             user.credit = user.credit + int(order.price)
             user.save()
             
             log = CreditLog()
             log.uid = order.uid
             log.mobile = user.mobile
             log.ctype = 0
             log.affect = int(order.price)
             log.log = u'成功下单 - %s' %  tn
             log.save()
             
             self.session['user'] = user
             self.session.save()
         
             alipay.send_goods_confirm_by_platform(trade_no)
             self.flash("支付成功")
         except Exception, ex:
             logging.error(ex)
         else:
             self.flash("支付失败")
Exemple #18
0
 def get(self):
     orderitems = []
     user = self.current_user
     
     try:
         order = Order.get(uid = user.id, status = 0)
         
         for orderitem in OrderItem.select().where(OrderItem.oid == order.id).dicts():
             try:
                 orderitem['shop'] = Shop.get(id = orderitem['sid'])
                 if orderitem['said'] > 0:
                     orderitem['shopattr'] = ShopAttr.get(id = orderitem['said'])
                 orderitems.append(orderitem)
             except:
                 pass
     except:
         order = Order()
     
     ashops = Shop.select().where((Shop.cid == 2) & (Shop.status != 9))
     self.render("shop/order.html", orderitems = orderitems, order = order, ashops = ashops)
Exemple #19
0
def buy():
    if request.method == 'POST' and request.form['name']:

        order = Order(
            # goods = request.form['goods'],
            name=request.form['name'],
            phone=request.form['phone'],
            pay_method=request.form['payment'],
            del_method=request.form['delivery'],
        )
        order.save()

        # huey = Goods.get(Goods.id == 2)
        # cs1 = Order.get(Order.id == 2)
        # huey.orders.add(cs1)
        #
        id_goods = request.form['goods'].split()
        for id in id_goods:
            huey = Goods.get(Goods.id == id)
            huey.orders.add(Order.get(Order.id == order.id))

    return redirect(url_for('goods_list'))
Exemple #20
0
    def get(self):
        orderitems = []
        user = self.current_user

        order = None

        distributions = self.get_distributions()
        price = 0.0
        credit = 0.0

        try:
            order = Order.get(uid=user.id, status=0)
            print order.id
            '''
            try:
                mobile = '18014349809'
                sendmsg(self.settings, mobile, '新订单')
            except:
                pass
            '''
            for orderitem in OrderItem.select().where(
                    OrderItem.oid == order.id).dicts():
                try:
                    orderitem['shop'] = Shop.get(id=orderitem['sid'])
                    _oiprice = orderitem['shop'].price

                    if orderitem['said'] > 0:
                        orderitem['shopattr'] = ShopAttr.get(
                            id=orderitem['said'])
                        if orderitem['shop'].cid == 1:
                            _oicredit = orderitem['shopattr'].price
                            credit = credit + _oicredit * orderitem['num']
                            _oiprice = orderitem['shopattr'].price
                        else:
                            _oiprice = orderitem['shopattr'].price
                    else:
                        _oiprice = float(_oiprice)

                    orderitems.append(orderitem)
                    price = price + float(_oiprice) * orderitem['num']
                except:
                    pass
            print price
            price_pay = str(int(price * 100))
            print 'price_pay:' + price_pay
            openid = user.openid
            print 'wx_pay:' + openid
            jsApi = JsApi_pub()
            unifiedOrder = UnifiedOrder_pub()
            unifiedOrder.setParameter("openid", openid)  #商品描述
            unifiedOrder.setParameter("body", "菜市优品购物")  #商品描述
            timeStamp = time.time()
            print timeStamp
            out_trade_no = "{0}{1}".format(WxPayConf_pub.APPID,
                                           int(timeStamp * 100))
            unifiedOrder.setParameter("out_trade_no", out_trade_no)  #商户订单号
            print 'out_trade_no:' + out_trade_no
            Order.update(wxid=out_trade_no).where(
                Order.id == order.id).execute()
            unifiedOrder.setParameter("total_fee", price_pay)  #总金额
            print WxPayConf_pub.NOTIFY_URL
            unifiedOrder.setParameter("notify_url",
                                      WxPayConf_pub.NOTIFY_URL)  #通知地址
            unifiedOrder.setParameter("trade_type", "JSAPI")  #交易类型

            prepay_id = unifiedOrder.getPrepayId()
            jsApi.setPrepayId(prepay_id)
            jsApiParameters = jsApi.getParameters()
            print jsApiParameters
            appid = json.loads(jsApiParameters).get("appId")
            timestamp = json.loads(jsApiParameters).get("timeStamp")
            noncestr = json.loads(jsApiParameters).get("nonceStr")
            package = json.loads(jsApiParameters).get("package")
            signtype = json.loads(jsApiParameters).get("signType")
            paysign = json.loads(jsApiParameters).get("paySign")
            print appid + timestamp + noncestr + package + signtype + paysign
            if orderitems:
                self.render("/responsive/wxpay.html",
                            tmday=datetime.date.today() +
                            datetime.timedelta(days=1),
                            order=order,
                            orderitems=orderitems,
                            distributions=distributions.values(),
                            credit=credit,
                            appid=appid,
                            timestamp=timestamp,
                            noncestr=noncestr,
                            package=package,
                            signtype=signtype,
                            paysign=paysign)
        except:
            pass
Exemple #21
0
 def get(self, oid):
     o = Order.get(id=oid)
     self.render('/store/order/order_detail.html', o=o, active='orders')
Exemple #22
0
 def post(self):
     order = None
     user = self.get_current_user()
     
     try:
         order = Order.get(uid = user.id, status = 0)
         
         mobile = self.get_argument("mobile", user.mobile)
         uaid = self.get_argument("uaid", None)
         distrid = self.get_argument("distrid", None)
         day = self.get_argument("day", datetime.date.today() + datetime.timedelta(days=1))
         hour = int(self.get_argument("hour", 10))
         payment = self.get_argument("payment", 0)
         message = self.get_argument("message", "")
         isinvoice = self.get_argument("isinvoice", 0)
         invoicesub = self.get_argument("invoicesub", 0)
         invoicename = self.get_argument("invoicename", "")
         invoicecontent = self.get_argument("payment", 1)
         shippingprice = self.get_argument("shippingprice", 0.0)
         
         if uaid and distrid:
             try:
                 distrib = Distribution.get(id = distrid)
                 shippingprice = distrib.price
             except:
                 pass
             
             order.mobile = mobile
             order.uaid = uaid
             order.distrid = distrid
             order.distribbed = "%s %d:00:00" % (str(day), hour)
             order.payment = payment
             order.message = message
             
             order.isinvoice = isinvoice
             
             if isinvoice:
                 order.invoicesub = invoicesub
                 order.invoicename = invoicename
                 order.invoicecontent = invoicecontent
             
             order.shippingprice = shippingprice
             
             order.save()
             
             
                 
             body = ""
             for orderitem in OrderItem.select().where(OrderItem.oid == order.id).dicts():
                     
                 try:
                     shop = Shop.get(id = orderitem['sid'])
                         
                     sname = ""
                     if orderitem['said'] > 0:
                         shopattr = ShopAttr.get(id = orderitem['said'])
                         
                         if shop.cid == 1:
                             credits = shopattr.price * orderitem['num']
                             
                             if credits > user.credit:
                                 OrderItem.delete().where(OrderItem.id == orderitem['id']).execute()
                             else:
                                 user = User.get(id = user.id)
                                 user.credit = user.credit - credits
                                 user.save()
                                 
                                 clog = CreditLog()
                                 clog.uid = user.id
                                 clog.mobile = user.mobile
                                 clog.ctype = 1
                                 clog.affect = int(credits)
                                 clog.log = u"购买" + shop.name
                                 clog.save()
                                 
                                 self.session['user'] = user
                                 self.session.save()
                                 
                         sname = shopattr.name
                         
                     #body = body + shop.name + " " + sname + " " + str(orderitem['num']) + "个\n"
                     body = body + shop.name + " " + sname + " " + str(orderitem['num'])
                 except Exception, ex:
                     logging.error(ex)
             
             tn = "U%d-S%d" % (user.id, order.id)
             
             if int(payment) == 1:
                 self.redirect("/alipay/topay?tn=%s&body=%s&price=%f" % (tn, body, order.price))
             else:
                 self.flash(u"请选择地址和收货方式")
                 self.redirect("/user/orders")
         else:
Exemple #23
0
    def post(self):
        order = None
        user = self.get_current_user()

        try:
            order = Order.get(uid=user.id, status=0)

            mobile = self.get_argument("mobile", user.mobile)
            uaid = self.get_argument("uaid", None)
            distrid = self.get_argument("distrid", None)
            day = self.get_argument(
                "day",
                datetime.date.today() + datetime.timedelta(days=1))
            hour = int(self.get_argument("hour", 10))
            payment = self.get_argument("payment", 0)
            message = self.get_argument("message", "")
            isinvoice = self.get_argument("isinvoice", 0)
            invoicesub = self.get_argument("invoicesub", 0)
            invoicename = self.get_argument("invoicename", "")
            invoicecontent = self.get_argument("payment", 1)
            shippingprice = self.get_argument("shippingprice", 0.0)

            if uaid and distrid:
                try:
                    distrib = Distribution.get(id=distrid)
                    shippingprice = distrib.price
                except:
                    pass

                order.mobile = mobile
                order.uaid = uaid
                order.distrid = distrid
                order.distribbed = "%s %d:00:00" % (str(day), hour)
                order.payment = payment
                order.message = message

                order.isinvoice = isinvoice

                if isinvoice:
                    order.invoicesub = invoicesub
                    order.invoicename = invoicename
                    order.invoicecontent = invoicecontent

                order.shippingprice = shippingprice

                order.save()

                body = ""
                for orderitem in OrderItem.select().where(
                        OrderItem.oid == order.id).dicts():

                    try:
                        shop = Shop.get(id=orderitem['sid'])

                        sname = ""
                        if orderitem['said'] > 0:
                            shopattr = ShopAttr.get(id=orderitem['said'])

                            if shop.cid == 1:
                                credits = shopattr.price * orderitem['num']

                                if credits > user.credit:
                                    OrderItem.delete().where(
                                        OrderItem.id ==
                                        orderitem['id']).execute()
                                else:
                                    user = User.get(id=user.id)
                                    user.credit = user.credit - credits
                                    user.save()

                                    clog = CreditLog()
                                    clog.uid = user.id
                                    clog.mobile = user.mobile
                                    clog.ctype = 1
                                    clog.affect = int(credits)
                                    clog.log = u"购买" + shop.name
                                    clog.save()

                                    self.session['user'] = user
                                    self.session.save()

                            sname = shopattr.name

                        body = body + shop.name + " " + sname + " " + str(
                            orderitem['num']) + "个\n"
                    except Exception, ex:
                        logging.error(ex)

                tn = "U%d-S%d" % (user.id, order.id)

                if int(payment) == 1:
                    self.redirect("/alipay/topay?tn=%s&body=%s&price=%f" %
                                  (tn, body, order.price))
                else:
                    self.flash(u"请选择地址和收货方式")
                    self.redirect("/user/orders")
            else:
Exemple #24
0
 def get(self):
     orderitems = []
     user = self.current_user
     
     order = None
     
     distributions = self.get_distributions()
     price = 0.0
     credit = 0.0
     
     try:
         order = Order.get(uid = user.id, status = 0)
         print order.id
         '''
         try:
             mobile = '18014349809'
             sendmsg(self.settings, mobile, '新订单')
         except:
             pass
         '''    
         for orderitem in OrderItem.select().where(OrderItem.oid == order.id).dicts():
             try:
                 orderitem['shop'] = Shop.get(id = orderitem['sid'])
                 _oiprice = orderitem['shop'].price
                 
                 if orderitem['said'] > 0:
                     orderitem['shopattr'] = ShopAttr.get(id = orderitem['said'])
                     if orderitem['shop'].cid == 1:
                         _oicredit = orderitem['shopattr'].price
                         credit = credit + _oicredit * orderitem['num']
                         _oiprice = orderitem['shopattr'].price
                     else:
                         _oiprice = orderitem['shopattr'].price
                 else:
                     _oiprice = float(_oiprice)
                     
                 orderitems.append(orderitem)
                 price = price + float(_oiprice) * orderitem['num']
             except:
                 pass
         print price
         price_pay = str(int(price*100))
         print 'price_pay:' + price_pay
         openid = user.openid
         print 'wx_pay:'+ openid
         jsApi = JsApi_pub()
         unifiedOrder = UnifiedOrder_pub()
         unifiedOrder.setParameter("openid",openid) #商品描述
         unifiedOrder.setParameter("body","菜市优品购物") #商品描述
         timeStamp = time.time()
         print timeStamp
         out_trade_no = "{0}{1}".format(WxPayConf_pub.APPID, int(timeStamp*100))
         unifiedOrder.setParameter("out_trade_no", out_trade_no) #商户订单号
         print 'out_trade_no:' + out_trade_no
         Order.update(wxid = out_trade_no).where(Order.id == order.id).execute()
         unifiedOrder.setParameter("total_fee", price_pay) #总金额
         print WxPayConf_pub.NOTIFY_URL
         unifiedOrder.setParameter("notify_url", WxPayConf_pub.NOTIFY_URL) #通知地址 
         unifiedOrder.setParameter("trade_type", "JSAPI") #交易类型
         
         prepay_id = unifiedOrder.getPrepayId()
         jsApi.setPrepayId(prepay_id)
         jsApiParameters = jsApi.getParameters()
         print jsApiParameters
         appid = json.loads(jsApiParameters).get("appId")
         timestamp = json.loads(jsApiParameters).get("timeStamp")
         noncestr = json.loads(jsApiParameters).get("nonceStr")
         package = json.loads(jsApiParameters).get("package")
         signtype = json.loads(jsApiParameters).get("signType")
         paysign = json.loads(jsApiParameters).get("paySign")
         print appid + timestamp + noncestr + package + signtype +paysign
         if orderitems:
             self.render("/responsive/wxpay.html", tmday = datetime.date.today() + datetime.timedelta(days=1), order  = order, orderitems = orderitems, distributions = distributions.values(), credit = credit, appid = appid, timestamp = timestamp, noncestr = noncestr, package = package, signtype = signtype, paysign = paysign)
     except:
         pass