Example #1
0
        /// <summary>
        /// 将订单的付款金额推送给XF系统进行资金结算
        /// </summary>
        /// <param name="pushType">推送类型</param>
        /// <param name="pushOrderSn">推送订单编号</param>
        /// <param name="pushOrderAmount">推送订单总金额</param>
        /// <param name="pushFeeAmount">推送订单运费金额</param>
        /// <param name="resPayInfo">返回的支付信息</param>
        /// <returns></returns>
        public static bool SeacherThisOrderTrade(string orderID, out string resPayInfo)
        {
            resPayInfo = string.Empty;
            DSMT_TAE_ServiceSoapClient taeCilent = new DSMT_TAE_ServiceSoapClient();
            GetQueryOrderStatusEntity  getQueryOrderStatusEntity  = new GetQueryOrderStatusEntity();
            BackQueryOrderStatusEntity backQueryOrderStatusEntity = new BackQueryOrderStatusEntity();
            VerifyHelper verifyHelper = new VerifyHelper();

            DB.Model.M_OrderInfo orderInfo   = new DB.BLL.MB_Bll(DBEnum.Slave).GetModel <DB.Model.M_OrderInfo>(" OrderID=@_OrderID ", new { _OrderID = orderID });
            DB.Model.M_Payment   payMentInfo = new DB.BLL.MB_Bll(DBEnum.Slave).GetModel <DB.Model.M_Payment>(" PayID=@_PayID ", new { _PayID = 20 });
            if (orderInfo != null && payMentInfo != null)
            {
                getQueryOrderStatusEntity.OpenID       = orderInfo.OpenID;
                getQueryOrderStatusEntity.OrderNo      = orderInfo.OrderSn;
                getQueryOrderStatusEntity.UnifyOrderNo = orderInfo.OrderUnifySn;
                getQueryOrderStatusEntity.OrderTime    = Convert.ToString(orderInfo.AddTime);
                string resMsg  = string.Empty;
                string orderSn = string.Empty;
                verifyHelper.EncryptPmtEntity(getQueryOrderStatusEntity);
                try
                {
                    backQueryOrderStatusEntity = taeCilent.QueryOrderStatus(getQueryOrderStatusEntity);//调xf接口
                    if (verifyHelper.CheckPmtSign(ref backQueryOrderStatusEntity))
                    {
                        /// 交易状态10-成功20-失败30-待同步40-交易信息不存在
                        if (backQueryOrderStatusEntity != null && !string.IsNullOrEmpty(backQueryOrderStatusEntity.TradeStatus) && !string.IsNullOrEmpty(backQueryOrderStatusEntity.TradeNo))//XF系统返回的数据不为空,并且状态信息不为空
                        {
                            if (backQueryOrderStatusEntity.TradeStatus == "10" || backQueryOrderStatusEntity.TradeStatus == "20" || backQueryOrderStatusEntity.TradeStatus == "30")
                            {
                                orderSn = (backQueryOrderStatusEntity.IsUnify == "0")? orderInfo.OrderSn:orderSn;
                                if (new DB.BLL.MB_Bll(DBEnum.Master).UpdateOrderInfoFromXFPayment(orderInfo.OrderUnifySn, orderSn, ToolHelper.ConventToDecimal(backQueryOrderStatusEntity.TradeMoney, 9999), backQueryOrderStatusEntity.TradeNo, ToolHelper.ConventToDateTime(backQueryOrderStatusEntity.TradeTime, DateTime.Now), payMentInfo, backQueryOrderStatusEntity.CpySysID, backQueryOrderStatusEntity.CpyName, out resMsg))
                                {
                                    //WeChatAPI.SendMsg("异常订单处理成功", "您有一笔异常订单已被成功处理,请关注最新的订单状态",orderInfo.OpenID);
                                    return(true);
                                }
                                else
                                {
                                    resPayInfo = resMsg;
                                }
                            }
                            else
                            {
                                resPayInfo = "交易信息不存在";
                            }
                        }
                        else
                        {
                            resPayInfo = "XF系统返回数据出错,请稍后再试";
                        }
                    }
                    else//验签失败
                    {
                        resPayInfo = "从XF系统返回的数据通讯错误,签名验证失败";
                    }
                }
                catch (Exception e)
                {
                    resPayInfo = "与XF系统的通讯出错,返回错误信息:" + e.Message;
                }
            }
            else
            {
                resPayInfo = "获取相应的数据出错";
            }
            return(false);
        }