/// <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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
/// <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); }
/// <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)); } }
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; } }
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"); }
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); }
/// <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); }
/// <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); }
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); }
/// <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); }
/// <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)); }
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; }
/// <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()); } }