def get(self): order_id = self.get_cookie("order_id") order = self.session.query(models.Order).filter_by(id=order_id).first() # print("[WeixinPay]Start Pay order.num:",order.num) if not order: return self.send_fail('order not found') totalPrice = order.new_totalprice wxPrice = int(totalPrice * 100) # print("[WeixinPay]full_url:",self.request.full_url()) path_url = self.request.full_url() shop_id = order.shop_id shop = self.session.query(models.Shop).filter_by(id=shop_id).first() if not shop: return self.send_fail('shop not found') shop_name = shop.shop_name shop_code = shop.shop_code shop_phone = shop.shop_phone jsApi = JsApi_pub() # order detail create_date = order.create_date receiver = order.receiver phone = order.phone address = order.address_text send_time = order.send_time remark = order.remark pay_type = order.pay_type online_type = order.online_type status = order.status order_num = order.num charge_types = self.session.query(models.ChargeType).filter( models.ChargeType.id.in_(eval(order.fruits).keys())).all() if order.type == 2: freight = order.shop.config.freight_on_time else: freight = order.shop.config.freight_now staff_id = order.SH2_id staff_info = self.session.query( models.Accountinfo).filter_by(id=staff_id).first() if staff_info is not None: sender_phone = staff_info.phone sender_img = staff_info.headimgurl_small else: sender_phone = None sender_img = None goods = [] f_d = eval(order.fruits) for f in f_d: goods.append([ f_d[f].get('fruit_name'), f_d[f].get('charge'), f_d[f].get('num') ]) qr_url = "" if not self.is_wexin_browser(): qr_url = self._qrwxpay(shop_name) # print("[WeixinPay]qr_url:",qr_url) return self.render('customer/online-qrwxpay.html',qr_url = qr_url,totalPrice = totalPrice,\ shop_name = shop_name,create_date=create_date,receiver=receiver,phone=phone,address=address,\ send_time = send_time,remark=remark,pay_type=pay_type,online_type=online_type,freight = freight,\ goods = goods,sender_phone=sender_phone,sender_img=sender_img,charge_types=charge_types,\ order=order,shop_code=shop_code,shop_phone = shop_phone) path = APP_OAUTH_CALLBACK_URL + self.reverse_url('onlineWxPay') code = self.args.get('code', None) if len(code) is 2: url = jsApi.createOauthUrlForCode(path) # print("[WeixinPay]code url:",url) return self.redirect(url) else: jsApi.setCode(code) openid = jsApi.getOpenid() # print("[WeixinPay]current code:",code) if not openid: print("[WeixinPay]OpenID not found") unifiedOrder = UnifiedOrder_pub() # totalPrice = self.args['totalPrice'] # totalPrice =float( self.get_cookie('money')) # print("[WeixinPay]totalPrice:",totalPrice) shop_name = re.compile(u'[\U00010000-\U0010ffff]').sub( u'', shop_name) unifiedOrder.setParameter("body", shop_name + '-订单号-' + str(order_num)) url = APP_OAUTH_CALLBACK_URL + '/customer/onlinewxpay' unifiedOrder.setParameter("notify_url", url) unifiedOrder.setParameter("openid", openid) unifiedOrder.setParameter("out_trade_no", order_num) # orderPriceSplite = (order.price) * 100 wxPrice = int(totalPrice * 100) # print("[WeixinPay]wxPrice:",wxPrice) unifiedOrder.setParameter('total_fee', wxPrice) unifiedOrder.setParameter('trade_type', "JSAPI") prepay_id = unifiedOrder.getPrepayId() # print("[WeixinPay]prepay_id:",prepay_id) if not prepay_id: return self.send_fail("微信支付失败,请稍后再试!") jsApi.setPrepayId(prepay_id) renderPayParams = jsApi.getParameters() # print("[WeixinPay]renderPayParams:",renderPayParams) noncestr = "".join( random.sample('zyxwvutsrqponmlkjihgfedcba0123456789', 10)) timestamp = datetime.datetime.now().timestamp() wxappid = 'wx0ed17cdc9020a96e' signature = self.signature(noncestr, timestamp, path_url) qr_url = self._qrwxpay(shop_name) return self.render("fruitzone/paywx.html",qr_url = qr_url ,renderPayParams = renderPayParams,wxappid = wxappid,\ noncestr = noncestr ,timestamp = timestamp,signature = signature,totalPrice = totalPrice,\ shop_name = shop_name,create_date=create_date,receiver=receiver,phone=phone,address=address,\ send_time = send_time,remark=remark,pay_type=pay_type,online_type=online_type,freight = freight,\ goods = goods,sender_phone=sender_phone,sender_img=sender_img,charge_types=charge_types,\ order=order,shop_code = shop_code,shop_phone = shop_phone)
def get(self): order_id = self.get_cookie("order_id") order = self.session.query(models.Order).filter_by(id = order_id).first() # print("[WeixinPay]Start Pay order.num:",order.num) if not order: return self.send_fail('order not found') totalPrice = order.new_totalprice wxPrice =int(totalPrice * 100) # print("[WeixinPay]full_url:",self.request.full_url()) path_url = self.request.full_url() shop_id = order.shop_id shop = self.session.query(models.Shop).filter_by(id = shop_id).first() if not shop: return self.send_fail('shop not found') shop_name = shop.shop_name shop_code = shop.shop_code shop_phone = shop.shop_phone jsApi = JsApi_pub() # order detail create_date = order.create_date receiver = order.receiver phone = order.phone address = order.address_text send_time = order.send_time remark = order.remark pay_type = order.pay_type online_type = order.online_type status = order.status order_num = order.num charge_types = self.session.query(models.ChargeType).filter( models.ChargeType.id.in_(eval(order.fruits).keys())).all() if order.type == 2: freight = order.shop.config.freight_on_time else: freight = order.shop.config.freight_now staff_id = order.SH2_id staff_info = self.session.query(models.Accountinfo).filter_by(id = staff_id).first() if staff_info is not None: sender_phone = staff_info.phone sender_img = staff_info.headimgurl_small else: sender_phone = None sender_img = None goods = [] f_d = eval(order.fruits) for f in f_d: goods.append([f_d[f].get('fruit_name'),f_d[f].get('charge'),f_d[f].get('num')]) qr_url="" if not self.is_wexin_browser(): qr_url = self._qrwxpay(shop_name) # print("[WeixinPay]qr_url:",qr_url) return self.render('customer/online-qrwxpay.html',qr_url = qr_url,totalPrice = totalPrice,\ shop_name = shop_name,create_date=create_date,receiver=receiver,phone=phone,address=address,\ send_time = send_time,remark=remark,pay_type=pay_type,online_type=online_type,freight = freight,\ goods = goods,sender_phone=sender_phone,sender_img=sender_img,charge_types=charge_types,\ order=order,shop_code=shop_code,shop_phone = shop_phone) path = APP_OAUTH_CALLBACK_URL + self.reverse_url('onlineWxPay') code = self.args.get('code',None) if len(code) is 2: url = jsApi.createOauthUrlForCode(path) # print("[WeixinPay]code url:",url) return self.redirect(url) else: jsApi.setCode(code) openid = jsApi.getOpenid() # print("[WeixinPay]current code:",code) if not openid: print("[WeixinPay]OpenID not found") unifiedOrder = UnifiedOrder_pub() # totalPrice = self.args['totalPrice'] # totalPrice =float( self.get_cookie('money')) # print("[WeixinPay]totalPrice:",totalPrice) shop_name = re.compile(u'[\U00010000-\U0010ffff]').sub(u'',shop_name) unifiedOrder.setParameter("body",shop_name + '-订单号-'+str(order_num)) url = APP_OAUTH_CALLBACK_URL + '/customer/onlinewxpay' unifiedOrder.setParameter("notify_url",url) unifiedOrder.setParameter("openid",openid) unifiedOrder.setParameter("out_trade_no",order_num) # orderPriceSplite = (order.price) * 100 wxPrice =int(totalPrice * 100) # print("[WeixinPay]wxPrice:",wxPrice) unifiedOrder.setParameter('total_fee',wxPrice) unifiedOrder.setParameter('trade_type',"JSAPI") prepay_id = unifiedOrder.getPrepayId() # print("[WeixinPay]prepay_id:",prepay_id) if not prepay_id: return self.send_fail("微信支付失败,请稍后再试!") jsApi.setPrepayId(prepay_id) renderPayParams = jsApi.getParameters() # print("[WeixinPay]renderPayParams:",renderPayParams) noncestr = "".join(random.sample('zyxwvutsrqponmlkjihgfedcba0123456789', 10)) timestamp = datetime.datetime.now().timestamp() wxappid = 'wx0ed17cdc9020a96e' signature = self.signature(noncestr,timestamp,path_url) qr_url = self._qrwxpay(shop_name) return self.render("fruitzone/paywx.html",qr_url = qr_url ,renderPayParams = renderPayParams,wxappid = wxappid,\ noncestr = noncestr ,timestamp = timestamp,signature = signature,totalPrice = totalPrice,\ shop_name = shop_name,create_date=create_date,receiver=receiver,phone=phone,address=address,\ send_time = send_time,remark=remark,pay_type=pay_type,online_type=online_type,freight = freight,\ goods = goods,sender_phone=sender_phone,sender_img=sender_img,charge_types=charge_types,\ order=order,shop_code = shop_code,shop_phone = shop_phone)