Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        /// <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);
        }
Esempio n. 3
0
        /// <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);
        }