/// <summary>
 /// 查询支付状态
 /// 窦海超
 /// 2015年5月12日 14:36:55
 /// </summary>
 /// <returns></returns>
 public dynamic GetOrderPayStatus(OrderPayModel model)
 {
     try
     {
         PayStatusModel orderChildModel = orderChildDao.GetPayStatus(model.orderId, model.childId);
         if (orderChildModel == null)
         {
             return(new { status_code = -1, status_message = "order_id:" + model.orderId + "_" + model.childId + "错误" });
         }
         if (orderChildModel.PayStatus == PayStatusEnum.HadPay.GetHashCode())//如果数据库里返回已完成直接返回
         {
             return(new { status_code = 1, status_message = string.Empty, data = new { pay_status = 1 } });
         }
         string orderNo = string.Concat(model.productId, "_", model.orderId, "_", model.childId + "_", model.payStyle);
         //支付宝
         if (model.payType == PayTypeEnum.ZhiFuBao.GetHashCode())
         {
             int unfinish = new OrderChildDao().CheckOrderChildPayStatus(model.orderId);
             //return alipayIntegrate.GetOrder(orderNo, model.orderId, model.childId, unfinish);
             return(null);
         }
         //微信
         if (model.payType == PayTypeEnum.WeiXin.GetHashCode())
         {
             WXpayService wxpay = new WXpayService();
             return(wxpay.GetOrder(orderNo));
         }
     }
     catch (Exception ex)
     {
         LogHelper.LogWriter(ex, "查询支付状态异常");
         return(new { status_code = -1, status_message = string.Empty });
     }
     return(null);
 }
 /// <summary>
 /// 查询支付状态
 /// 窦海超
 /// 2015年5月12日 14:35:19
 /// </summary>
 /// <returns></returns>
 public dynamic GetOrderPayStatus(OrderPayModel model)
 {
     //OrderPayModel model = new OrderPayModel()
     //{
     //    childId = 1,
     //    orderId = 2114,
     //    payType = 1,
     //    payStyle = 1
     //};
     return(payProvider.GetOrderPayStatus(model));
 }
        public bool UpdateOrderPay(OrderPayModel orderPayModel)
        {
            using (var cmd = DataCommandManager.GetDataCommand("UpdateOrderPay"))
            {
                cmd.SetParameterValue("@OrderId", orderPayModel.OrdeId);

                //cmd.SetParameterValue("@PayId", orderPayModel.PayId);
                cmd.SetParameterValue("@Status", orderPayModel.Status);

                return(cmd.ExecuteNonQuery() > 0);
            }
        }
        public bool InsertOrderPay(OrderPayModel orderPayModel)
        {
            using (var cmd = DataCommandManager.GetDataCommand("InsertOrderPay"))
            {
                cmd.SetParameterValue("@PayId", orderPayModel.PayId);
                cmd.SetParameterValue("@OrderId", orderPayModel.OrdeId);
                cmd.SetParameterValue("@UserId", orderPayModel.UserId);
                cmd.SetParameterValue("@Status", orderPayModel.Status);
                cmd.SetParameterValue("@CreateTime", orderPayModel.CreateTime);

                return(cmd.ExecuteNonQuery() > 0);
            }
        }
Exemple #5
0
 public bool UpdateOrderPay(OrderPayModel orderPayModel)
 {
     return(orderDataAccess.UpdateOrderPay(orderPayModel));
 }
Exemple #6
0
 public bool InsertOrderPay(OrderPayModel orderPayModel)
 {
     return(orderDataAccess.InsertOrderPay(orderPayModel));
 }
Exemple #7
0
        public async Task <ApiResult> Pay(OrderPayModel model)
        {
            long orderStateId = await idNameService.GetIdByNameAsync("待付款");

            User user = JwtHelper.JwtDecrypt <User>(ControllerContext);
            var  dtos = await orderApplyService.GetModelListAsync(user.Id);

            if (dtos.OrderApplies.Count() <= 0)
            {
                return(new ApiResult {
                    status = 0, msg = "下单列表无商品"
                });
            }
            long id = await orderService.AddAsync(model.DeliveryTypeId, 0, user.Id, model.AddressId, model.PayTypeId, orderStateId, dtos.OrderApplies);

            if (id <= 0)
            {
                if (id == -4)
                {
                    return(new ApiResult {
                        status = 0, msg = "订单中有商品已经下架,请重新下单", data = 0
                    });
                }
                return(new ApiResult {
                    status = 0, msg = "生成订单失败"
                });
            }
            OrderDTO order = await orderService.GetModelAsync(id);

            await goodsCarService.DeleteListAsync(user.Id);

            await orderApplyService.DeleteListAsync(user.Id);

            long payTypeId1 = await idNameService.GetIdByNameAsync("微信");

            if (payTypeId1 != model.PayTypeId)
            {
                return(new ApiResult {
                    status = 0, msg = "请选择微信支付"
                });
            }

            WeChatPay weChatPay = new WeChatPay();

            weChatPay.body         = "订单支付";
            weChatPay.out_trade_no = order.Code;
            weChatPay.openid       = user.Code.Substring(3, 28);
            weChatPay.total_fee    = Math.Truncate(order.Amount * 100).ToString();
            string parm = HttpClientHelper.BuildParam(weChatPay);
            string key  = System.Configuration.ConfigurationManager.AppSettings["KEY"];

            parm = parm + "&key=" + key;
            string     sign       = CommonHelper.GetMD5(parm);
            HttpClient httpClient = new HttpClient();
            string     xml        = HttpClientHelper.ObjSerializeXml(weChatPay, sign);

            //CacheHelper.SetCache("App_Order_Pay" + weChatPay.out_trade_no, sign, DateTime.UtcNow.AddMinutes(2), TimeSpan.Zero);

            string res = await HttpClientHelper.GetResponseByPostXMLAsync(httpClient, xml, "https://api.mch.weixin.qq.com/pay/unifiedorder");

            if (!res.Contains("SUCCESS"))
            {
                return(new ApiResult {
                    status = 0, msg = res
                });
            }
            XmlDocument xmlDoc = new XmlDocument();

            xmlDoc.LoadXml(res);
            XmlNode Child = xmlDoc.SelectSingleNode("xml/prepay_id");

            log.DebugFormat($"微信支付统一下单:时间{DateTime.Now}");

            TimeSpan  ts        = DateTime.Now - new DateTime(1970, 1, 1, 0, 0, 0, 0);
            GetWechat getWeChat = new GetWechat();

            getWeChat.timeStamp = Convert.ToInt64(ts.TotalSeconds).ToString();
            getWeChat.package   = "prepay_id" + Child.InnerText;
            parm = HttpClientHelper.BuildParam(getWeChat);
            parm = parm.Replace("prepay_id", "prepay_id=");
            parm = parm + "&key=" + key;
            string paySign = CommonHelper.GetMD5(parm);

            GetWechat1 getWeChat1 = new GetWechat1();

            getWeChat1.appId     = getWeChat.appId;
            getWeChat1.nonceStr  = getWeChat.nonceStr;
            getWeChat1.package   = "prepay_id=" + Child.InnerText;
            getWeChat1.signType  = getWeChat.signType;
            getWeChat1.timeStamp = getWeChat.timeStamp;
            getWeChat1.paySign   = paySign;
            getWeChat1.orderId   = id;

            return(new ApiResult {
                status = 1, data = getWeChat1
            });
        }
        public ActionResult OrderPay()
        {
            //订单id列表
            string oidList = WebHelper.GetQueryString("oidList");

            string           paySystemName   = "";
            decimal          allSurplusMoney = 0M;
            List <OrderInfo> orderList       = new List <OrderInfo>();

            foreach (string oid in StringHelper.SplitString(oidList))
            {
                //订单信息
                OrderInfo orderInfo = Orders.GetOrderByOid(TypeHelper.StringToInt(oid));
                if (orderInfo != null && orderInfo.Uid == WorkContext.Uid && orderInfo.OrderState == (int)OrderState.WaitPaying && orderInfo.PayMode == 1 && (paySystemName.Length == 0 || paySystemName == orderInfo.PaySystemName))
                {
                    orderList.Add(orderInfo);
                }
                else
                {
                    return(Redirect(Url.Action("index", "home")));
                }

                paySystemName    = orderInfo.PaySystemName;
                allSurplusMoney += orderInfo.SurplusMoney;
            }

            if (orderList.Count < 1 || allSurplusMoney == 0M)
            {
                return(Redirect(Url.Action("index", "home")));
            }
            WeiXinConfig wxconfig  = BMAConfig.WeiXinConfig;
            var          appId     = wxconfig.AppID; //WeixinConfig.AppID;
            var          nonceStr  = Util.CreateNonce_str();
            var          timestamp = DateTime.Now.Ticks.ToString().Substring(0, 10);
            var          domain    = wxconfig.Domain;
            var          url       = Request.Url.ToString().Replace("#", "");// domain + Request.Url.PathAndQuery;

            var jsTickect   = WeiXinHelp.IsExistjsapi_ticket();
            var string1     = "";
            var signature   = WeiXinHelp.GetjsSDK_Signature(nonceStr, jsTickect, timestamp, url); //JSAPI.GetSignature(jsTickect, nonceStr, timestamp, url, out string1);
            var userAgent   = Request.UserAgent;
            var userVersion = userAgent.Substring(userAgent.LastIndexOf("/") + 1);

            //WeiXinConfig wxconfig = BMAConfig.WeiXinConfig;
            //Logs.Write(form.ToString());
            var out_trade_no = orderList[0].OSN; //Guid.NewGuid().ToString();
            //var domain = wxconfig.Domain;
            var body             = "购买创梦星火商城商品";
            var detail           = "购买创梦星火商城商品";
            var attach           = "购买创梦星火商城商品";
            var fee_type         = "CNY";
            var total_fee        = Decimal.ToInt32(orderList[0].SurplusMoney) * 100;// *100;
            var trade_type       = "JSAPI";
            var spbill_create_ip = (trade_type == "APP" || trade_type == "NATIVE") ? Request.UserHostName : wxconfig.Spbill_create_ip;
            var time_start       = DateTime.Now.ToString("yyyyMMddHHmmss");
            var time_expire      = DateTime.Now.AddDays(7).ToString("yyyyMMddHHmmss"); //默认1个小时订单过期,开发者可自定义其他超时机制,原则上微信订单超时时间不超过2小时
            var goods_tag        = "商品";
            var notify_url       = wxconfig.NOTIFY_URL;                                //与下面的Notify对应,开发者可自定义其他url地址
            var product_id       = orderList[0].Oid.ToString();
            var openid           = WorkContext.Openid;
            var partnerKey       = wxconfig.PartnerKey;
            var content          = WxPayAPI.UnifiedOrder(
                wxconfig.AppID, wxconfig.Mch_id, wxconfig.Device_info, Util.CreateNonce_str(),
                body, detail, attach, out_trade_no, fee_type, total_fee, spbill_create_ip, time_start, time_expire,
                goods_tag, notify_url, trade_type, product_id, openid, partnerKey);
            var prepay_id = "";
            //var trade_type = "";
            var paySign = "";
            //var timestamp = "";
            var nonce_str   = "";
            var return_code = "";

            if (content.return_code.Value == "SUCCESS" && content.result_code.Value == "SUCCESS")
            {
                WxPayAPIHelp.WxPayData jsApiParam = new WxPayAPIHelp.WxPayData();
                string payTimeSamp = DateTime.Now.Ticks.ToString().Substring(0, 10);
                jsApiParam.SetValue("appId", wxconfig.AppID);
                jsApiParam.SetValue("timeStamp", payTimeSamp);
                jsApiParam.SetValue("nonceStr", content.nonce_str.Value);
                jsApiParam.SetValue("package", "prepay_id=" + content.prepay_id.Value);
                jsApiParam.SetValue("signType", "MD5");
                //prepay_id = content.prepay_id.Value;
                prepay_id  = content.prepay_id.Value;
                trade_type = content.trade_type.Value;
                paySign    = jsApiParam.MakeSign();

                timestamp   = payTimeSamp;
                nonce_str   = content.nonce_str.Value;
                return_code = content.result_code.Value;
            }
            else
            {
                return(PromptView("错误编号:" + content.return_code.Value + "错误信息:" + content.return_msg.Value));
            }
            OrderPayModel model = new OrderPayModel();

            model.OidList         = oidList;
            model.AllSurplusMoney = allSurplusMoney;
            model.OrderList       = orderList;
            model.PayPlugin       = Plugins.GetPayPluginBySystemName(paySystemName);
            model.nonceStr        = nonceStr;
            model.jsapiTicket     = jsTickect;
            model.nonce_str       = nonce_str;
            model.paySign         = paySign;
            model.signature       = signature;
            model.timestamp       = timestamp;
            model.userAgent       = userAgent;
            model.userVersion     = userVersion;
            model.appId           = appId;
            model.prepay_id       = prepay_id;
            return(View(model));

            //return PromptView("出错了!");
        }