public static void Operate(ref Common.Transfer Trans) { try { PubInfo Rp = (PubInfo)Assembly.Load("Business").CreateInstance("Business." + Trans.Class); var HashString = Trans.Attribute.ToString() + DateTime.Now.ToString("yyyyMMdd") + Rp.Token; var Mac = AppPKI.getMd5Hash(HashString); #region 针对参数值带特殊字符的进行修改转义 if (Trans.Attribute.Contains("&")) { Trans.Attribute = Trans.Attribute.Replace("&", "&"); } #endregion //鸿坤第三方 不要安全验证 单独去掉 if (Trans.Class == "HKCallCenter") { Rp.Operate(ref Trans); } else if (Trans.Class == "DataVHJ") { //合景datav 大屏 去掉验证 Rp.Operate(ref Trans); } else if (Trans.Class == "ContractAuditInfo_FanWei") { //合景经营合同审核 去掉验证 Rp.Operate(ref Trans); } else if (Trans.Class == "PolyDataV") { //合景datav 大屏 去掉验证 Rp.Operate(ref Trans); } else if (Trans.Class == "CostInfoSunshineNewest") { Rp.Operate(ref Trans); } else if (Trans.Class == "HKParkCostInfo") { Rp.Operate(ref Trans); } else if (Trans.Class == "CostInfo_RS" || Trans.Class == "Meter_RS" || Trans.Class == "Material_RS") { if (Trans.Mac == Mac) { Rp.Operate(ref Trans); } else { Trans.Error = "验证令牌错误"; } } else { if (HttpContext.Current.Request.Url.Host.ToLower() == "localhost") { Rp.Operate(ref Trans); } else { if (!OperateKnownClass(ref Trans)) { if (Trans.Mac == Mac) { Rp.Operate(ref Trans); } else { Trans.Error = "验证令牌错误"; } } } } } catch (Exception ex) { PubInfo.GetLog().Error(ex); Trans.Error = new ApiResult(false, ex.Message + Environment.NewLine + ex.StackTrace).toJson(); } }
public void ProcessRequest(HttpContext context) { try { DateTime DateNow = DateTime.Now; List <string> list = new List <string>(); foreach (var item in context.Request.Params.AllKeys) { list.Add($"{item}={context.Request.Params[item]}"); } Business.Alipay.Log("收到微信通知" + context.Request.RawUrl + "?" + string.Join("&", list)); HttpRequest Request = context.Request; context.Response.ContentType = "text/plain"; string respcode = ""; string respmsg = ""; string orderId = ""; //string CommunityId = ""; string amt = ""; //返回报文中不包含UPOG,表示Server端正确接收交易请求,则需要验证Server端返回报文的签名 bool IsValidate = false; WxPayData WxPostData = new WxPayData(); string Result = Notify.NotifyDataFromContext(context, ref IsValidate, ref WxPostData); respcode = WxPostData.GetValue("result_code").ToString(); respmsg = WxPostData.GetValue("result_code").ToString(); orderId = WxPostData.GetValue("out_trade_no").ToString(); //CommunityId = WxPostData.GetValue("attach").ToString(); amt = WxPostData.GetValue("total_fee").ToString(); //string userId = null; //if (CommunityId.Contains(",")) //{ // userId = CommunityId.Split(',')[1]; // CommunityId = CommunityId.Split(',')[0]; //} if (IsValidate == false) { //Business.WeiXinPay.Log("验签失败:" + CommunityId + "," + orderId.ToString()); Business.WeiXinPay.Log("验签失败:" + orderId.ToString()); Result = SetNotifyResult("FAIL", Result); context.Response.Write(Result); return; } Business.WeiXinPay.Log("微信支付验签成功:" + orderId.ToString()); if (IsValidate == true) { // 通过OrderID订单号查询对应订单 using (IDbConnection conn = new SqlConnection(PubConstant.UnifiedContionString)) { dynamic OrderInfo = conn.QueryFirstOrDefault("SELECT * FROM Tb_CCBPay_Order WHERE OrderSN = @OrderSN", new { OrderSN = orderId }); if (null == OrderInfo) { PubInfo.GetLog().Info("鸿坤建行收款通知内容:订单不存在"); return; } if (3 == Convert.ToInt32(OrderInfo.IsSucc)) { PubInfo.GetLog().Info("鸿坤建行收款通知内容:订单已下账"); return; } // 获取支付配置信息 dynamic PayConfig = conn.QueryFirstOrDefault("SELECT * FROM Tb_WeiXinPay_Config WHERE Id = @Id", new { Id = OrderInfo.PayConfigNewId }); if (null == PayConfig) { PubInfo.GetLog().Info("鸿坤建行收款通知内容:支付配置不存在"); Business.HKCCBPay.UpdateOrderInfo(PubConstant.UnifiedContionString, orderId, null, 0, JsonConvert.SerializeObject(WxPostData), 2, "支付配置不存在"); return; } // 获取小区信息 Tb_Community tb_Community = PubInfo.GetCommunity(Convert.ToString(PayConfig.CommunityId)); if (null == tb_Community) { PubInfo.GetLog().Info("鸿坤建行收款通知内容:小区配置不存在"); Business.HKCCBPay.UpdateOrderInfo(PubConstant.UnifiedContionString, orderId, null, 0, JsonConvert.SerializeObject(WxPostData), 2, "小区配置不存在"); return; } decimal SAmt = Convert.ToDecimal(amt) / 100; // 判断金额是否一致 if (Convert.ToDecimal(OrderInfo.Amt) != SAmt) { PubInfo.GetLog().InfoFormat("鸿坤建行收款通知内容:账单金额与实收金额不一致(SAmt={0})", SAmt); Business.HKCCBPay.UpdateOrderInfo(PubConstant.UnifiedContionString, orderId, null, 0, JsonConvert.SerializeObject(WxPostData), 2, "账单金额与实收金额不一致"); return; } string erpConnStr = PubInfo.GetConnectionStr(tb_Community); JObject PayData = JsonConvert.DeserializeObject <JObject>(Convert.ToString(OrderInfo.PayData)); int Type = (int)PayData["Type"]; if (Type == 1) { JArray Data = (JArray)PayData["Data"]; if (null == Data || Data.Count == 0) { PubInfo.GetLog().InfoFormat("鸿坤建行收款通知内容:下账失败(订单支付信息有误)(PayData={0})", OrderInfo.PayData); Business.HKCCBPay.UpdateOrderInfo(PubConstant.UnifiedContionString, orderId, DateNow.ToString(), SAmt, JsonConvert.SerializeObject(WxPostData), 2, "下账失败(订单支付信息有误)"); return; } StringBuilder FeesIds = new StringBuilder(); foreach (JObject item in Data) { FeesIds.Append((string)item["FeesId"] + ","); } if (PubInfo.ReceFees(erpConnStr, out long ReceID, Convert.ToString(tb_Community.CommID), Convert.ToString(OrderInfo.CustID), Convert.ToString(OrderInfo.RoomID), FeesIds.ToString(), 0.00M, "自助缴费-微信")) { PubInfo.GetLog().InfoFormat("鸿坤建行收款通知内容:下账成功(PayData={0})", OrderInfo.PayData); Business.HKCCBPay.UpdateOrderInfo(PubConstant.UnifiedContionString, orderId, DateNow.ToString().ToString(), SAmt, JsonConvert.SerializeObject(WxPostData), 3, "下账成功"); return; } else { PubInfo.GetLog().InfoFormat("鸿坤建行收款通知内容:下账失败(订单支付信息有误)(PayData={0})", OrderInfo.PayData); Business.HKCCBPay.UpdateOrderInfo(PubConstant.UnifiedContionString, orderId, DateNow.ToString().ToString(), SAmt, JsonConvert.SerializeObject(WxPostData), 4, "下账失败"); return; } } else if (Type == 2) { JObject Data = (JObject)PayData["Data"]; if (null == Data) { PubInfo.GetLog().InfoFormat("鸿坤建行收款通知内容:下账失败(订单支付信息有误)(PayData={0})", OrderInfo.PayData); Business.HKCCBPay.UpdateOrderInfo(PubConstant.UnifiedContionString, orderId, DateNow.ToString(), SAmt, JsonConvert.SerializeObject(WxPostData), 2, "支付金额必须大于0"); return; } string CostID = (string)Data["CostID"]; decimal Amt = (Decimal)Data["Amt"]; if (PubInfo.RecePreFees(erpConnStr, out long ReceID, Convert.ToString(tb_Community.CommID), Convert.ToString(OrderInfo.CustID), Convert.ToString(OrderInfo.RoomID), CostID, Amt, "自助缴费-微信")) { PubInfo.GetLog().InfoFormat("鸿坤建行收款通知内容:下账成功(PayData={0})", OrderInfo.PayData); Business.HKCCBPay.UpdateOrderInfo(PubConstant.UnifiedContionString, orderId, DateNow.ToString(), SAmt, JsonConvert.SerializeObject(WxPostData), 3, "下账成功"); return; } else { PubInfo.GetLog().InfoFormat("鸿坤建行收款通知内容:下账失败(订单支付信息有误)(PayData={0})", OrderInfo.PayData); Business.HKCCBPay.UpdateOrderInfo(PubConstant.UnifiedContionString, orderId, DateNow.ToString(), SAmt, JsonConvert.SerializeObject(WxPostData), 4, "下账失败"); return; } } else { PubInfo.GetLog().InfoFormat("鸿坤建行收款通知内容:下账失败(订单支付信息有误)(PayData={0})", OrderInfo.PayData); Business.HKCCBPay.UpdateOrderInfo(PubConstant.UnifiedContionString, orderId, DateNow.ToString(), SAmt, JsonConvert.SerializeObject(WxPostData), 2, "下账失败(订单支付信息有误)"); return; } }
public void ProcessRequest(HttpContext context) { try { //接收回调xml信息 byte[] byts = new byte[context.Request.InputStream.Length]; context.Request.InputStream.Read(byts, 0, byts.Length); string req = Encoding.UTF8.GetString(byts); PubInfo.GetLog().Info("鸿坤京东收款通接收内容:" + req); if (string.IsNullOrEmpty(req)) { throw new Exception("接口未获取到任何数据"); } //初步解析接收内容,获取到商家编号 var res = XMLUtil.decryptResXmlNew <JdPayResponse>(req); //根据商家编号获取配置信息 WxPayConfig payConfig = GenerateConfig(res.merchant); if (payConfig == null) { throw new Exception("根据商家编号没有找到配置信息"); } //根据配置的密钥进行解析数据 AsynNotifyResponse anyResponse = XMLUtil.decryptResXml <AsynNotifyResponse>(payConfig.APPID, payConfig.KEY, req); //判断订单是否成过 if ("success".Equals(anyResponse.result.desc)) { DateTime DateNow = DateTime.Now; string orderId = anyResponse.tradeNum; string amt = anyResponse.amount.ToString(); // 通过OrderID订单号查询对应订单 using (IDbConnection conn = new SqlConnection(PubConstant.UnifiedContionString)) { dynamic OrderInfo = conn.QueryFirstOrDefault("SELECT * FROM Tb_CCBPay_Order WHERE OrderSN = @OrderSN", new { OrderSN = orderId }); if (null == OrderInfo) { PubInfo.GetLog().Info("鸿坤京东收款通知内容:订单不存在"); return; } if (3 == Convert.ToInt32(OrderInfo.IsSucc)) { PubInfo.GetLog().Info("鸿坤京东收款通知内容:订单已下账"); return; } // 获取支付配置信息 dynamic PayConfig = conn.QueryFirstOrDefault("SELECT * FROM Tb_JDPay_Config WHERE Id = @Id", new { Id = OrderInfo.PayConfigNewId }); if (null == PayConfig) { PubInfo.GetLog().Info("鸿坤京东收款通知内容:支付配置不存在"); Business.HKCCBPay.UpdateOrderInfo(PubConstant.UnifiedContionString, orderId, null, 0, req, 2, "支付配置不存在"); return; } // 获取小区信息 Tb_Community tb_Community = PubInfo.GetCommunity(Convert.ToString(PayConfig.CommunityId)); if (null == tb_Community) { PubInfo.GetLog().Info("鸿坤京东收款通知内容:小区配置不存在"); Business.HKCCBPay.UpdateOrderInfo(PubConstant.UnifiedContionString, orderId, null, 0, req, 2, "小区配置不存在"); return; } decimal SAmt = Convert.ToDecimal(amt) / 100; // 判断金额是否一致 if (Convert.ToDecimal(OrderInfo.Amt) != SAmt) { PubInfo.GetLog().InfoFormat("鸿坤京东收款通知内容:账单金额与实收金额不一致(SAmt={0})", SAmt); Business.HKCCBPay.UpdateOrderInfo(PubConstant.UnifiedContionString, orderId, null, 0, req, 2, "账单金额与实收金额不一致"); return; } string erpConnStr = PubInfo.GetConnectionStr(tb_Community); JObject PayData = JsonConvert.DeserializeObject <JObject>(Convert.ToString(OrderInfo.PayData)); int Type = (int)PayData["Type"]; if (Type == 1) { JArray Data = (JArray)PayData["Data"]; if (null == Data || Data.Count == 0) { PubInfo.GetLog().InfoFormat("鸿坤京东收款通知内容:下账失败(订单支付信息有误)(PayData={0})", OrderInfo.PayData); Business.HKCCBPay.UpdateOrderInfo(PubConstant.UnifiedContionString, orderId, DateNow.ToString(), SAmt, req, 2, "下账失败(订单支付信息有误)"); return; } StringBuilder FeesIds = new StringBuilder(); foreach (JObject item in Data) { FeesIds.Append((string)item["FeesId"] + ","); } if (PubInfo.ReceFees(erpConnStr, out long ReceID, Convert.ToString(tb_Community.CommID), Convert.ToString(OrderInfo.CustID), Convert.ToString(OrderInfo.RoomID), FeesIds.ToString(), 0.00M, "自助缴费-京东")) { PubInfo.GetLog().InfoFormat("鸿坤京东收款通知内容:下账成功(PayData={0})", OrderInfo.PayData); Business.HKCCBPay.UpdateOrderInfo(PubConstant.UnifiedContionString, orderId, DateNow.ToString().ToString(), SAmt, req, 3, "下账成功"); return; } else { PubInfo.GetLog().InfoFormat("鸿坤京东收款通知内容:下账失败(订单支付信息有误)(PayData={0})", OrderInfo.PayData); Business.HKCCBPay.UpdateOrderInfo(PubConstant.UnifiedContionString, orderId, DateNow.ToString().ToString(), SAmt, req, 4, "下账失败"); return; } } else if (Type == 2) { JObject Data = (JObject)PayData["Data"]; if (null == Data) { PubInfo.GetLog().InfoFormat("鸿坤京东收款通知内容:下账失败(订单支付信息有误)(PayData={0})", OrderInfo.PayData); Business.HKCCBPay.UpdateOrderInfo(PubConstant.UnifiedContionString, orderId, DateNow.ToString(), SAmt, req, 2, "支付金额必须大于0"); return; } string CostID = (string)Data["CostID"]; decimal Amt = (Decimal)Data["Amt"]; if (PubInfo.RecePreFees(erpConnStr, out long ReceID, Convert.ToString(tb_Community.CommID), Convert.ToString(OrderInfo.CustID), Convert.ToString(OrderInfo.RoomID), CostID, Amt, "自助缴费-京东")) { PubInfo.GetLog().InfoFormat("鸿坤京东收款通知内容:下账成功(PayData={0})", OrderInfo.PayData); Business.HKCCBPay.UpdateOrderInfo(PubConstant.UnifiedContionString, orderId, DateNow.ToString(), SAmt, req, 3, "下账成功"); return; } else { PubInfo.GetLog().InfoFormat("鸿坤京东收款通知内容:下账失败(订单支付信息有误)(PayData={0})", OrderInfo.PayData); Business.HKCCBPay.UpdateOrderInfo(PubConstant.UnifiedContionString, orderId, DateNow.ToString(), SAmt, req, 4, "下账失败"); return; } } else { PubInfo.GetLog().InfoFormat("鸿坤京东收款通知内容:下账失败(订单支付信息有误)(PayData={0})", OrderInfo.PayData); Business.HKCCBPay.UpdateOrderInfo(PubConstant.UnifiedContionString, orderId, DateNow.ToString(), SAmt, req, 2, "下账失败(订单支付信息有误)"); return; } }
public void ProcessRequest(HttpContext context) { HttpRequest Request = context.Request; HttpResponse Response = context.Response; Response.ContentType = "text/plain"; DateTime DateNow = DateTime.Now; try { if (!"POST".Equals(Request.HttpMethod.ToUpper())) { PubInfo.GetLog().Info("不是鸿坤建行收款通知"); return; } Dictionary <string, string> param = new Dictionary <string, string>(); foreach (var item in Request.QueryString.AllKeys) { param.Add(item, Request.QueryString[item]); } PubInfo.GetLog().Info("收到鸿坤建行收款通知:" + JsonConvert.SerializeObject(param)); if (!"Y".Equals(param["SUCCESS"].ToUpper())) { PubInfo.GetLog().Info("鸿坤建行收款通知内容:交易状态不是成功状态"); return; } // 通过OrderID订单号查询对应订单 using (IDbConnection conn = new SqlConnection(PubConstant.UnifiedContionString)) { dynamic OrderInfo = conn.QueryFirstOrDefault("SELECT * FROM Tb_CCBPay_Order WHERE OrderSN = @OrderSN", new { OrderSN = param["ORDERID"] }); if (null == OrderInfo) { PubInfo.GetLog().Info("鸿坤建行收款通知内容:订单不存在"); return; } if (3 == Convert.ToInt32(OrderInfo.IsSucc)) { PubInfo.GetLog().Info("鸿坤建行收款通知内容:订单已下账"); return; } // 获取支付配置信息 dynamic PayConfig = conn.QueryFirstOrDefault("SELECT * FROM Tb_CCBPay_Config WHERE Id = @Id", new { Id = OrderInfo.PayConfigId }); if (null == PayConfig) { PubInfo.GetLog().Info("鸿坤建行收款通知内容:支付配置不存在"); Business.HKCCBPay.UpdateOrderInfo(PubConstant.UnifiedContionString, param["ORDERID"], null, 0, JsonConvert.SerializeObject(param), 2, "支付配置不存在"); return; } #region 需要进行验签 Dictionary <string, string> tempDic = new Dictionary <string, string>(param); tempDic.Remove("SIGN"); string initStr = ""; foreach (var item in tempDic) { initStr += string.Format("{0}={1}&", item.Key, item.Value); } initStr = initStr.Trim('&'); string sign = param["SIGN"]; string pubKey = Convert.ToString(PayConfig.Pub); if (!Business.HKCCBPay.VerifySign(initStr, sign, pubKey)) { PubInfo.GetLog().Info("鸿坤建行收款通知内容:签名校验失败"); return; } #endregion // 获取小区信息 Tb_Community tb_Community = PubInfo.GetCommunity(Convert.ToString(PayConfig.CommunityId)); if (null == tb_Community) { PubInfo.GetLog().Info("鸿坤建行收款通知内容:小区配置不存在"); Business.HKCCBPay.UpdateOrderInfo(PubConstant.UnifiedContionString, param["ORDERID"], null, 0, JsonConvert.SerializeObject(param), 2, "小区配置不存在"); return; } decimal SAmt = Convert.ToDecimal(param["PAYMENT"]); // 判断金额是否一致 if (Convert.ToDecimal(OrderInfo.Amt) != SAmt) { PubInfo.GetLog().InfoFormat("鸿坤建行收款通知内容:账单金额与实收金额不一致(SAmt={0})", SAmt); Business.HKCCBPay.UpdateOrderInfo(PubConstant.UnifiedContionString, param["ORDERID"], null, 0, JsonConvert.SerializeObject(param), 2, "账单金额与实收金额不一致"); return; } string erpConnStr = PubInfo.GetConnectionStr(tb_Community); JObject PayData = JsonConvert.DeserializeObject <JObject>(Convert.ToString(OrderInfo.PayData)); int Type = (int)PayData["Type"]; if (Type == 1) { JArray Data = (JArray)PayData["Data"]; if (null == Data || Data.Count == 0) { PubInfo.GetLog().InfoFormat("鸿坤建行收款通知内容:下账失败(订单支付信息有误)(PayData={0})", OrderInfo.PayData); Business.HKCCBPay.UpdateOrderInfo(PubConstant.UnifiedContionString, param["ORDERID"], DateNow.ToString(), SAmt, JsonConvert.SerializeObject(param), 2, "下账失败(订单支付信息有误)"); return; } StringBuilder FeesIds = new StringBuilder(); foreach (JObject item in Data) { FeesIds.Append((string)item["FeesId"] + ","); } if (PubInfo.ReceFees(erpConnStr, out long ReceID, Convert.ToString(tb_Community.CommID), Convert.ToString(OrderInfo.CustID), Convert.ToString(OrderInfo.RoomID), FeesIds.ToString(), 0.00M, "自助缴费-微信")) { PubInfo.GetLog().InfoFormat("鸿坤建行收款通知内容:下账成功(PayData={0})", OrderInfo.PayData); Business.HKCCBPay.UpdateOrderInfo(PubConstant.UnifiedContionString, param["ORDERID"], DateNow.ToString().ToString(), SAmt, JsonConvert.SerializeObject(param), 3, "下账成功"); return; } else { PubInfo.GetLog().InfoFormat("鸿坤建行收款通知内容:下账失败(订单支付信息有误)(PayData={0})", OrderInfo.PayData); Business.HKCCBPay.UpdateOrderInfo(PubConstant.UnifiedContionString, param["ORDERID"], DateNow.ToString().ToString(), SAmt, JsonConvert.SerializeObject(param), 4, "下账失败"); return; } } else if (Type == 2) { JObject Data = (JObject)PayData["Data"]; if (null == Data) { PubInfo.GetLog().InfoFormat("鸿坤建行收款通知内容:下账失败(订单支付信息有误)(PayData={0})", OrderInfo.PayData); Business.HKCCBPay.UpdateOrderInfo(PubConstant.UnifiedContionString, param["ORDERID"], DateNow.ToString(), SAmt, JsonConvert.SerializeObject(param), 2, "支付金额必须大于0"); return; } string CostID = (string)Data["CostID"]; decimal Amt = (Decimal)Data["Amt"]; if (PubInfo.RecePreFees(erpConnStr, out long ReceID, Convert.ToString(tb_Community.CommID), Convert.ToString(OrderInfo.CustID), Convert.ToString(OrderInfo.RoomID), CostID, Amt, "自助缴费-微信")) { PubInfo.GetLog().InfoFormat("鸿坤建行收款通知内容:下账成功(PayData={0})", OrderInfo.PayData); Business.HKCCBPay.UpdateOrderInfo(PubConstant.UnifiedContionString, param["ORDERID"], DateNow.ToString(), SAmt, JsonConvert.SerializeObject(param), 3, "下账成功"); return; } else { PubInfo.GetLog().InfoFormat("鸿坤建行收款通知内容:下账失败(订单支付信息有误)(PayData={0})", OrderInfo.PayData); Business.HKCCBPay.UpdateOrderInfo(PubConstant.UnifiedContionString, param["ORDERID"], DateNow.ToString(), SAmt, JsonConvert.SerializeObject(param), 4, "下账失败"); return; } }