Beispiel #1
0
        /// <summary>
        /// 查询预入库单和明细导出
        /// </summary>
        /// <returns></returns>
        public Response <PreOrderResponse> GetPreOrderExecl(PreOrderRequest request)
        {
            Response <PreOrderResponse> response = new Response <PreOrderResponse>()
            {
                Result = new PreOrderResponse()
            };

            if (request == null)
            {
                ArgumentNullException ex = new ArgumentNullException("sp_wms_GetSKU request");
                LogError(ex);
                response.ErrorCode = ErrorCode.Argument;
                response.Exception = ex;
                return(response);
            }
            try
            {
                //int RowCount = 0;
                response.Result = new PreOrderAccessor().GetPreOrderExecl(request.SearchCondition);
                //response.Result.PageCount = RowCount % request.PageSize == 0 ? RowCount / request.PageSize : RowCount / request.PageSize + 1;
                //response.Result.PageIndex = request.PageIndex;
                response.IsSuccess = true;
            }
            catch (Exception ex)
            {
                LogError(ex);
                response.IsSuccess = false;
                response.ErrorCode = ErrorCode.Technical;
            }

            return(response);
        }
Beispiel #2
0
        public void TestPreOrder()
        {
            UnionPayChannel channel = new UnionPayChannel()
            {
                CertificateFilePassword = "******", CertificateFilePath = "D:/cer/700000000000001.pfx", MerchantID = "267099633218", PacketEncryptKey = "654321"
            };
            PreOrderRequest req = new PreOrderRequest();

            req.SendTime          = DateTime.Now;
            req.SendSeqID         = Guid.NewGuid().ToString("N");
            req.FrontUrl          = "http://www.jitmarketing.cn:8090/TranNotification.ashx";
            req.MerchantOrderDesc = "呵呵";
            req.Misc = string.Empty;
            req.Mode = IVRModes.Callback;
            //req.GatewayType = GatewayTypes.WAP;
            req.TransTimeout          = DateTime.Now.AddHours(1);
            req.BackUrl               = "http://www.jitmarketing.cn:8090/TranNotification.ashx";
            req.MerchantOrderCurrency = Currencys.RMB;
            req.MerchantOrderAmt      = 1;
            req.MerchantID            = channel.MerchantID;
            req.MerchantOrderTime     = DateTime.Now.AddMinutes(-5);
            req.MerchantOrderID       = Guid.NewGuid().ToString("N").Substring(0, 30);
            req.MerchantUserID        = string.Empty;
            req.MobileNum             = "18019438327";
            req.CarNum = string.Empty;

            var rsp = IVRGateway.PreOrder(channel, req);

            Assert.IsTrue(rsp.IsSuccess);
        }
Beispiel #3
0
        public Response <string> AddInventoryOfOutbound(PreOrderRequest request, string Creator)
        {
            Response <string> response = new Response <string> {
                Result = ""
            };
            string str = "";

            if (request == null || request.PreOd == null || !request.PreOd.Any())
            {
                ArgumentNullException ex = new ArgumentNullException("Proc_WMS_AutomatedOutbound request");
                LogError(ex);
                response.ErrorCode = ErrorCode.Argument;
                response.Exception = ex;
                return(response);
            }
            try
            {
                PreOrderAccessor accessor = new PreOrderAccessor();
                int RowCount = 0;
                response.Result    = accessor.AddInventoryOfOutbound(request.PreOrderList, request.PreOd, Creator);
                response.IsSuccess = true;
                //  response.Result = new PreOrderAccessor().GetPrdOrder(request.SearchCondition);
                //response.IsSuccess = true;
            }
            catch (Exception ex)
            {
                LogError(ex);
                response.IsSuccess = false;
                response.ErrorCode = ErrorCode.Technical;
            }

            return(response);
        }
Beispiel #4
0
        public void TestPreOrder()
        {
            UnionPayChannel channel = new UnionPayChannel()
            {
                CertificateFilePassword = "******", CertificateFilePath = "D:/cer/630056832596.pfx", MerchantID = "630056832596", PacketEncryptKey = "654321"
            };
            PreOrderRequest req = new PreOrderRequest();

            req.SendTime          = DateTime.Now;
            req.SendSeqID         = Guid.NewGuid().ToString("N");
            req.FrontUrl          = "http://www.jitmarketing.cn:8090/TranNotification.ashx";
            req.MerchantOrderDesc = "呵呵";
            req.Misc = string.Empty;
            //req.GatewayType = GatewayTypes.WAP;
            req.TransTimeout          = DateTime.Now.AddHours(1);
            req.BackUrl               = "http://www.jitmarketing.cn:8090/TranNotification.ashx";
            req.MerchantOrderCurrency = Currencys.RMB;
            req.MerchantOrderAmt      = 1;
            req.MerchantID            = "630056832596";
            req.MerchantOrderTime     = DateTime.Now.AddMinutes(-5);
            req.MerchantOrderID       = Guid.NewGuid().ToString("N");
            req.MerchantUserID        = string.Empty;
            req.MobileNum             = "15388157741";
            req.CarNum = string.Empty;

            var rsp = WapGateway.PreOrder(channel, req);

            Assert.IsTrue(rsp.IsSuccess);
        }
Beispiel #5
0
        public void TestGetContent()
        {
            PreOrderRequest req1 = new PreOrderRequest();

            req1.SendTime          = DateTime.Now;
            req1.SendSeqID         = "12345888888000";
            req1.FrontUrl          = "http://www.163.com";
            req1.MerchantOrderDesc = "呵呵";
            req1.Misc = string.Empty;
            //req1.GatewayType = GatewayTypes.WAP;
            req1.TransTimeout          = DateTime.Now.AddHours(1);
            req1.BackUrl               = "http://192.168.1.156:8080/Test/Notify";
            req1.MerchantOrderCurrency = Currencys.RMB;
            req1.MerchantOrderAmt      = 1;
            req1.MerchantID            = "630056832596";
            req1.MerchantOrderTime     = DateTime.Now.AddMinutes(-5);
            req1.MerchantOrderID       = Guid.NewGuid().ToString("N");
            req1.MerchantUserID        = string.Empty;
            req1.MobileNum             = "15388157741";
            req1.CarNum = string.Empty;

            var content1 = req1.GetContent();

            Assert.IsTrue(content1 != null);
        }
Beispiel #6
0
        public void TestPreOrder()
        {
            //WeiXinPayChannel channel = new WeiXinPayChannel();
            //channel.AppID = "wx8f74386d57405ec5";
            //channel.AppSecret = "2af3c935fc66e2087bff1064cde3a708";
            //channel.PaySignKey = "tFVyMIdj1DGCUMbahNzxTUxESkE6heBRtD2RWOfyzyh4WziirurWvBHt3WFVfQRlysh7T0MxMFHikBcScLUNrInygE4972yLyrZyFlay8tV4aKwtA3lBPNgI4qqJw46b";
            //channel.ParnterID = "1218285701";
            //channel.ParnterKey = "b158ca37b5fac76293e402e3144869fc";
            //channel.NotifyToTradeCenterURL = "http://www.qq.com";

            WeiXinPayChannel channel = new WeiXinPayChannel();

            channel.AppID                  = "wxd930ea5d5a258f4f";
            channel.AppSecret              = "db426a9829e4b49a0dcac7b4162da6b6";
            channel.PaySignKey             = "L8LrMqqeGRxST5reouB0K66CaYAWpqhAVsq7ggKkxHCOastWksvuX1uvmvQclxaHoYd3ElNBrNO2DHnnzgfVG9Qs473M3DTOZug5er46FhuGofumV8H2FVR9qkjSlC5K";
            channel.ParnterID              = "1900000109";
            channel.ParnterKey             = "8934e7d15453e97507ef794cf7b0519d";
            channel.NotifyToTradeCenterURL = "http://www.qq.com";
            var str = channel.ToJSON();

            PreOrderRequest req = new PreOrderRequest();

            req.ClientIP         = "192.168.0.1";
            req.GoodsDescription = "测试订单";
            req.OrderAmount      = 1;
            req.OrderNO          = CommonUtil.GenerateNoncestr();
            req.UserID           = "crestxu";

            var rsp = WeiXinPay4AppGateway.PreOrder(channel, req);

            Assert.IsTrue(rsp.IsSuccess);
        }
Beispiel #7
0
        public Response <PreOrderAndPreOrderDetail> Allocation_GetPreOrderAndDetail(PreOrderRequest request)
        {
            Response <PreOrderAndPreOrderDetail> response = new Response <PreOrderAndPreOrderDetail>()
            {
                Result = new PreOrderAndPreOrderDetail()
            };

            if (request == null)
            {
                ArgumentNullException ex = new ArgumentNullException("Proc_WMSAllocationGetWMS_PreOrderAndDetail request");
                LogError(ex);
                response.ErrorCode = ErrorCode.Argument;
                response.Exception = ex;
                return(response);
            }
            try
            {
                int RowCount = 0;
                response.Result = new PreOrderAccessor().Allocation_GetPrdOrder(request.SearchCondition);
                //response.Result.PreO = new PreOrder();

                response.IsSuccess = true;
            }
            catch (Exception ex)
            {
                LogError(ex);
                response.IsSuccess = false;
                response.ErrorCode = ErrorCode.Technical;
            }

            return(response);
        }
Beispiel #8
0
        public Response <PreOrderAndPreOrderDetail> AddPreOrderAndPreOrderDetail(PreOrderRequest request, string Creator, string OperationType)
        {
            Response <PreOrderAndPreOrderDetail> response = new Response <PreOrderAndPreOrderDetail> {
                Result = new PreOrderAndPreOrderDetail()
            };

            if (request == null || request.PreOd == null || !request.PreOd.Any())
            {
                ArgumentNullException ex = new ArgumentNullException("sp_wms_GetSKU request");
                LogError(ex);
                response.ErrorCode = ErrorCode.Argument;
                response.Exception = ex;
                return(response);
            }
            try
            {
                PreOrderAccessor accessor = new PreOrderAccessor();
                response.Result    = accessor.AddPreOrderAndPreOrderDetail(request.PreOrderList, request.PreOd, Creator, OperationType);
                response.IsSuccess = true;
            }
            catch (Exception ex)
            {
                LogError(ex);
                response.IsSuccess = false;
                response.ErrorCode = ErrorCode.Technical;
            }
            return(response);
        }
Beispiel #9
0
        /// <summary>
        /// 查询预入库单明细
        /// </summary>
        /// <returns></returns>
        public Response <int> UpdateAssociateFG(PreOrderRequest request)
        {
            Response <int> response = new Response <int>()
            {
                Result = 0
            };

            if (request == null)
            {
                ArgumentNullException ex = new ArgumentNullException("UpdateAssociateFG request");
                LogError(ex);
                response.ErrorCode = ErrorCode.Argument;
                response.Exception = ex;
                return(response);
            }
            try
            {
                int RowCount = 0;
                response.Result = new PreOrderAccessor().UpdateAssociateFG(request.PreOd);
                //response.Result.PreO = new PreOrder();

                response.IsSuccess = true;
            }
            catch (Exception ex)
            {
                LogError(ex);
                response.IsSuccess = false;
                response.ErrorCode = ErrorCode.Technical;
            }

            return(response);
        }
Beispiel #10
0
        /// <summary>
        /// 预订单
        /// </summary>
        /// <param name="pChannel"></param>
        /// <param name="pRequest"></param>
        public static PreOrderResponse PreOrder(WeiXinPayChannel pChannel, PreOrderRequest pRequest)
        {
            //参数检查
            if (pChannel == null)
            {
                throw new ArgumentNullException("pChannel");
            }
            if (pRequest == null)
            {
                throw new ArgumentNullException("pRequest");
            }
            //创建预订单
            var preOrderReq = pRequest.GetContent(pChannel);
            //获取访问授权
            var token = WeiXinPay4AppGateway.GetAccessToken(pChannel.AppID, pChannel.AppSecret);

            if (!token.IsSuccess)
            {
                throw new WeiXinPayException("501", string.Format("获取访问授权失败:[微信接口返回的错误码={0};错误信息={1}].", token.ErrorCode, token.ErrorMessage));
            }
            var url = string.Format("{0}access_token={1}", API_URL_OF_PREORDER, token.Token);
            var rsp = WeiXinPay4AppGateway.CallAPI <PreOrderResponse>(url, preOrderReq.ToJSON());

            if (rsp.IsSuccess)
            {
                return(rsp);
            }
            else
            {
                throw new WeiXinPayException("502", string.Format("预订单失败:[微信接口返回的错误码={0};错误信息={1}].", rsp.ErrorCode, rsp.ErrorMessage));
            }
        }
Beispiel #11
0
        private void btnOrder_Click(object sender, EventArgs e)
        {
            //创建支付通道
            UnionPayChannel channel = new UnionPayChannel()
            {
                CertificateFilePassword = ConfigurationManager.AppSettings["IVREncryptCertificateFilePassword"]
                ,
                CertificateFilePath = ConfigurationManager.AppSettings["IVREncryptCertificateFilePath"]
                ,
                MerchantID = ConfigurationManager.AppSettings["IVRMerchantID"]
                ,
                PacketEncryptKey = "654321"
            };
            //下订单
            PreOrderRequest req = new PreOrderRequest();

            req.SendTime          = DateTime.Now;
            req.SendSeqID         = Guid.NewGuid().ToString("N");
            req.FrontUrl          = ConfigurationManager.AppSettings["IVRFrontUrl"]; //商户平台的页面,用户支付完毕后跳转的页面
            req.MerchantOrderDesc = "呵呵";
            req.Misc                  = string.Empty;
            req.Mode                  = IVRModes.Callback;
            req.TransTimeout          = DateTime.Now.AddHours(1);
            req.BackUrl               = ConfigurationManager.AppSettings["IVRBackUrl"]; //当用户支付完成后,支付平台回调的交易通知的页面
            req.MerchantOrderCurrency = Currencys.RMB;
            req.MerchantOrderAmt      = 1;
            req.MerchantID            = channel.MerchantID;
            req.MerchantOrderTime     = DateTime.Now.AddMinutes(-5);
            req.MerchantOrderID       = Guid.NewGuid().ToString("N").Substring(0, 30);
            req.MerchantUserID        = string.Empty;
            req.MobileNum             = this.txtMobileNO.Text; //消费者的手机号,支付前置会将验证码发送到该手机
            req.CarNum                = string.Empty;
            //记录支付请求日志
            Loggers.Debug(new DebugLogInfo()
            {
                Message = string.Format("[IVR]PreOrder Request={0}", req.GetContent())
            });
            //支付平台成功接收
            var rsp = IVRGateway.PreOrder(channel, req);

            //重定向到支付页面
            if (rsp.IsSuccess)
            {
                //
                this.Session["MerchantOrderID"]   = rsp.MerchantOrderID;
                this.Session["MerchantOrderTime"] = rsp.MerchantOrderTime;
                //
                this.ltGotoPay.Text = "订单创建成功,请等待支付平台呼入.";
                this.ltGotoPay.Mode = LiteralMode.PassThrough;
            }
        }
Beispiel #12
0
        public void TestGenereatePaySign()
        {
            OrderPackage op = new OrderPackage();

            op.TotalAmount = "1";
            op.ClientIP    = "127.0.0.1";
            op.OrderNO     = "16642817866003386000";

            PreOrderRequest por = new PreOrderRequest();

            por.Package = op;
            por.GeneratePaySign();

            Assert.IsTrue(por.PaySign == "7717231c335a05165b1874658306fa431fe9a0de");
        }
Beispiel #13
0
        public void TestQueryOrder()
        {
            //先发预订单请求
            UnionPayChannel channel = new UnionPayChannel()
            {
                CertificateFilePassword = "******", CertificateFilePath = "D:/cer/630056832596.pfx", MerchantID = "630056832596", PacketEncryptKey = "654321"
            };
            PreOrderRequest req = new PreOrderRequest();

            req.SendTime          = DateTime.Now;
            req.SendSeqID         = Guid.NewGuid().ToString("N");
            req.FrontUrl          = "http://www.jitmarketing.cn:8090/TranNotification.ashx";
            req.MerchantOrderDesc = "呵呵";
            req.Misc = string.Empty;
            //req.GatewayType = GatewayTypes.WAP;
            req.TransTimeout          = DateTime.Now.AddHours(1);
            req.BackUrl               = "http://www.jitmarketing.cn:8090/TranNotification.ashx";
            req.MerchantOrderCurrency = Currencys.RMB;
            req.MerchantOrderAmt      = 1;
            req.MerchantID            = "630056832596";
            req.MerchantOrderTime     = DateTime.Now.AddMinutes(-5);
            req.MerchantOrderID       = Guid.NewGuid().ToString("N");
            req.MerchantUserID        = string.Empty;
            req.MobileNum             = "15388157741";
            req.CarNum = string.Empty;

            var rsp = WapGateway.PreOrder(channel, req);

            Assert.IsTrue(rsp.IsSuccess);
            //跳转到支付平台页面
            WebClient wc          = new WebClient();
            string    strResponse = wc.UploadString(rsp.RedirectURL, string.Empty);
            //在查询
            QueryOrderRequest req2 = new QueryOrderRequest();

            req2.SendTime          = DateTime.Now;
            req2.SendSeqID         = Guid.NewGuid().ToString("N");
            req2.TransType         = WapTransTypes.PreAuthorization;
            req2.MerchantID        = "630056832596";
            req2.MerchantOrderID   = req.MerchantOrderID;
            req2.MerchantOrderTime = req.MerchantOrderTime;

            var rsp2 = WapGateway.QueryOrder(channel, req2);

            Assert.IsTrue(rsp2.IsSuccess);
        }
Beispiel #14
0
        /// <summary>
        /// Gets prepay_id from wechat payment
        /// </summary>
        /// <param name="config"></param>
        /// <param name="openId"></param>
        /// <param name="out_trade_no"></param>
        /// <param name="body"></param>
        /// <param name="clientIp"></param>
        /// <param name="totalFee"></param>
        /// <param name="type"></param>
        /// <returns></returns>
        public static string GetPrepayId(WeChatPayConfig config, string openId, string out_trade_no, string body, string clientIp, int totalFee, TradeType type)
        {
            string          prepayId = string.Empty;
            BaseResponse    response = null;
            PreOrderRequest request  = new PreOrderRequest(config);

            request.out_trade_no     = out_trade_no;
            request.spbill_create_ip = clientIp;
            request.total_fee        = totalFee;
            request.trade_type       = type;
            request.body             = body;
            request.detail           = body;
            request.openid           = openId;
            response = request.Execute();
            if (response != null)
            {
                prepayId = ((PreOrderResponse)response).prepay_id;
            }
            return(prepayId);
        }
Beispiel #15
0
        /// <summary>
        /// 创建预订单
        /// <remarks>
        /// <para>与PreOrder的区别在于,此方法返回的信息包含App客户端调用微信SDK进行支付所必须的所有信息</para>
        /// </remarks>
        /// </summary>
        /// <param name="pChannel"></param>
        /// <param name="pRequest"></param>
        /// <returns></returns>
        public static PreOrderInfo CreatePreOrder(WeiXinPayChannel pChannel, PreOrderRequest pRequest)
        {
            //参数检查
            if (pChannel == null)
            {
                throw new ArgumentNullException("pChannel");
            }
            if (pRequest == null)
            {
                throw new ArgumentNullException("pRequest");
            }
            //创建预订单
            var preOrderReq = pRequest.GetContent(pChannel);
            //获取访问授权
            var token = WeiXinPay4AppGateway.GetAccessToken(pChannel.AppID, pChannel.AppSecret);

            if (!token.IsSuccess)
            {
                throw new WeiXinPayException("501", string.Format("获取访问授权失败:[微信接口返回的错误码={0};错误信息={1}].", token.ErrorCode, token.ErrorMessage));
            }
            var url = string.Format("{0}access_token={1}", API_URL_OF_PREORDER, token.Token);
            var rsp = WeiXinPay4AppGateway.CallAPI <PreOrderResponse>(url, preOrderReq.ToJSON());

            if (!rsp.IsSuccess)
            {
                throw new WeiXinPayException("502", string.Format("预订单失败:[微信接口返回的错误码={0};错误信息={1}].", rsp.ErrorCode, rsp.ErrorMessage));
            }
            //
            PreOrderInfo rtn = new PreOrderInfo();

            rtn.AppID      = pChannel.AppID;
            rtn.NonceStr   = preOrderReq.NonceStr;
            rtn.PartnerID  = pChannel.ParnterID;
            rtn.PreOrderID = rsp.PrePayID;
            rtn.TimeStamp  = preOrderReq.TimeStamp;
            rtn.OrderSign  = preOrderReq.Sign;
            //
            return(rtn);
        }
Beispiel #16
0
        public void TestCreatePreOrder()
        {
            WeiXinPayChannel channel = new WeiXinPayChannel();

            channel.AppID                  = "wxd930ea5d5a258f4f";
            channel.AppSecret              = "db426a9829e4b49a0dcac7b4162da6b6";
            channel.PaySignKey             = "L8LrMqqeGRxST5reouB0K66CaYAWpqhAVsq7ggKkxHCOastWksvuX1uvmvQclxaHoYd3ElNBrNO2DHnnzgfVG9Qs473M3DTOZug5er46FhuGofumV8H2FVR9qkjSlC5K";
            channel.ParnterID              = "1900000109";
            channel.ParnterKey             = "8934e7d15453e97507ef794cf7b0519d";
            channel.NotifyToTradeCenterURL = "http://www.qq.com";

            PreOrderRequest req = new PreOrderRequest();

            req.ClientIP         = "192.168.0.1";
            req.GoodsDescription = "测试订单";
            req.OrderAmount      = 1;
            req.OrderNO          = "kODvVBBJ3THJ1jMB";
            req.UserID           = "crestxu";

            var rsp        = WeiXinPay4AppGateway.CreatePreOrder(channel, req);
            var rspContent = rsp.ToJSON();

            Assert.IsTrue(string.IsNullOrWhiteSpace(rsp.PreOrderID) == false);
        }
Beispiel #17
0
        /// <summary>
        /// 记录请求支付日志信息
        /// </summary>
        /// <param name="response"></param>
        /// <param name="para"></param>
        /// <param name="bll"></param>
        /// <param name="entity"></param>
        /// <param name="channel"></param>
        /// <returns></returns>
        private static string CreatePayRecord(CreateOrderResponse response, CreateOrderParameters para, AppOrderBLL bll, AppOrderEntity entity, PayChannelEntity channel)
        {
            string url = string.Empty;


            //用于记录支付平台的请求和响应
            string requestJson  = string.Empty;
            string responseJson = string.Empty;

            var recordBll    = new PayRequestRecordBLL(new Utility.BasicUserInfo());
            var recordEntity = new PayRequestRecordEntity()
            {
                ChannelID = channel.ChannelID,
                ClientID  = entity.AppClientID,
                UserID    = entity.AppUserID
            };

            #region 根据Channel类型创建支付订单
            try
            {
                switch (channel.PayType)
                {
                case 1:
                    recordEntity.Platform = 1;
                    #region 银联Wap支付
                    UnionPayChannel unionWapPaychannel = channel.ChannelParameters.DeserializeJSONTo <UnionPayChannel>();
                    PreOrderRequest Wapreq             = new PreOrderRequest()
                    {
                        BackUrl               = ConfigurationManager.AppSettings["UnionPayWapNotifyUrl"].Trim('?') + string.Format("?ChannelID={0}", channel.ChannelID),
                        FrontUrl              = string.IsNullOrEmpty(para.ReturnUrl) ? ConfigurationManager.AppSettings["UnionPayCallBackUrl"] : para.ReturnUrl,
                        MerchantID            = unionWapPaychannel.MerchantID,
                        SendTime              = DateTime.Now,
                        MerchantOrderCurrency = Currencys.RMB,
                        MerchantOrderDesc     = entity.AppOrderDesc,
                        MerchantOrderAmt      = entity.AppOrderAmount,
                        MerchantOrderID       = entity.OrderID.ToString(),
                        SendSeqID             = Guid.NewGuid().ToString("N"),
                        MerchantOrderTime     = entity.AppOrderTime
                    };
                    requestJson = Wapreq.ToJSON();
                    var unionWapResponse = JIT.Utility.Pay.UnionPay.Interface.Wap.WapGateway.PreOrder(unionWapPaychannel, Wapreq);
                    responseJson = unionWapResponse.ToJSON();
                    if (unionWapResponse.IsSuccess)
                    {
                        entity.PayUrl = unionWapResponse.RedirectURL;
                        entity.Status = 1;
                        bll.Update(entity);
                        url = unionWapResponse.RedirectURL;
                        Loggers.Debug(new DebugLogInfo()
                        {
                            Message = string.Format("银联Wap创建订单成功{0}【请求】:{1}{0}【响应】:{2}", Environment.NewLine, Wapreq.ToJSON(), unionWapResponse.ToJSON())
                        });
                    }
                    else
                    {
                        Loggers.Debug(new DebugLogInfo()
                        {
                            Message = string.Format("银联Wap创建订单失败{0}【请求】:{1}{0}【响应】:{2}", Environment.NewLine, Wapreq.ToJSON(), unionWapResponse.ToJSON())
                        });
                        response.ResultCode = 100;
                        response.Message    = unionWapResponse.Description;
                    }
                    #endregion
                    break;

                case 2:
                    recordEntity.Platform = 1;
                    #region 银联语音支付
                    UnionPayChannel unionIVRPaychannel = channel.ChannelParameters.DeserializeJSONTo <UnionPayChannel>();
                    JIT.Utility.Pay.UnionPay.Interface.IVR.Request.PreOrderRequest IVRreq = new Utility.Pay.UnionPay.Interface.IVR.Request.PreOrderRequest()
                    {
                        SendTime          = DateTime.Now,
                        SendSeqID         = Guid.NewGuid().ToString("N"),
                        FrontUrl          = string.IsNullOrEmpty(para.ReturnUrl) ? ConfigurationManager.AppSettings["UnionPayCallBackUrl"] : para.ReturnUrl,
                        BackUrl           = ConfigurationManager.AppSettings["UnionPayIVRNotifyUrl"].Trim('?') + string.Format("?ChannelID={0}", channel.ChannelID),
                        MerchantOrderDesc = entity.AppOrderDesc,
                        Mode                  = IVRModes.Callback,
                        TransTimeout          = entity.AppOrderTime,
                        MerchantOrderCurrency = Currencys.RMB,
                        MerchantOrderAmt      = entity.AppOrderAmount,
                        MerchantID            = unionIVRPaychannel.MerchantID,
                        MerchantOrderTime     = entity.AppOrderTime,
                        MerchantOrderID       = entity.OrderID.ToString(),
                        MobileNum             = entity.MobileNO
                    };
                    requestJson = IVRreq.ToJSON();
                    var IvrResponse = IVRGateway.PreOrder(unionIVRPaychannel, IVRreq);
                    responseJson = IvrResponse.ToJSON();
                    if (IvrResponse.IsSuccess)
                    {
                        entity.Status = 1;
                        bll.Update(entity);
                        Loggers.Debug(new DebugLogInfo()
                        {
                            Message = string.Format("银联IVR创建订单成功{0}【请求】:{1}{0}【响应】:{2}", Environment.NewLine, IVRreq.ToJSON(), IvrResponse.ToJSON())
                        });
                    }
                    else
                    {
                        Loggers.Debug(new DebugLogInfo()
                        {
                            Message = string.Format("银联IVR创建订单失败{0}【请求】:{1}{0}【响应】:{2}", Environment.NewLine, IVRreq.ToJSON(), IvrResponse.ToJSON())
                        });
                        response.ResultCode = 200;
                        response.Message    = IvrResponse.Description;
                    }
                    #endregion
                    break;

                case 3:
                    recordEntity.Platform = 2;
                    #region 阿里Wap支付
                    AliPayChannel         aliPayWapChannel = channel.ChannelParameters.DeserializeJSONTo <AliPayChannel>();
                    AliPayWapTokenRequest tokenRequest     = new AliPayWapTokenRequest(aliPayWapChannel)
                    {
                        CallBackUrl       = string.IsNullOrEmpty(para.ReturnUrl) ? ConfigurationManager.AppSettings["AliPayCallBackUrl"] : para.ReturnUrl,
                        NotifyUrl         = ConfigurationManager.AppSettings["AlipayWapNotify"].Trim('?') + string.Format("?ChannelID={0}", channel.ChannelID),
                        OutTradeNo        = entity.OrderID.ToString(),
                        Partner           = aliPayWapChannel.Partner,
                        SellerAccountName = aliPayWapChannel.SellerAccountName,
                        Subject           = entity.AppOrderDesc,
                        TotalFee          = Math.Round((Convert.ToDecimal(entity.AppOrderAmount) / 100), 2).ToString(),
                        ReqID             = Guid.NewGuid().ToString().Replace("-", "")
                    };
                    requestJson = tokenRequest.ToJSON();
                    var aliPayWapResponse = AliPayWapGeteway.GetQueryTradeResponse(tokenRequest, aliPayWapChannel);
                    responseJson = aliPayWapResponse.ToJSON();
                    if (aliPayWapResponse.IsSucess)
                    {
                        entity.PayUrl = aliPayWapResponse.RedirectURL;
                        entity.Status = 1;
                        bll.Update(entity);
                        url = aliPayWapResponse.RedirectURL;
                        Loggers.Debug(new DebugLogInfo()
                        {
                            Message = string.Format("AliPayWap创建订单成功{0}【请求】:{1}{0}【响应】:{2}", Environment.NewLine, tokenRequest.ToJSON(), aliPayWapResponse.ToJSON())
                        });
                    }
                    else
                    {
                        Loggers.Debug(new DebugLogInfo()
                        {
                            Message = string.Format("AliPayWap创建订单失败{0}【请求】:{1}{0}【响应】:{2}", Environment.NewLine, tokenRequest.ToJSON(), aliPayWapResponse.ToJSON())
                        });
                        response.ResultCode = 300;
                        response.Message    = aliPayWapResponse.Message;
                    }
                    #endregion
                    break;

                case 4:
                    recordEntity.Platform = 2;
                    #region 阿里OffLine支付
                    AliPayChannel aliPayChannel = channel.ChannelParameters.DeserializeJSONTo <AliPayChannel>();
                    //根据DynamicID判断是否预定单支付,DynamicID为空或者Null时调用OffLine预订单接口
                    if (string.IsNullOrWhiteSpace(para.DynamicID))
                    {
                        OfflineQRCodePreRequest qrRequest = new OfflineQRCodePreRequest(aliPayChannel)
                        {
                            OutTradeNo = entity.OrderID.ToString(),
                            NotifyUrl  = ConfigurationManager.AppSettings["AlipayOfflineNotify"].Trim('?') + string.Format("?ChannelID={0}", channel.ChannelID),
                            Subject    = entity.AppOrderDesc,
                            TotalFee   = Math.Round((Convert.ToDecimal(entity.AppOrderAmount) / 100), 2).ToString(),
                            //下面是测试数据,正式须更改
                            ExtendParams = new
                            {
                                MACHINE_ID  = "BJ_001", //?
                                AGENT_ID    = aliPayChannel.AgentID,
                                STORE_TYPE  = "0",      //?
                                STORE_ID    = "12314",  //?
                                TERMINAL_ID = "111",    //?
                                SHOP_ID     = "only"    //?
                            }.ToJSON()
                        };
                        requestJson = qrRequest.ToJSON();
                        var offlineQrResponse = AliPayOffLineGeteway.OfflineQRPay(qrRequest);
                        responseJson = offlineQrResponse.ToJSON();
                        if (offlineQrResponse.IsSucess)
                        {
                            entity.Status = 1;
                            entity.PayUrl = offlineQrResponse.PicUrl;
                            bll.Update(entity);
                            response.QrCodeUrl = offlineQrResponse.PicUrl;
                            Loggers.Debug(new DebugLogInfo()
                            {
                                Message = string.Format("AliPayOffline二维码支付创建订单成功{0}【请求】:{1}{0}【响应】:{2}", Environment.NewLine, qrRequest.ToJSON(), offlineQrResponse.ToJSON())
                            });
                        }
                        else
                        {
                            Loggers.Debug(new DebugLogInfo()
                            {
                                Message = string.Format("AliPayOffline二维码支付创建订单失败{0}【请求】:{1}{0}【响应】:{2}", Environment.NewLine, qrRequest.ToJSON(), offlineQrResponse.ToJSON())
                            });
                            response.ResultCode = 400;
                            response.Message    = offlineQrResponse.DetailErrorCode + ":" + offlineQrResponse.DetailErrorDes;
                        }
                    }
                    else
                    {
                        CreateAndPayRequest createAndPayrequest = new CreateAndPayRequest(aliPayChannel)
                        {
                            Subject       = entity.AppOrderDesc,
                            TotalFee      = Math.Round((Convert.ToDecimal(entity.AppOrderAmount) / 100), 2).ToString(),
                            NotifyUrl     = ConfigurationManager.AppSettings["AlipayOfflineNotify"].Trim('?') + string.Format("?ChannelID={0}", channel.ChannelID),
                            OutTradeNo    = entity.OrderID.ToString(),
                            DynamicIDType = para.DynamicIDType,
                            DynamicID     = para.DynamicID,
                        };
                        if (!string.IsNullOrEmpty(aliPayChannel.AgentID))
                        {
                            createAndPayrequest.ExtendParams = (new
                            {
                                AGENT_ID = aliPayChannel.AgentID,
                                MACHINE_ID = "BJ_001",
                                STORE_TYPE = "0",
                                STORE_ID = "BJ_ZZ_001",
                                TERMINAL_ID = "A80001",
                                SHOP_ID = "only"
                            }).ToJSON();
                        }
                        requestJson = createAndPayrequest.ToJSON();
                        var offlineCreateAndPayResponse = AliPayOffLineGeteway.OfflineCreateAndPay(createAndPayrequest);
                        responseJson = offlineCreateAndPayResponse.ToJSON();
                        if (offlineCreateAndPayResponse.IsSuccess)
                        {
                            entity.Status = 2;
                            bll.Update(entity);
                            Loggers.Debug(new DebugLogInfo()
                            {
                                Message = string.Format("AliPayOffline即支付创建订单成功{0}【请求】:{1}{0}【响应】:{2}", Environment.NewLine, createAndPayrequest.ToJSON(), offlineCreateAndPayResponse.ToJSON())
                            });
                        }
                        else if (offlineCreateAndPayResponse.ResultCode == ResultCodes.ORDER_SUCCESS_PAY_FAIL.ToString())
                        {
                            entity.Status = 1;
                            bll.Update(entity);
                            Loggers.Debug(new DebugLogInfo()
                            {
                                Message = string.Format("AliPayOffline即支付创建订单成功{0},支付失败【请求】:{1}{0}【响应】:{2}", Environment.NewLine, createAndPayrequest.ToJSON(), offlineCreateAndPayResponse.ToJSON())
                            });
                        }
                        else if (offlineCreateAndPayResponse.ResultCode == ResultCodes.ORDER_SUCCESS_PAY_INPROCESS.ToString())
                        {
                            entity.Status = 1;
                            bll.Update(entity);
                            Loggers.Debug(new DebugLogInfo()
                            {
                                Message = string.Format("AliPayOffline即支付创建订单成功{0},支付处理中【请求】:{1}{0}【响应】:{2}", Environment.NewLine, createAndPayrequest.ToJSON(), offlineCreateAndPayResponse.ToJSON())
                            });
                        }
                        else
                        {
                            Loggers.Debug(new DebugLogInfo()
                            {
                                Message = string.Format("AliPayOffline即支付创建订单失败{0}【请求】:{1}{0}【响应】:{2}", Environment.NewLine, createAndPayrequest.ToJSON(), offlineCreateAndPayResponse.ToJSON())
                            });
                            response.ResultCode = 400;
                            response.Message    = offlineCreateAndPayResponse.DetailErrorCode + ":" + offlineCreateAndPayResponse.DetailErrorDes;
                        }
                    }
                    #endregion
                    break;

                case 5:    //Native
                case 6:    //微信JS
                case 7:    //微信App
                    recordEntity.Platform = 3;
                    #region 微信Native支付,JS支付
                    //把channel里的参数传了过去
                    WeiXinPayHelper helper = new WeiXinPayHelper(channel.ChannelParameters.DeserializeJSONTo <WeiXinPayHelper.Channel>());
                    entity.PayUrl    = ConfigurationManager.AppSettings["WeiXinPrePay"];
                    entity.NotifyUrl = ConfigurationManager.AppSettings["WeiXinPayNotify"];
                    WeiXinPayHelper.PrePayResult result = null;

                    if (para.PaymentMode == 1)    //PaymentMode=1标示微信扫码支付进入
                    {
                        helper.channel.trade_type = "NATIVE";
                        channel.PayType           = 5; //走扫码回调返回参数
                    }

                    Loggers.Debug(new DebugLogInfo()
                    {
                        Message = "isSpPay:" + helper.channel.isSpPay
                    });

                    if (helper.channel.isSpPay == "1")     //isSpPay=1 服务商支付
                    {
                        result = helper.serPrePay(entity); //统一下单,服务商支付
                    }
                    else
                    {
                        result = helper.prePay(entity);    //统一下单,获取微信网页支付的预支付信息,app支付和js支付是一样的
                    }

                    Loggers.Debug(new DebugLogInfo()
                    {
                        Message = "微信支付_预支付返回结果:" + result.ToJSON()
                    });
                    requestJson  = helper.prePayRequest;
                    responseJson = helper.prePayResponse;
                    if (result.return_code == "SUCCESS" && result.result_code == "SUCCESS")
                    {
                        if (channel.PayType == 6)
                        {
                            response.WXPackage = helper.getJsParamater(result);
                        }
                        else if (channel.PayType == 7)    //后面传的参数和js支付的就不一样了
                        {
                            response.WXPackage = helper.getAppParamater(result);
                            response.OrderID   = entity.OrderID;
                        }
                        else    //Native
                        {
                            response.WXPackage = result.ToJSON();
                            response.QrCodeUrl = result.code_url;
                        }
                        Loggers.Debug(new DebugLogInfo()
                        {
                            Message = "WXPackage:" + response.WXPackage
                        });
                    }
                    else
                    {
                        response.ResultCode = 101;                    //支付失败
                        if (!string.IsNullOrEmpty(result.return_msg)) //不同错误,错误信息位置不同
                        {
                            response.Message = result.return_msg;
                        }
                        else
                        {
                            response.Message = result.err_code_des;
                        }
                    }

                    #endregion
                    break;

                case 8:    //旺财支付
                    return(string.Empty);

                case 9:    //新版支付宝扫码支付
                    #region
                    AliPayChannel     aliPayScanChannel = channel.ChannelParameters.DeserializeJSONTo <AliPayChannel>();
                    RequestScanEntity scRequest         = new RequestScanEntity(aliPayScanChannel);
                    scRequest.notify_url = "" + ConfigurationManager.AppSettings["AlipayOfflineNotify"];

                    RequstScanDetail scanDetail = new RequstScanDetail();
                    scanDetail.out_trade_no = "" + entity.OrderID;
                    scanDetail.total_amount = "" + Math.Round((Convert.ToDecimal(entity.AppOrderAmount) / 100), 2);
                    scanDetail.seller_id    = aliPayScanChannel.Partner;
                    scanDetail.subject      = entity.AppOrderDesc;

                    var scResponseJson = AliPayScanGeteway.GetResponseStr(scRequest, scanDetail.ToJSON(), aliPayScanChannel.RSA_PrivateKey);
                    var scResponse     = scResponseJson.DeserializeJSONTo <ResponsetScanEntity>();

                    if (scResponse.alipay_trade_precreate_response.code == "10000")
                    {
                        response.QrCodeUrl = scResponse.alipay_trade_precreate_response.qr_code;
                        Loggers.Debug(new DebugLogInfo()
                        {
                            Message = string.Format("aliPayScanChannel二维码支付创建订单成功{0}【请求】:{1}{0}【响应】:{2}", Environment.NewLine, requestJson, scResponseJson)
                        });
                    }
                    else
                    {
                        Loggers.Debug(new DebugLogInfo()
                        {
                            Message = string.Format("AliPayOffline二维码支付创建订单失败{0}【请求】:{1}{0}【响应】:{2}", Environment.NewLine, requestJson, scResponseJson)
                        });
                        response.ResultCode = 400;
                        response.Message    = scResponse.alipay_trade_precreate_response.code + ":" + scResponse.alipay_trade_precreate_response.msg;
                    }
                    #endregion
                    break;

                default:
                    break;
                }
                recordEntity.RequestJson  = requestJson;
                recordEntity.ResponseJson = responseJson;
                recordBll.Create(recordEntity);
            }
            catch (Exception ex)
            {
                recordEntity.RequestJson  = requestJson;
                recordEntity.ResponseJson = responseJson;
                recordBll.Create(recordEntity);
                throw ex;
            }
            #endregion
            return(url);
        }
Beispiel #18
0
 /// <summary>
 /// 预订单
 /// <remarks>
 /// <para>商户平台 -> 支付平台</para>
 /// </remarks>
 /// </summary>
 /// <param name="pChannel">调用支付接口的基本设置信息</param>
 /// <param name="pRequest">预订单请求</param>
 public static PreOrderResponse PreOrder(UnionPayChannel pChannel, PreOrderRequest pRequest)
 {
     return(IVRGateway.CallAPI <PreOrderRequest, PreOrderResponse>(pChannel, pRequest));
 }
Beispiel #19
0
        public Response <PreOrderResponse> BatchIimportUpdateLoadKey(string CustomerID, PreOrderRequest request)
        {
            Response <PreOrderResponse> response = new Response <PreOrderResponse>();

            response.Result         = new PreOrderResponse(); //结果集初始化
            response.SuccessMessage = new PreOrderAccessor().BatchIimportUpdateLoadKey(CustomerID, request.PreOrderList);
            if (response.SuccessMessage.Contains("更新成功"))
            {///根据数据库传出的值判断是否执行成功
                response.IsSuccess = true;
            }
            else
            {
                response.IsSuccess = false;
            }
            return(response);

            //Response<PreOrderAndPreOrderDetail> response = new Response<PreOrderAndPreOrderDetail> { Result = new PreOrderAndPreOrderDetail() };
            //if (request == null || request.PreOd == null)
            //{
            //    ArgumentNullException ex = new ArgumentNullException("sp_wms_GetSKU request");
            //    LogError(ex);
            //    response.ErrorCode = ErrorCode.Argument;
            //    response.Exception = ex;
            //    return response;
            //}
            //try
            //{
            //    PreOrderAccessor accessor = new PreOrderAccessor();
            //    response.Result = accessor.BatchIimportUpdateLoadKey(CustomerID, request.PreOrderList);
            //    //response.Result = accessor.AddPreOrderAndPreOrderDetail(request.PreOrderList, request.PreOd, Creator);
            //    response.IsSuccess = true;
            //}
            //catch (Exception ex)
            //{
            //    LogError(ex);
            //    response.IsSuccess = false;
            //    response.ErrorCode = ErrorCode.Technical;
            //}
            //return response;
        }
Beispiel #20
0
        /// <summary>
        /// 解析出库单,一个文件一单 根据loadkey区分
        /// </summary>
        /// <param name="txtlists"></param>
        /// <param name="externumber"></param>
        /// <returns></returns>
        public string LFOrderImportByLoadKey(List <string> txtlists, out string externumber)
        {
            externumber = "";
            try
            {
                PreOrderRequest       requestPo            = new PreOrderRequest();
                List <PreOrder>       _preorderLists       = new List <PreOrder>();
                List <PreOrderDetail> _preorderDetailLists = new List <PreOrderDetail>();

                if (txtlists[0].TxtSubstring(0, 10) == "WMSSHP" && txtlists[0].TxtSubstring(10, 2) == "O")//LF出库单
                {
                    int linenumber = 1;
                    for (int i = 0; i < txtlists.Count; i++)
                    {
                        if (txtlists[i].TxtSubstring(0, 10) == "WMSSHP")//文档头
                        {
                            continue;
                        }
                        if (txtlists[i].TxtSubstring(0, 5) == "SHPHD" && txtlists[i].TxtSubstring(5, 1) == "A")//订单头
                        {
                            string loadkey = txtlists[i].TxtSubstring(4166, 10);
                            if (string.IsNullOrEmpty(loadkey))
                            {
                                return(ReturnTxtError("文档中存在LoadKey为空的订单"));
                            }

                            if (_preorderLists.Count() <= 0)//订单头只有一行
                            {
                                #region 订单头
                                PreOrder preorder = new PreOrder();
                                preorder.str9 = loadkey;
                                externumber   = loadkey;
                                string plantime = string.IsNullOrEmpty(txtlists[i].TxtSubstring(65, 14)) ? "" :
                                                  DateTime.ParseExact(txtlists[i].TxtSubstring(65, 14), "yyyyMMddHHmmss", System.Globalization.CultureInfo.CurrentCulture).ToString("yyyy-MM-dd"); //计划发货时间
                                string shiptype = txtlists[i].TxtSubstring(209, 30);                                                                                                               //运输方式

                                if (string.IsNullOrEmpty(plantime))
                                {
                                    return(ReturnTxtError("文档中计划发货时间为空,无法生成外部单号"));
                                }

                                preorder.str7 = plantime; //计划发货时间
                                preorder.str3 = shiptype; //运输方式

                                //外部单号
                                preorder.ExternOrderNumber = "LF" + preorder.str7.Replace("-", "") + "-" + preorder.str9;
                                if (!string.IsNullOrEmpty(shiptype))//加上运输方式
                                {
                                    preorder.ExternOrderNumber += "-" + preorder.str3;
                                }

                                preorder.str17 = txtlists[i].TxtSubstring(2093, 10); //LF出库单号,这个在数据库是存在明细str8里面的,插入时清空这个值
                                //preorder.str16 = txtlists[i].TxtSubstring(21, 20);//NIKE单据编码,这个在数据库是存在明细里面的,插入时清空这个值
                                preorder.str20 = txtlists[i].TxtSubstring(21, 20);   //NIKE单据编码,这个在数据库是存在明细里面的,插入时清空这个值

                                preorder.OrderTime = DateTime.Now;
                                preorder.str4      = txtlists[i].TxtSubstring(79, 15);   //NFS店铺编码
                                string DivisionCode = txtlists[i].TxtSubstring(349, 10); //Division Code
                                if (DivisionCode == "10")
                                {
                                    preorder.str13 = "APP";
                                }
                                else if (DivisionCode == "20" || DivisionCode == "40")
                                {
                                    preorder.str13 = "FTW";
                                }
                                else
                                {
                                    preorder.str13 = "EQP";
                                }
                                preorder.str10    = txtlists[i].TxtSubstring(703, 20);                                                                                                                                   //NIKE PO
                                preorder.str2     = txtlists[i].TxtSubstring(724, 20);                                                                                                                                   //运输时效
                                preorder.str8     = txtlists[i].TxtSubstring(804, 20);                                                                                                                                   //VAS CODE
                                preorder.str11    = txtlists[i].TxtSubstring(907, 30);                                                                                                                                   //PACK SLIP NO
                                preorder.str5     = txtlists[i].TxtSubstring(1705, 45);                                                                                                                                  //公司名
                                preorder.Address  = txtlists[i].TxtSubstring(1750, 45) + "&" + txtlists[i].TxtSubstring(1795, 45) + "&" + txtlists[i].TxtSubstring(1840, 45) + "&" + txtlists[i].TxtSubstring(1885, 45); //地址1,2,3,4
                                preorder.City     = txtlists[i].TxtSubstring(1930, 45);                                                                                                                                  //城市
                                preorder.Province = txtlists[i].TxtSubstring(1975, 2);                                                                                                                                   //省
                                preorder.str12    = "否";                                                                                                                                                                 //是否单仓LoadKey

                                preorder.str6  = "";                                                                                                                                                                     //好像是男女童鞋服配之类的
                                preorder.str14 = "";                                                                                                                                                                     //RP LI,先判断NIKE PO的第九位,是L时,值为LI,是S时,值为RP,否则取VAS Code
                                if (preorder.str10.Length >= 9)
                                {
                                    if (preorder.str10.Substring(8, 1) == "L")
                                    {
                                        preorder.str14 = "LI";
                                    }
                                    else if (preorder.str10.Substring(8, 1) == "S")
                                    {
                                        preorder.str14 = "RP";
                                    }
                                    else
                                    {
                                        if (preorder.str8.Equals("NIKECN"))//VAS Code
                                        {
                                            preorder.str14 = "";
                                        }
                                        else
                                        {
                                            preorder.str14 = preorder.str8;
                                        }
                                    }
                                }
                                else
                                {
                                    if (preorder.str8.Equals("NIKECN"))//VAS Code
                                    {
                                        preorder.str14 = "";
                                    }
                                    else
                                    {
                                        preorder.str14 = preorder.str8;
                                    }
                                }

                                //CRD逻辑 计划发货时间+运输时效
                                preorder.str15 = (DateTime.Parse(preorder.str7).AddDays(int.Parse(preorder.str2))).ToString("yyyy-MM-dd");
                                try
                                {
                                    if (DateTime.Parse(preorder.str7).AddDays(int.Parse(preorder.str2)) > DateTime.ParseExact(preorder.str10.Substring(0, 8), "yyyyMMdd", System.Globalization.CultureInfo.CurrentCulture))
                                    {
                                        preorder.str15 = "";//CRD
                                    }
                                    else
                                    {
                                        preorder.str15 = DateTime.ParseExact(preorder.str10.Substring(0, 8), "yyyyMMdd", System.Globalization.CultureInfo.CurrentCulture).ToString("yyyy-MM-dd");
                                    }
                                }
                                catch (Exception ea)
                                {
                                }

                                //预计卸货时间
                                preorder.str16 = (DateTime.Parse(preorder.str7).AddDays(int.Parse(preorder.str2))).ToString("yyyy-MM-dd");

                                try
                                {
                                    DateTime time = DateTime.Parse(preorder.str10.Substring(0, 8).Insert(4, "-").Insert(7, "-"));
                                    preorder.str16 = preorder.str10.Substring(0, 8).Insert(4, "-").Insert(7, "-");
                                }
                                catch (Exception)
                                { }

                                preorder.str18        = "LF";//标识利丰订单
                                preorder.CustomerID   = 103;
                                preorder.CustomerName = "NIKE-Return";
                                preorder.Warehouse    = "NIKE-退货仓";
                                preorder.OrderType    = "正常出库";
                                preorder.Status       = 1;
                                preorder.Creator      = "SFTPUser";
                                _preorderLists.Add(preorder);

                                #endregion
                            }
                            else
                            {
                                if (_preorderLists.Where(m => m.str9 == loadkey).Count() <= 0)
                                {
                                    return(ReturnTxtError("文档中存在多个LoadKey的情况"));
                                }
                                continue;
                            }
                        }
                        else if (txtlists[i].TxtSubstring(0, 5) == "SHPDT" && txtlists[i].TxtSubstring(5, 1) == "A") //订单明细SKU
                        {
                            string ArticleColorSize = txtlists[i].TxtSubstring(36, 20);                              //lf传过来的sku,里面包含款色码
                            if (string.IsNullOrEmpty(ArticleColorSize))
                            {
                                return(ReturnTxtError("文档信息中SKU(articlesize)为空"));
                            }
                            //相同SKU
                            if (_preorderDetailLists.Where(m => m.str16 == ArticleColorSize).Count() > 0)
                            {
                                //同SKU数量累加
                                _preorderDetailLists.Where(m => m.str16 == ArticleColorSize).FirstOrDefault().OriginalQty += txtlists[i].TxtSubstring(538, 10).ObjectToInt32();//数量
                                continue;
                            }
                            else
                            {
                                #region 订单明细

                                PreOrderDetail predetail = new PreOrderDetail();
                                predetail.str16 = ArticleColorSize;                                                                        //先存着和vas行去比较
                                predetail.str17 = ArticleColorSize.Substring(0, 6).Trim() + '-' + ArticleColorSize.Substring(6, 3).Trim(); //article
                                predetail.str18 = ArticleColorSize.Substring(9).Trim();                                                    //size
                                predetail.str6  = predetail.str17 + '-' + predetail.str18;                                                 //Article+size

                                predetail.str7        = "";                                                                                //取主表的Division Code
                                predetail.str8        = txtlists[i].TxtSubstring(460, 10);                                                 //LF出库单号
                                predetail.str9        = "";                                                                                //NIKE单据编码
                                predetail.OriginalQty = txtlists[i].TxtSubstring(538, 10).ObjectToInt32();                                 //数量
                                //predetail.LineNumber = txtlists[i].TxtSubstring(548, 5);//LF出库单行号
                                predetail.LineNumber = linenumber.ToString().TxtPadLeftstring(5, '0');


                                predetail.CustomerID   = 103;
                                predetail.CustomerName = "NIKE-Return";
                                predetail.Warehouse    = "NIKE-退货仓";
                                predetail.WarehouseId  = 58;
                                predetail.GoodsType    = "A品";
                                _preorderDetailLists.Add(predetail);
                                linenumber++;
                                #endregion
                            }
                        }
                        else if (txtlists[i].TxtSubstring(0, 5) == "ORDRF" && txtlists[i].TxtSubstring(5, 1) == "A")//SKU的VAS信息
                        {
                            continue;
                        }
                    }

                    if (!_preorderLists.Any() || !_preorderDetailLists.Any())
                    {
                        return(ReturnTxtError("文档中不存在订单信息"));
                    }
                    //验证loadkey在系统是否存在
                    IEnumerable <PreOrder> getpreorders = new PreOrderService().GetWMSPreOrderlistByLoadKey(_preorderLists);
                    if (getpreorders != null && getpreorders.Any())
                    {
                        return(ReturnTxtError("文档中的LoadKey在系统中已经存在"));
                    }

                    //验证SKU是否存在
                    List <ProductSearch> searprolistfs = new List <ProductSearch>();
                    foreach (var item in _preorderDetailLists)
                    {
                        ProductSearch psfs = new ProductSearch();
                        psfs.Str10 = item.str17;
                        psfs.Str9  = item.str18;
                        psfs.Str8  = "01";
                        searprolistfs.Add(psfs);
                    }
                    IEnumerable <ProductSearch> productListfs = new ProductService().GetSearchProduct(103, searprolistfs, "Acticle");

                    foreach (var item in _preorderDetailLists)
                    {
                        //判断如果通过article+size是否存在信息
                        ProductSearch search = productListfs.Where(m => m.Str10 == item.str17 && m.Str9 == item.str18).FirstOrDefault();
                        if (search == null)
                        {
                            return(ReturnTxtError("文档中的article:" + item.str17 + "Size:" + item.str18 + "在系统不存在"));
                        }
                        item.SKU       = search.SKU;
                        item.GoodsName = search.GoodsName;
                        item.str2      = search.Price;
                        item.str3      = search.SafeLock;
                        item.str4      = search.Hanger;
                        item.str10     = search.GenderAge;

                        item.ExternOrderNumber = _preorderLists.FirstOrDefault().ExternOrderNumber;
                        item.str7 = _preorderLists.FirstOrDefault().str13; //Division Code
                        //item.str9 = _preorderLists.FirstOrDefault().str16;//NIKE单据编码
                        item.str9 = _preorderLists.FirstOrDefault().str20; //NIKE单据编码
                        _preorderLists.FirstOrDefault().str6 = item.str10; ////GenderAge
                    }

                    //foreach (var detailitem in _preorderDetailLists)
                    //{
                    //    detailitem.ExternOrderNumber = _preorderLists.FirstOrDefault().ExternOrderNumber;
                    //    detailitem.str7 = _preorderLists.FirstOrDefault().str13; //Division Code
                    //    detailitem.str9 = _preorderLists.FirstOrDefault().str16;//NIKE单据编码
                    //    _preorderLists.FirstOrDefault().str6 = detailitem.str10;////GenderAge

                    //}
                    //把主表不需要的清空,明细不需要的清空
                    _preorderLists.ForEach((item) =>
                    {
                        item.str20 = null;// item.str16 = null;
                        item.str17 = null;
                    });
                    _preorderDetailLists.ForEach((item) =>
                    {
                        item.str10 = null;
                        item.str16 = null;
                        item.str17 = null;
                        item.str18 = null;
                    });
                    requestPo.PreOrderList = _preorderLists;
                    requestPo.PreOd        = _preorderDetailLists;
                    var response = new PreOrderService().AddPreOrderAndPreOrderDetail(requestPo, "SFTPService");
                    if (response.IsSuccess)
                    {
                        if (response.Result == null || response.Result.PreOrderList == null || response.Result.PreOrderList.Count() <= 0)
                        {
                            return("订单数据库插入失败,不移动文件!");
                        }
                        else
                        {
                            return("");
                        }
                    }
                    else
                    {
                        return("数据库层报错:" + response.ErrorCode.ToString());
                    }
                }
                else
                {
                    return(ReturnTxtError());
                }
            }
            catch (Exception ex)
            {
                return(ex.Message.ToString());
            }
        }