/// <summary> /// 获取默认请求参数 /// </summary> /// <returns></returns> public static ParameterData GetDefaultParameter() { var data = new ParameterData(); data.SetValue("version", "2.0"); //接口版本号 data.SetValue("charset", "UTF-8"); //字符集 data.SetValue("sign_type", "MD5"); //签名方式 data.SetValue("mch_id", SwiftPassConfig.mch_id); //必填项,商户号,由平台分配 data.SetValue("mch_create_ip", System.Web.HttpContext.Current.Request.UserHostAddress); //终端IP data.SetValue("nonce_str", Guid.NewGuid().ToString().Replace("-", "")); //随机字符串,必填项,不长于 32 位 return(data); }
/// <summary> /// WAP在线支付 /// </summary> /// <param name="appId">业务系统ID</param> /// <param name="sign">签名</param> /// <param name="data">数据报文</param> /// <returns></returns> public ActionResult OnlineWapPay(string appId, string sign, string data) { try { var onlinePay = Builder.BuildOnlinePay(); //校验支付模式 if (onlinePay.CheckModeIsSimulate()) { return(RedirectToActionPermanent("OnlinePay", "Simulate", new { payType = (int)this._payType, appId = appId, sign = sign, data = data })); } //保存请求报文 var requestInfo = onlinePay.SaveRequest(appId, data, this._payType); //校验签名 var checkResult = onlinePay.CheckSign(appId, sign, data, requestInfo); if (checkResult.Status != ResultStatus.Success) { ViewBag.ErrorMsg = checkResult.Message; return(View()); } //校验支付环境 checkResult = onlinePay.CheckBrowserType(AppEnum.BrowserType.WeChat, requestInfo); if (checkResult.Status != ResultStatus.Success) { ViewBag.ErrorMsg = checkResult.Message; return(View()); } //解析支付请求 checkResult = onlinePay.ResolveRequest(data, requestInfo); if (checkResult.Status != ResultStatus.Success) { ViewBag.ErrorMsg = checkResult.Message; return(View()); } //校验支付参数 var checkResult2 = onlinePay.CheckParamaters(data, this._payType, requestInfo); if (checkResult2.Status != ResultStatus.Success) { ViewBag.ErrorMsg = checkResult2.Message; return(View()); } //跳转到微信授权系统 string redirect_uri = HttpUtility.UrlEncode(string.Format("http://{0}/SwiftPassWeChatPay/OnlineWapPayJSAPI?requestSysNo={1}", AppConfig.Global.Domain, requestInfo.SysNo)); var reqData = new ParameterData(); reqData.SetValue("appid", WxPayConfig.APPID); reqData.SetValue("redirect_uri", redirect_uri); reqData.SetValue("response_type", "code"); reqData.SetValue("scope", "snsapi_base"); reqData.SetValue("state", "STATE" + "#wechat_redirect"); string url = "https://open.weixin.qq.com/connect/oauth2/authorize?" + reqData.ToUrl(); return(Redirect(url)); } catch (Exception ex) { ViewBag.ErrorMsg = "系统执行时发生异常:" + ex.Message; string log = string.Format(@"WAP支付请求发生异常!{0}异常描述:{1}{0}异常堆栈:{2}{0}请求参数:appId={3} sign={4} data={5}", Environment.NewLine, ex.Message, ex.StackTrace, appId, sign, data); LogWriter.WriteLog(log, AppConfig.Global.SwiftPassWeChatPayLogFolder, ExceptionHelper.ExceptionLevel.Exception); } return(View()); }