public override void SendRequest() { Configuration.GatewayProvider provider = Configuration.PayConfiguration.GetConfig().Providers["bank"] as Configuration.GatewayProvider; if (provider != null) { this.RedirectToGateway(string.Format(CultureInfo.InvariantCulture, provider.Attributes["urlFormat"], new object[] { this.orderId, this.getGateway.Data })); } }
public override void SendRequest() { string action = HttpContext.Current.Request.QueryString["action"]; if (string.IsNullOrWhiteSpace(action)) { action = "show"; //HttpContext.Current.Response.Write("NO ACTION"); //HttpContext.Current.Response.End(); //return; } action = action.ToLower(); Utils.WxPayHelper wxPayHelper = new Utils.WxPayHelper(); //先设置基本信息 wxPayHelper.SetAppId(this.appid); wxPayHelper.SetAppKey(this.key2); wxPayHelper.SetPartnerKey(this.key); wxPayHelper.SetSignType("SHA1"); //设置请求package信息 wxPayHelper.SetParameter("bank_type", bank_type); wxPayHelper.SetParameter("body", body); //商品描述 wxPayHelper.SetParameter("partner", partner); //partner 商户号 wxPayHelper.SetParameter("out_trade_no", out_trade_no); //商家订单号 wxPayHelper.SetParameter("total_fee", total_fee); //商品金额,以分为单位 wxPayHelper.SetParameter("fee_type", fee_type); //币种,1人民币 wxPayHelper.SetParameter("notify_url", notify_url); wxPayHelper.SetParameter("spbill_create_ip", spbill_create_ip); //用户的公网ip,不是商户服务器IP wxPayHelper.SetParameter("input_charset", input_charset); //System.Console.Out.WriteLine("生成app支付package:"); //System.Console.Out.WriteLine(wxPayHelper.CreateAppPackage("test")); //System.Console.Out.WriteLine("生成jsapi支付package:"); //string jsApiPackage = wxPayHelper.CreateBizPackage(); //System.Console.Out.WriteLine(jsApiPackage); //System.Console.Out.WriteLine("生成原生支付url:"); //System.Console.Out.WriteLine(wxPayHelper.CreateNativeUrl("abc")); //System.Console.Out.WriteLine("生成原生支付package:"); //System.Console.Out.WriteLine(wxPayHelper.CreateNativePackage("0", "ok")); //DONE: 输出JS进行网关交互 string result; switch (action) { case "show": Configuration.GatewayProvider provider = Configuration.PayConfiguration.GetConfig().Providers["wechat"] as Configuration.GatewayProvider; if (provider != null) { this.RedirectToGateway(string.Format(CultureInfo.InvariantCulture, HttpContext.Current.Server.HtmlDecode(provider.Attributes["urlFormat"]), this.out_trade_no, this.getGateway.Data)); return; } result = "{\"STATUS\":\"ERROR\",\"DATA\":\"GATEWAY PROVIDER NOT FOND\"}"; break; case "bizpackage": result = "{\"STATUS\":\"SUCCESS\",\"DATA\":" + wxPayHelper.CreateBizPackage() + "}"; break; default: result = "{\"STATUS\":\"ERROR\",\"DATA\":\"NotImplemented\"}"; break; } HttpContext.Current.Response.Clear(); HttpContext.Current.Response.Write(result); }
public override void SendRequest() { string action = HttpContext.Current.Request.QueryString["action"]; if (string.IsNullOrWhiteSpace(action)) { action = "show"; //HttpContext.Current.Response.Write("NO ACTION"); //HttpContext.Current.Response.End(); //return; } action = action.ToLower(); //Utils.WxPayHelper wxPayHelper = new Utils.WxPayHelper(); ////先设置基本信息 //wxPayHelper.SetAppId(this.appid); //wxPayHelper.SetAppKey(this.key2); //wxPayHelper.SetPartnerKey(this.key); //wxPayHelper.SetSignType("SHA1"); ////设置请求package信息 //wxPayHelper.SetParameter("bank_type", bank_type); //wxPayHelper.SetParameter("body", body); //商品描述 //wxPayHelper.SetParameter("partner", partner); //partner 商户号 //wxPayHelper.SetParameter("out_trade_no", out_trade_no); //商家订单号 //wxPayHelper.SetParameter("total_fee", total_fee); //商品金额,以分为单位 //wxPayHelper.SetParameter("fee_type", fee_type); //币种,1人民币 //wxPayHelper.SetParameter("notify_url", notify_url); //wxPayHelper.SetParameter("spbill_create_ip", spbill_create_ip);//用户的公网ip,不是商户服务器IP //wxPayHelper.SetParameter("input_charset", input_charset); //System.Console.Out.WriteLine("生成app支付package:"); //System.Console.Out.WriteLine(wxPayHelper.CreateAppPackage("test")); //System.Console.Out.WriteLine("生成jsapi支付package:"); //string jsApiPackage = wxPayHelper.CreateBizPackage(); //System.Console.Out.WriteLine(jsApiPackage); //System.Console.Out.WriteLine("生成原生支付url:"); //System.Console.Out.WriteLine(wxPayHelper.CreateNativeUrl("abc")); //System.Console.Out.WriteLine("生成原生支付package:"); //System.Console.Out.WriteLine(wxPayHelper.CreateNativePackage("0", "ok")); //DONE: 输出JS进行网关交互 string resultJson; switch (action) { case "show": Configuration.GatewayProvider provider = Configuration.PayConfiguration.GetConfig().Providers["wechat_v3"] as Configuration.GatewayProvider; if (provider == null) { resultJson = "{\"STATUS\":\"ERROR\",\"DATA\":\"GATEWAY PROVIDER NOT FOND\"}"; break; } //prepayid 只有第一次支付时生成,如果需要再次支付,必须拿之前生成的prepayid。 //也就是说一个orderNo 只能对应一个prepayid string prepayid = string.Empty; #region 之前生成过 prepayid,此处可略过 //创建Model UnifiedWxPayModel model = UnifiedWxPayModel.CreateUnifiedModel(this.appid, this.partner, this.key); UnifiedPrePayMessage result = UnifiedPrePay(model, TradeType.JSAPI); //预支付订单 prepayid = result.Prepay_Id; #endregion //JSAPI 支付参数的Model PayModel payModel = new PayModel() { AppId = model.AppId, Package = string.Format("prepay_id={0}", prepayid), Timestamp = ((DateTime.Now.ToUniversalTime().Ticks - 621355968000000000) / 10000000).ToString(), Noncestr = CommonUtil.CreateNoncestr() }; Dictionary <string, string> nativeObj = new Dictionary <string, string>(); nativeObj.Add("appId", payModel.AppId); nativeObj.Add("package", payModel.Package); nativeObj.Add("timeStamp", payModel.Timestamp); nativeObj.Add("nonceStr", payModel.Noncestr); nativeObj.Add("signType", payModel.SignType); payModel.PaySign = model.GetCftPackage(nativeObj); //生成JSAPI 支付签名 nativeObj.Add("paySign", payModel.PaySign); var entries = nativeObj.Select(d => string.Format("\"{0}\":\"{1}\"", d.Key, d.Value)); string data = "{" + string.Join(",", entries.ToArray()) + "}"; resultJson = "{\"STATUS\":\"SUCCESS\",\"DATA\":" + data + "}"; this.RedirectToGateway(string.Format(CultureInfo.InvariantCulture, HttpContext.Current.Server.HtmlDecode(provider.Attributes["urlFormat"]), this.out_trade_no, this.gatewayInfo.Data, resultJson)); return; case "app": Configuration.GatewayProvider providerApp = Configuration.PayConfiguration.GetConfig().Providers["wechat_v3"] as Configuration.GatewayProvider; if (providerApp == null) { resultJson = "{\"STATUS\":\"ERROR\",\"DATA\":\"GATEWAY PROVIDER NOT FOND\"}"; break; } //prepayid 只有第一次支付时生成,如果需要再次支付,必须拿之前生成的prepayid。 //也就是说一个orderNo 只能对应一个prepayid string prepayidApp = string.Empty; #region 之前生成过 prepayid,此处可略过 //创建Model UnifiedWxPayModel modelApp = UnifiedWxPayModel.CreateUnifiedModel(this.appid, this.partner, this.key); UnifiedPrePayMessage resultApp = UnifiedPrePay(modelApp, TradeType.APP); //预支付订单 prepayidApp = resultApp.Prepay_Id; #endregion //APP 支付参数的Model PayModel payModelApp = new PayModel() { AppId = modelApp.AppId }; Dictionary <string, string> nativeObjApp = new Dictionary <string, string>(); nativeObjApp.Add("appid", modelApp.AppId); nativeObjApp.Add("partnerid", this.partner); nativeObjApp.Add("prepayid", prepayidApp); nativeObjApp.Add("package", "Sign=WXPay"); nativeObjApp.Add("noncestr", CommonUtil.CreateNoncestr()); nativeObjApp.Add("timestamp", ((DateTime.Now.ToUniversalTime().Ticks - 621355968000000000) / 10000000).ToString()); payModelApp.PaySign = modelApp.GetCftPackage(nativeObjApp); //生成APP 支付签名 nativeObjApp.Add("sign", payModelApp.PaySign); var entriesApp = nativeObjApp.Select(d => string.Format("\"{0}\":\"{1}\"", d.Key, d.Value)); string dataApp = "{" + string.Join(",", entriesApp.ToArray()) + "}"; resultJson = "{\"STATUS\":\"SUCCESS\",\"DATA\":" + dataApp + "}"; this.RedirectToGateway(string.Format(CultureInfo.InvariantCulture, HttpContext.Current.Server.HtmlDecode(providerApp.Attributes["urlFormat"]), this.out_trade_no, this.gatewayInfo.Data, resultJson)); return; case "bizpackage": resultJson = "{\"STATUS\":\"ERROR\",\"DATA\":\"NotImplemented\"}"; break; case "qr": Configuration.GatewayProvider providerQR = Configuration.PayConfiguration.GetConfig().Providers["wechat_v3"] as Configuration.GatewayProvider; if (providerQR == null) { resultJson = "{\"STATUS\":\"ERROR\",\"DATA\":\"GATEWAY PROVIDER NOT FOND\"}"; break; } #region 生成统一支付 //创建Model UnifiedWxPayModel modelQR = UnifiedWxPayModel.CreateUnifiedModel(this.appid, this.partner, this.key); UnifiedPrePayMessage resultQR = UnifiedPrePay(modelQR, TradeType.NATIVE); //返回二维码支付URL resultJson = "{\"STATUS\":\"SUCCESS\",\"DATA\":\"" + resultQR.Code_Url + "\",\"Result_Code\":\"" + resultQR.Result_Code + "\"}"; #endregion break; default: resultJson = "{\"STATUS\":\"ERROR\",\"DATA\":\"NotImplemented\"}"; break; } HttpContext.Current.Response.Clear(); HttpContext.Current.Response.ContentType = "application/json"; HttpContext.Current.Response.Write(resultJson); }