/// <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(); }
/// <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); } }