Пример #1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void Page_Load(object sender, EventArgs e)
        {
            String writeString = "OK";

            if (IsPostBack)
            {
                Response.Write(writeString);
                Response.End();
                return;
            }

            ResponseHandler resHandler = new ResponseHandler(Context);

            FileLogUtils.Debug("PayNotify.aspx", resHandler.pairs.ToJsonString(), false);

            if (resHandler.pairs.Count == 0)
            {
                Response.Write(writeString);
                return;
            }

            NotifyResult requestParam = new NotifyResult();
            Result       sdkResult    = SDK.checkReturntParam(resHandler.pairs, ref requestParam);

            FileLogUtils.Info("PayNotify.aspx", sdkResult.ToJsonString());

            ApiLog log = new ApiLog();

            log.type    = 2;
            log.url     = "PayNotify.aspx";
            log.datas   = resHandler.pairs.ToJsonString();
            log.orderid = requestParam.out_trade_no;
            ApiLogUntils.AddLog(log);

            if (sdkResult.status != "1")
            {
                Response.Write(writeString);
                Response.End();
                return;
            }

            Recharge recharge = new Recharge();

            recharge.id          = requestParam.out_trade_no;
            recharge.pay_orderid = requestParam.trade_no;
            recharge.pay_money   = requestParam.resultMoney;
            if (recharge != null && !String.IsNullOrEmpty(recharge.id))
            {
                recharge.payStatus = 1;
                RechargeUtils.UpdateRechargeState(recharge);
            }
            Response.Write(writeString);
            Response.End();
        }
Пример #2
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="param"></param>
        /// <param name="sessionCode"></param>
        /// <returns></returns>
        public static Result checkReturntParam(Dictionary <string, string> pairs, ref NotifyResult requestParam)
        {
            Result result = new Result();

            try
            {
                requestParam = CommonUntils.DictionaryToClass <NotifyResult>(pairs);
                if (requestParam == null)
                {
                    result.message = "数据解析异常.";
                    return(result);
                }
                result.data = requestParam.ToJsonString();

                if (String.IsNullOrEmpty(requestParam.pid) ||
                    String.IsNullOrEmpty(requestParam.trade_no) ||
                    String.IsNullOrEmpty(requestParam.out_trade_no) ||
                    String.IsNullOrEmpty(requestParam.money) ||
                    String.IsNullOrEmpty(requestParam.sign))
                {
                    result.message = "数据解析异常.";
                    return(result);
                }

                if (requestParam.pid.ToUpper() != ConfigUtils.pid.ToUpper())
                {
                    result.message = "商户号不匹配.";
                    return(result);
                }
                if (requestParam.trade_status.ToUpper() != "TRADE_SUCCESS")
                {
                    result.status  = "failed";
                    result.message = "支付失败.";
                    return(result);
                }

                double doubleMoney = 0;
                if (!double.TryParse(requestParam.money, out doubleMoney))
                {
                    result.status  = "failed";
                    result.message = "支付金额出现异常,请稍候再试.";
                    return(result);
                }
                if (doubleMoney <= 0)
                {
                    result.status  = "failed";
                    result.message = "支付金额出现异常,请稍候再试.";
                    return(result);
                }
                requestParam.resultMoney = doubleMoney;

                SortedDictionary <string, string> dicMap = new SortedDictionary <string, string>();
                dicMap.Add("pid", requestParam.pid);
                dicMap.Add("trade_no", requestParam.trade_no);
                dicMap.Add("out_trade_no", requestParam.out_trade_no);
                dicMap.Add("type", requestParam.type);
                dicMap.Add("name", requestParam.name);
                dicMap.Add("money", requestParam.money);
                dicMap.Add("trade_status", requestParam.trade_status);

                Boolean flag = CommonUntils.verifySign(dicMap, requestParam.sign);
                if (!flag)
                {
                    result.message = "身份校验异常.";
                    return(result);
                }

                result.status  = "1";
                result.message = "";
                return(result);
            }
            catch (Exception ex)
            {
                FileLogUtils.Error("getPostParam", ex.StackTrace);
                result.status  = "failed";
                result.message = "服务器出现异常,请稍候再试.";
                return(result);
            }
        }