Beispiel #1
0
        private static bool VerifyExistBuyCallBack(string content)
        {
            bool exist = false;
            //解析strXML为SendBuyMessage响应对象
            SendBuyMessage model  = GetBuyModelResponse(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 fundBll            = new WXHouseBuyFundBLL(loggingSessionInfo);
            var fundList           = fundBll.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 (fundList != null && fundList.Length > 0)
            {
                exist = true;
            }
            return(exist);
        }
Beispiel #2
0
        /// <summary>
        /// 解析Xml返回对象(购买回调)
        /// </summary>
        /// <returns></returns>
        public static SendBuyMessage GetBuyModelResponse(string pXmlString)
        {
            var send = new SendBuyMessage();
            //Xml解析
            var doc = new XmlDocument();

            doc.LoadXml(pXmlString);
            XmlNodeList xxList = doc.GetElementsByTagName("order"); //取得节点名为order的集合

            foreach (XmlNode xxNode in xxList)                      //xxNode 是每一个<CL>...</CL>体
            {
                XmlNodeList childList = xxNode.ChildNodes;          //取得CL下的子节点集合
                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 "Orgtotalamt":
                        send.Orgtotalamt = 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 "Logisticsinfo":
                        send.Logisticsinfo = node.InnerText;
                        break;

                    case "Fee":
                        send.Fee = node.InnerText;
                        break;

                    case "Fundtype":
                        send.Fundtype = node.InnerText;
                        break;

                    case "Retcode":
                        send.Retcode = node.InnerText;
                        break;

                    case "Retmsg":
                        send.Retmsg = node.InnerText;
                        break;

                    case "Commonreturn":
                        send.Commonreturn = node.InnerText;
                        break;
                    }
                }
            }
            return(send);
        }
Beispiel #3
0
        /// <summary>
        /// 购买回调。
        /// </summary>
        /// <returns></returns>
        public static void BuyCallBack(string content)
        {
            Loggers.DEFAULT.Debug(new DebugLogInfo {
                Message = "BuyCallBack: " + DateTime.Now
            });

            //解析strXML为SendBuyMessage响应对象
            SendBuyMessage model  = GetBuyModelResponse(content);
            Hashtable      htComm = GetCommonreturn(model.Commonreturn);

            string customerId    = htComm["CustomerID"].ToString();
            string userId        = htComm["UserID"].ToString();
            string houseDetailId = htComm["HouseDetailID"].ToString();
            string seqNo         = htComm["SeqNO"].ToString();
            string merchantdate  = htComm["Merchantdate"].ToString();
            string houseId       = htComm["HouseID"].ToString();

            Loggers.DEFAULT.Debug(new DebugLogInfo {
                Message = "SeqNo: " + seqNo
            });

            string orgtotalamt        = model.Orgtotalamt; //实际交易额
            var    loggingSessionInfo = Default.GetBSLoggingSession(customerId, userId);

            //1判断会员楼盘明细映射是否存在记录
            var     bll       = new WXHouseVipMappingBLL(loggingSessionInfo);
            DataSet ds        = bll.VerifWXHouseVipMapping(userId, houseDetailId, customerId);
            Guid    mappingId = Guid.NewGuid();

            if (ds != null && ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0)
            {
                //1.1存在
                mappingId = new Guid(ds.Tables[0].Rows[0]["MappingID"].ToString());
            }
            else
            {
                //1.2不存在
                //插入会员楼盘明细映射表
                var houserVipMappingEntity = new WXHouseVipMappingEntity
                {
                    MappingID  = mappingId,
                    DetailID   = new Guid(houseDetailId),
                    CustomerID = customerId,
                    VIPID      = userId,
                    ReserveNo  = seqNo
                };
                houserVipMappingEntity.CustomerID = customerId;
                bll.Create(houserVipMappingEntity);
            }

            DateTime dt      = DateTime.Now;
            string   orderNo = GenerateOrderNo(dt);

            #region  1.4插入订单信息
            var  orderBll     = new WXHouseOrderBLL(loggingSessionInfo);
            var  orderEntity  = new WXHouseOrderEntity();
            Guid prePaymentId = Guid.NewGuid();  //订单表ID
            orderEntity.PrePaymentID = prePaymentId;
            orderEntity.MappingID    = mappingId;
            orderEntity.OrderNO      = orderNo;
            orderEntity.OrderDate    = Convert.ToDateTime(dt.ToString("yyyy-MM-dd HH:mm:ss"));
            orderEntity.RealPay      = Convert.ToDecimal(orgtotalamt); //实付金额
            var assignbuyerBll = new WXHouseAssignbuyerBLL(loggingSessionInfo);
            WXHouseAssignbuyerEntity buyerEntity = assignbuyerBll.GetWXHouseAssignbuyer(customerId, userId);
            if (buyerEntity != null)
            {
                orderEntity.AssignbuyerID = buyerEntity.AssignbuyerID;
            }
            orderEntity.ThirdOrderNo   = model.Logisticsinfo;
            orderEntity.Assbuyeridtp   = model.Assbuyeridtp;
            orderEntity.Assbuyername   = model.Assbuyername;
            orderEntity.Assbuyermobile = model.Assbuyermobile;

            orderEntity.CustomerID = customerId;
            orderBll.Create(orderEntity);
            #endregion


            #region  购买基金
            var fundBll    = new WXHouseBuyFundBLL(loggingSessionInfo);
            var fundEntity = new WXHouseBuyFundEntity
            {
                BuyFundID    = Guid.NewGuid(),
                PrePaymentID = prePaymentId,
                Fundtype     = 2101,
                PayDate      = dt.ToString("yyyy-MM-dd HH:mm:ss"),
                Merchantdate = merchantdate,
                SeqNO        = seqNo,
                Retmsg       = model.Retmsg,
                CustomerID   = customerId
            };

            Loggers.DEFAULT.Debug(new DebugLogInfo {
                Message = "Retcode" + model.Retcode
            });

            string retMsg;
            int    fundState;
            //判断华安赎回返回Retcode状态
            if (model.Retcode == "0000")
            {
                //2 更改楼盘表销售数量 HouseDetailID
                var buildBll = new WXHouseBuildBLL(loggingSessionInfo);
                WXHouseBuildEntity buildEntity = buildBll.GetByID(houseId);
                if (buildEntity != null)
                {
                    buildEntity.SaleHoseNum += 1;
                    buildBll.Update(buildEntity);
                }

                retMsg    = "支付成功";
                fundState = (int)FundStateEnum.Success;
            }
            else if (model.Retcode == "0999")
            {
                retMsg    = "委托已受理";
                fundState = (int)FundStateEnum.Order;
            }
            else
            {
                retMsg    = "支付失败";
                fundState = (int)FundStateEnum.Error;
            }

            fundEntity.Retcode   = model.Retcode;
            fundEntity.FundState = fundState;
            fundBll.Create(fundEntity);
            #endregion

            //页面跳转
            string toPageUrl = htComm["ToPageURL"] + "&type=1&retStatus=" + fundState + "&retMsg=" + retMsg + "&Retcode=" + model.Retcode;
            RedirectUrl(toPageUrl);
        }