Exemple #1
0
        /**
         * 调用统一下单,获得下单结果
         * @return 统一下单结果
         * @失败时抛异常WxPayException
         */
        public WxPayAPI.WxPayData GetUnifiedOrderResult(decimal total_fee, string openid, string out_trade_no)
        {
            //统一下单
            WxPayAPI.WxPayData data = new WxPayAPI.WxPayData();
            data.SetValue("body", "四川红领巾少儿艺术团-报名活动");
            data.SetValue("attach", "test");
            data.SetValue("out_trade_no", out_trade_no);
            data.SetValue("total_fee", Convert.ToInt32(total_fee * 100));
            data.SetValue("time_start", DateTime.Now.ToString("yyyyMMddHHmmss"));
            data.SetValue("time_expire", DateTime.Now.AddMinutes(10).ToString("yyyyMMddHHmmss"));
            data.SetValue("goods_tag", "test");
            data.SetValue("trade_type", "JSAPI");
            data.SetValue("openid", openid);

            Log.WriteLog("GetUnifiedOrderResult!" + total_fee);

            WxPayAPI.WxPayData result = WxPayAPI.WxPayApi.UnifiedOrder(data);
            if (!result.IsSet("appid") || !result.IsSet("prepay_id") || result.GetValue("prepay_id").ToString() == "")
            {
                Log.WriteLog("UnifiedOrder response error!");
                throw new WxPayException("UnifiedOrder response error!");
            }

            Log.WriteLog("GetUnified77777");
            unifiedOrderResult = result;
            return(result);
        }
        //修改订单信息
        public void SuccOrder()
        {
            WxPayAPI.WxPayData res = new WxPayAPI.WxPayData();
            try
            {
                Log.WriteLog("SuccOrder:开始了");
                WxPayAPI.WxPayData notifyData   = GetNotifyData();
                string             out_trade_no = notifyData.GetValue("out_trade_no").ToString();

                Log.WriteLog("SuccOrder:" + out_trade_no);
                //查询订单,判断订单真实性
                if (!string.IsNullOrEmpty(out_trade_no))
                {
                    Order order = db.Orders.FirstOrDefault(c => c.Payno == out_trade_no);
                    if (order != null)
                    {
                        order.Status  = 1;
                        order.PayTime = DateTime.Now;
                        db.Orders.Update(order);
                        if (db.SaveChanges() > 0)
                        {
                            Log.WriteLog("SuccOrder:Status");

                            var active = db.Actives.Find(order.ActiveId);
                            active.Count++;
                            db.Actives.Update(active);
                            db.SaveChanges();

                            res.SetValue("return_code", "SUCCESS");
                            res.SetValue("return_msg", "OK");
                            Response.WriteAsync(res.ToXml());
                            Log.WriteLog("SuccOrder:SUCCESS");
                        }
                    }
                    else
                    {
                        Log.WriteLog("SuccOrder:订单查询失败");
                        res.SetValue("return_code", "FAIL");
                        res.SetValue("return_msg", "订单查询失败");
                        Response.WriteAsync(res.ToXml());
                    }
                }
            }
            catch (Exception e)
            {
                //打印日志
                Log.WriteLog("SuccOrder:Message=" + e.Message);
                res.SetValue("return_code", "FAIL");
                res.SetValue("return_msg", e.Message);
                Response.WriteAsync(res.ToXml());
            }
        }
Exemple #3
0
 protected void Page_Load(object sender, EventArgs e)
 {
     if (!IsPostBack)
     {
         OrderNo = HotelCloud.Common.HCRequest.GetString("OrderNo").ToUpper().Trim();
         if (!string.IsNullOrEmpty(OrderNo))
         {
             if (OrderNo.Contains("C"))
             {
                 var dt = HotelCloud.SqlServer.SQLHelper.Get_DataTable(@"select top 1 * from WeiXin..RechargeUser where OrderNo=@OrderNo", HotelCloud.SqlServer.SQLHelper.GetCon(), new Dictionary <string, HotelCloud.SqlServer.DBParam> {
                     { "OrderNo", new HotelCloud.SqlServer.DBParam {
                           ParamValue = OrderNo
                       } }
                 });
                 if (dt.Rows.Count > 0)
                 {
                     foreach (System.Data.DataRow dr in dt.Rows)
                     {
                         int OrderAmount = Convert.ToInt32(Convert.ToDecimal(dr["SPrice"].ToString()) * 1);
                         OrderRoom = "充值扣款";
                         total_fee = OrderAmount.ToString();
                     }
                 }
             }
             else if (OrderNo.Contains("K"))
             {
                 var dt = HotelCloud.SqlServer.SQLHelper.Get_DataTable(@"select top 1 * from WeiXin..MemberCardBuyRecord where OrderNo=@OrderNo", HotelCloud.SqlServer.SQLHelper.GetCon(), new Dictionary <string, HotelCloud.SqlServer.DBParam> {
                     { "OrderNo", new HotelCloud.SqlServer.DBParam {
                           ParamValue = OrderNo
                       } }
                 });
                 if (dt.Rows.Count > 0)
                 {
                     foreach (System.Data.DataRow dr in dt.Rows)
                     {
                         int OrderAmount = Convert.ToInt32(Convert.ToDecimal(dr["BuyMoney"].ToString()) * 1);
                         OrderRoom = "会员卡购买";
                         total_fee = OrderAmount.ToString();
                     }
                 }
             }
             else if (OrderNo.Contains("D"))
             {
                 var dt = HotelCloud.SqlServer.SQLHelper.Get_DataTable(@"select top 1 *  from WeiXin..SupermarketOrder_Levi where OrderId=@OrderId", HotelCloud.SqlServer.SQLHelper.GetCon(), new Dictionary <string, HotelCloud.SqlServer.DBParam> {
                     { "OrderId", new HotelCloud.SqlServer.DBParam {
                           ParamValue = OrderNo.Trim()
                       } }
                 });
                 if (dt.Rows.Count > 0)
                 {
                     foreach (System.Data.DataRow dr in dt.Rows)
                     {
                         int OrderAmount = Convert.ToInt32(Convert.ToDecimal(dr["Money"].ToString()) * 1);
                         OrderRoom = "酒店周边超市消费";
                         total_fee = OrderAmount.ToString();
                     }
                 }
             }
             else if (OrderNo.Contains("P"))
             {
                 var dt = HotelCloud.SqlServer.SQLHelper.Get_DataTable(@"select top 1 * from WeiXin..SaleProducts_Orders where OrderNo=@OrderNo", HotelCloud.SqlServer.SQLHelper.GetCon(), new Dictionary <string, HotelCloud.SqlServer.DBParam> {
                     { "OrderNo", new HotelCloud.SqlServer.DBParam {
                           ParamValue = OrderNo
                       } }
                 });
                 if (dt.Rows.Count > 0)
                 {
                     foreach (System.Data.DataRow dr in dt.Rows)
                     {
                         int OrderAmount = Convert.ToInt32(Convert.ToDecimal(dr["OrderMoney"].ToString()) * 1);
                         OrderRoom = dr["ProductName"].ToString().Trim() + "[" + dr["TcName"].ToString().Trim() + "]";
                         total_fee = OrderAmount.ToString();
                     }
                 }
             }
             else if (OrderNo.Contains("L"))
             {
                 var dt = HotelCloud.SqlServer.SQLHelper.Get_DataTable(@"select top 1 bagging,amount,youhuiamount,hotelid,userweixinid,hotelWeixinId,orderCode,(select sum(AliPayAmount) from  WeiXin..wkn_payrecords where OrderNO=orderCode and Channel='微信支付回调') as zhifu  from WeiXin..T_OrderInfo where orderCode=@orderCode", HotelCloud.SqlServer.SQLHelper.GetCon(), new Dictionary <string, HotelCloud.SqlServer.DBParam> {
                     { "orderCode", new HotelCloud.SqlServer.DBParam {
                           ParamValue = OrderNo.Trim()
                       } }
                 });
                 if (dt.Rows.Count > 0)
                 {
                     foreach (System.Data.DataRow dr in dt.Rows)
                     {
                         string bagging      = dr["bagging"].ToString();
                         string youhuiamount = dr["youhuiamount"].ToString();
                         if (string.IsNullOrEmpty(bagging))
                         {
                             bagging = "0";
                         }
                         if (string.IsNullOrEmpty(youhuiamount))
                         {
                             youhuiamount = "0";
                         }
                         int OrderAmount = Convert.ToInt32((Convert.ToDecimal(dr["amount"].ToString()) - Convert.ToDecimal(youhuiamount) + Convert.ToDecimal(bagging)) * 1);
                         OrderRoom = "酒店周边餐饮消费";
                         total_fee = OrderAmount.ToString();
                     }
                 }
             }
             else
             {
                 hotel3g.Repository.Order order = hotel3g.Repository.OrderRepository.GetOrderInfo(OrderNo.Trim());
                 OrderRoom = order.RoomName + "[" + order.RatePlanName + "]";
                 total_fee = order.OrderAmount.ToString();
                 url       = string.Format("http://hotel.weikeniu.com/Hotel/Index/{0}?key={1}@{2}", order.HotelID.ToString(), order.WeiXinID.ToString(), order.UserWeiXinID.ToString());
             }
         }
         if (HotelCloud.Common.HCRequest.GetString("action") == "code")
         {
             WxPayAPI.NativePay np = new WxPayAPI.NativePay();
             /** ================得到长连接========= */
             string             long_url = np.GetPrePayUrl(HotelCloud.Common.HCRequest.GetString("OrderNo"));
             WxPayAPI.WxPayData data     = new WxPayAPI.WxPayData();
             data.SetValue("long_url", long_url);
             /** ================减小二维码数据量,提升扫描速度和精确度========= */
             WxPayAPI.WxPayData Result = WxPayAPI.WxPayApi.ShortUrl(data, 6);
             if (Result != null)
             {
                 if (Result.GetValue("return_code").ToString() == "SUCCESS")
                 {
                     string ShortUrl = Result.GetValue("short_url").ToString();
                     WxPayAPI.Log.Debug("WxPayApi", "ShortUrl  : " + long_url);
                     Response.Write(CreateCode_Choose(ShortUrl, "Byte", "M", 8, 4));
                 }
             }
             Response.End();
         }
     }
 }