private static bool VerifyExistTransferCallBack(string content) { bool exist = false; // 解析strXML为SendBuyMessage响应对象 SendPayMessage model = GetPayModelResponse(content); Hashtable htComm = GetCommonreturn(model.Commonreturn); string customerId = htComm["CustomerID"].ToString(); string userId = htComm["UserID"].ToString(); string seqNo = htComm["SeqNO"].ToString(); var loggingSessionInfo = Default.GetBSLoggingSession(customerId, userId); var resPayBll = new WXHouseReservationPayBLL(loggingSessionInfo); var resPayList = resPayBll.Query(new IWhereCondition[] { new EqualsCondition { DateTimeAccuracy = null, FieldName = "CustomerID", Value = customerId }, new EqualsCondition { DateTimeAccuracy = null, FieldName = "IsDelete", Value = "0" }, new EqualsCondition { DateTimeAccuracy = null, FieldName = "SeqNO", Value = seqNo } }, null); if (resPayList != null && resPayList.Length > 0) { exist = true; } return(exist); }
/// <summary> /// 解析Xml返回对象(支付回调) /// </summary> /// <returns></returns> public static SendPayMessage GetPayModelResponse(string pXmlString) { var send = new SendPayMessage(); //Xml解析 var doc = new XmlDocument(); doc.LoadXml(pXmlString); //取得节点名为order的集合 XmlNodeList xxList = doc.GetElementsByTagName("order"); //xxNode是每一个<CL>...</CL>体 foreach (XmlNode xxNode in xxList) { //取得CL下的子节点集合 XmlNodeList childList = xxNode.ChildNodes; foreach (XmlNode node in childList) { String temp = node.Name; switch (temp) { case "MerchantID": send.MerchantID = node.InnerText; break; case "Merchantdate": send.Merchantdate = node.InnerText; break; case "orderNO": send.orderNO = node.InnerText; break; case "Assignbuyer": send.Assignbuyer = node.InnerText; break; case "Assbuyername": send.Assbuyername = node.InnerText; break; case "Assbuyermobile": send.Assbuyermobile = node.InnerText; break; case "Assbuyeridtp": send.Assbuyeridtp = node.InnerText; break; case "Assbuyeridno": send.Assbuyeridno = node.InnerText; break; case "Logisticsinfo": send.Logisticsinfo = node.InnerText; break; case "Totalpay": send.Totalpay = node.InnerText; break; case "Totaldiscount": send.Totaldiscount = node.InnerText; break; case "Totaldeduction": send.Totaldeduction = node.InnerText; break; case "Actualtotal": send.Actualtotal = node.InnerText; break; case "Feetype": send.Feetype = node.InnerText; break; case "Fee": send.Fee = node.InnerText; break; case "Retcode": send.Retcode = node.InnerText; break; case "Retmsg": send.Retmsg = node.InnerText; break; case "Hatradedt": send.Hatradedt = node.InnerText; break; case "HaorderNO": send.HaorderNO = node.InnerText; break; case "Commonreturn": send.Commonreturn = node.InnerText; break; } } } return(send); }
/// <summary> /// 支付(过户)。 /// </summary> /// <returns></returns> public static void TransferCallBack(string content) { Loggers.DEFAULT.Debug(new DebugLogInfo { Message = "支付(过户)" }); // 解析strXML为SendBuyMessage响应对象 SendPayMessage model = GetPayModelResponse(content); Hashtable htComm = GetCommonreturn(model.Commonreturn); string customerId = htComm["CustomerID"].ToString(); string userId = htComm["UserID"].ToString(); string prePaymentId = htComm["PrePaymentID"].ToString(); string seqNo = htComm["SeqNO"].ToString(); string merchantdate = htComm["Merchantdate"].ToString(); string resultPageUrl = htComm["ToPageURL"].ToString(); Loggers.DEFAULT.Debug(new DebugLogInfo { Message = "ToPageUrl" + resultPageUrl }); var loggingSessionInfo = Default.GetBSLoggingSession(customerId, userId); int fundState; //交易状态 string retMsg; //判断华安赎回返回Retcode状态 if (model.Retcode == "0000") { fundState = (int)PayHouseStateEnum.Order; retMsg = "委托已受理"; } else { fundState = (int)PayHouseStateEnum.Unsold; retMsg = "委托失败"; } #region 更新订单表中的证件号码 var orderBll = new WXHouseOrderBLL(loggingSessionInfo); WXHouseOrderEntity orderEntity = orderBll.GetByID(prePaymentId); if (orderEntity != null) { orderEntity.Assbuyeridno = model.Assbuyeridno; } orderBll.Update(orderEntity); #endregion #region 增加支付记录 var redeemBll = new WXHouseReservationPayBLL(loggingSessionInfo); WXHouseReservationPayEntity entity = redeemBll.GetByPrePaymentID(customerId, prePaymentId); if (entity != null) { entity.FundState = fundState; entity.HaorderNO = model.HaorderNO; redeemBll.Update(entity); } else { entity = new WXHouseReservationPayEntity { ReservationPayID = Guid.NewGuid(), PrePaymentID = new Guid(prePaymentId), SeqNO = seqNo, Fundtype = (int)FundtypeeEnum.ReservationPay, FundState = fundState, Merchantdate = merchantdate, HaorderNO = model.HaorderNO }; int haDt; int.TryParse(model.Hatradedt, out haDt); entity.Hatradedt = haDt; entity.Retmsg = model.Retmsg; entity.Retcode = model.Retcode; entity.CustomerID = customerId; redeemBll.Create(entity); } #endregion string toPageUrl = resultPageUrl + "&type=3&retStatus=" + fundState + "&retMsg=" + retMsg + "&Retcode=" + model.Retcode; RedirectUrl(toPageUrl); }