protected void Page_Load(object sender, EventArgs e) { string sp_billno = Request["order_no"]; //当前时间 yyyyMMdd string date = DateTime.Now.ToString("yyyyMMdd"); if (null == sp_billno) { //生成订单10位序列号,此处用时间和随机数生成,商户根据自己调整,保证唯一 sp_billno = DateTime.Now.ToString("HHmmss") + TenPayUtil.BuildRandomStr(4); } else { sp_billno = Request["order_no"].ToString(); } sp_billno = TenPayInfo.PartnerId + sp_billno; //创建支付应答对象 RequestHandler packageReqHandler = new RequestHandler(Context); //初始化 packageReqHandler.Init(); //设置package订单参数 packageReqHandler.SetParameter("partner", TenPayInfo.PartnerId); //商户号 packageReqHandler.SetParameter("fee_type", "1"); //币种,1人民币 packageReqHandler.SetParameter("input_charset", "GBK"); packageReqHandler.SetParameter("out_trade_no", sp_billno); //商家订单号 packageReqHandler.SetParameter("total_fee", "1"); //商品金额,以分为单位(money * 100).ToString() packageReqHandler.SetParameter("notify_url", TenPayInfo.TenPayNotify); //接收财付通通知的URL packageReqHandler.SetParameter("body", "JSAPIdemo"); //商品描述 packageReqHandler.SetParameter("spbill_create_ip", Page.Request.UserHostAddress); //用户的公网ip,不是商户服务器IP //获取package包 packageValue = packageReqHandler.GetRequestURL(); //调起微信支付签名 timeStamp = TenPayUtil.GetTimestamp(); nonceStr = TenPayUtil.GetNoncestr(); //设置支付参数 RequestHandler paySignReqHandler = new RequestHandler(Context); paySignReqHandler.SetParameter("appid", appId); paySignReqHandler.SetParameter("appkey", TenPayInfo.AppKey); paySignReqHandler.SetParameter("noncestr", nonceStr); paySignReqHandler.SetParameter("timestamp", timeStamp); paySignReqHandler.SetParameter("package", packageValue); paySign = paySignReqHandler.CreateSHA1Sign(); //获取debug信息,建议把请求和debug信息写入日志,方便定位问题 //string pakcageDebuginfo = packageReqHandler.getDebugInfo(); //Response.Write("<br/>pakcageDebuginfo:" + pakcageDebuginfo + "<br/>"); //string paySignDebuginfo = paySignReqHandler.getDebugInfo(); //Response.Write("<br/>paySignDebuginfo:" + paySignDebuginfo + "<br/>"); }
/// <summary> /// 获取微信支付必要的参数 /// </summary> /// <param name="prepayId">微信预支付订单号</param> /// <param name="timeStamp">时间戳</param> /// <param name="nonceStr">随机数</param> /// <returns></returns> public TenPayV3_JsApi TenPayV3Info(string prepayId, string timeStamp = null, string nonceStr = null) { string paySign = ""; nonceStr = string.IsNullOrEmpty(nonceStr) ? TenPayUtil.GetNoncestr() : nonceStr; timeStamp = string.IsNullOrEmpty(timeStamp) ? TenPayUtil.GetTimestamp() : timeStamp; //设置支付参数 RequestHandler paySignReqHandler = new RequestHandler(null); paySignReqHandler.SetParameter("appId", AppId); paySignReqHandler.SetParameter("nonceStr", nonceStr); paySignReqHandler.SetParameter("package", string.Format("prepay_id={0}", prepayId)); paySignReqHandler.SetParameter("signType", "MD5"); paySignReqHandler.SetParameter("timeStamp", timeStamp); paySign = paySignReqHandler.CreateMd5Sign("key", Key); TenPayV3_JsApi tenPayV3JsApi = new TenPayV3_JsApi() { AppId = AppId, NonceStr = nonceStr, TimeStamp = timeStamp, Package = string.Format("prepay_id={0}", prepayId), PaySign = paySign }; return(tenPayV3JsApi); }
public string GetRequestUrl(string returnUrl, string notifyUrl, string orderId, decimal totalFee, string productInfo, string openId = null) { string timeStamp = ""; string nonceStr = ""; string paySign = ""; string sp_billno = orderId; //当前时间 yyyyMMdd string date = DateTime.Now.ToString("yyyyMMdd"); //创建支付应答对象 RequestHandler packageReqHandler = new RequestHandler(); //初始化 packageReqHandler.Init(); //packageReqHandler.SetKey(""/*TenPayV3Info.Key*/); timeStamp = TenPayUtil.GetTimestamp(); nonceStr = TenPayUtil.GetNoncestr(); Config config = Utility <Config> .GetConfig(WorkDirectory); //设置package订单参数 packageReqHandler.SetParameter("appid", config.AppId); //公众账号ID packageReqHandler.SetParameter("mch_id", config.MCHID); //商户号 packageReqHandler.SetParameter("nonce_str", nonceStr); //随机字符串 packageReqHandler.SetParameter("body", productInfo); packageReqHandler.SetParameter("out_trade_no", sp_billno); //商家订单号 packageReqHandler.SetParameter("total_fee", ((int)(totalFee * 100)).ToString()); //商品金额,以分为单位(money * 100).ToString() packageReqHandler.SetParameter("spbill_create_ip", _httpContextAccessor.HttpContext.Features.Get <IHttpConnectionFeature>().RemoteIpAddress.ToString()); //用户的公网ip,不是商户服务器IP packageReqHandler.SetParameter("notify_url", notifyUrl); //接收财付通通知的URL string strScene = "{ 'h5_info': { 'type':'Wap','wap_url': '" + _httpContextAccessor.HttpContext.Request.Scheme + "://" + _httpContextAccessor.HttpContext.Request.Host.ToString() + " ','wap_name': '" + _httpContextAccessor.HttpContext.Request.Host.ToString() + " '}"; packageReqHandler.SetParameter("trade_type", "MWEB"); //交易类型 packageReqHandler.SetParameter("scene_info", strScene); string sign = packageReqHandler.CreateMd5Sign("key", config.Key); packageReqHandler.SetParameter("sign", sign); //签名 string data = packageReqHandler.ParseXML(); //Core.Log.Debug("data=" + data); var result = TenPayV3.Unifiedorder(data); //Core.Log.Debug("result=" + result); var res = XDocument.Parse(result); if (res.Element("xml").Element("mweb_url") == null) { throw new Exception(res.ToString().HtmlEncode()); } string mwebUrl = res.Element("xml").Element("mweb_url").Value; mwebUrl = mwebUrl + "&redirect_url=" + _httpContextAccessor.HttpContext.Request.Scheme + "://" + _httpContextAccessor.HttpContext.Request.Host.ToString() + "/userorder"; return(mwebUrl); }
public async Task <ObjectResultModule> WXJSTicket([FromBody] TencentTicletModel input) { if (!Commons.CheckSecret(input.Secret)) { this.ObjectResultModule.StatusCode = 422; this.ObjectResultModule.Message = "Wrong Secret"; this.ObjectResultModule.Object = ""; return(this.ObjectResultModule); } #region 获取微信系统参数 //SystemConfigsIn systemConfigsIn = new SystemConfigsIn(); //systemConfigsIn.AndAlso(t => !t.IsDelete && t.SystemType == "TencentWechar"); //var configs = await _systemConfigsService.SystemConfigsList(systemConfigsIn); //var tencentparam = configs.FirstOrDefault(); //TencentWeCharEntity tencentWeCharEntity = new TencentWeCharEntity(); //tencentWeCharEntity.grant_type = "authorization_code"; //tencentWeCharEntity.appid = tencentparam.AppID; //tencentWeCharEntity.secret = tencentparam.AppSecret; // SystemToken systemToken = new SystemToken(); // systemToken.TokenType = "Wechar"; var Tokens = await _systemTokenService.SystemTokenList("Wechar"); #endregion SystemTokenIn Token = new SystemTokenIn(); Token.access_token = Tokens.access_token; Token.Appid = Tokens.Appid; Token.AppSecret = Tokens.AppSecret; Token.YaeherPlatform = Tokens.YaeherPlatform; var JSTicketTokens = await _systemTokenService.JSWecharTokenList("JSWechar", Token); //var result = await tencentoken.TencentTicket("jsapi",Tokens.access_token); var nonce_str = TenPayUtil.GetNoncestr(); string timeStamp = TenPayUtil.GetTimestamp(); var requestHandler2 = new RequestHandler(null); requestHandler2.SetParameter("noncestr", nonce_str); requestHandler2.SetParameter("jsapi_ticket", JSTicketTokens.access_token); requestHandler2.SetParameter("timestamp", timeStamp); requestHandler2.SetParameter("url", input.url); ////SHA1加密签名 var sha1Sign = requestHandler2.CreateSHA1Sign(); TencentTicletResponseModel model = new TencentTicletResponseModel(); model.appId = Tokens.Appid; model.nonceStr = nonce_str; model.signature = sha1Sign; model.timestamp = timeStamp; return(new ObjectResultModule(model, 200, "success")); }
public ActionResult Native() { string sp_billno = Request["order_no"]; //当前时间 yyyyMMdd string date = DateTime.Now.ToString("yyyyMMdd"); if (null == sp_billno) { //生成订单10位序列号,此处用时间和随机数生成,商户根据自己调整,保证唯一 sp_billno = DateTime.Now.ToString("HHmmss") + TenPayUtil.BuildRandomStr(4); } else { sp_billno = Request["order_no"].ToString(); } sp_billno = TenPayInfo.PartnerId + sp_billno; RequestHandler outParams = new RequestHandler(null); outParams.Init(); string productid = sp_billno; string timeStamp = TenPayUtil.GetTimestamp(); string nonceStr = TenPayUtil.GetNoncestr(); RequestHandler Params = new RequestHandler(null); Params.SetParameter("appid", TenPayInfo.AppId); Params.SetParameter("appkey", TenPayInfo.AppKey); Params.SetParameter("noncestr", nonceStr); Params.SetParameter("timestamp", timeStamp); Params.SetParameter("productid", productid); string sign = Params.CreateSHA1Sign(); Params.SetParameter("sign", sign); var parm = TenPay.NativePay(TenPayInfo.AppId, timeStamp, nonceStr, productid, sign); parm = QRCode.QRfromGoogle(parm); ViewData["parm"] = parm; return(View()); }
protected void Page_Load(object sender, EventArgs e) { string sp_billno = Request["order_no"]; //当前时间 yyyyMMdd string date = DateTime.Now.ToString("yyyyMMdd"); if (null == sp_billno) { //生成订单10位序列号,此处用时间和随机数生成,商户根据自己调整,保证唯一 sp_billno = DateTime.Now.ToString("HHmmss") + TenPayUtil.BuildRandomStr(4); } else { sp_billno = Request["order_no"].ToString(); } sp_billno = TenPayInfo.PartnerId + sp_billno; RequestHandler outParams = new RequestHandler(Context); outParams.Init(); string productid = sp_billno; string timeStamp = TenPayUtil.GetTimestamp(); string nonceStr = TenPayUtil.GetNoncestr(); RequestHandler Params = new RequestHandler(Context); Params.SetParameter("appid", TenPayInfo.AppId); Params.SetParameter("appkey", TenPayInfo.AppKey); Params.SetParameter("noncestr", nonceStr); Params.SetParameter("timestamp", timeStamp); Params.SetParameter("productid", productid); string sign = Params.CreateSHA1Sign(); Params.SetParameter("sign", sign); parm = "weixin://wxpay/bizpayurl?sign=" + sign + "&appid=" + TenPayInfo.AppId + "&productid=" + productid + "&timeStamp=" + timeStamp + "&nonceStr=" + nonceStr; parm = QRfromGoogle(parm); }
public ActionResult Delivernotify() { string timeStamp = ""; string appSignature = ""; //string appId, string openId, string transId, string out_Trade_No, string deliver_TimesTamp, string deliver_Status, string deliver_Msg, string app_Signature, string sp_billno = Request["order_no"]; //当前时间 yyyyMMdd string date = DateTime.Now.ToString("yyyyMMdd"); if (null == sp_billno) { //生成订单10位序列号,此处用时间和随机数生成,商户根据自己调整,保证唯一 sp_billno = DateTime.Now.ToString("HHmmss") + TenPayUtil.BuildRandomStr(4); } else { sp_billno = Request["order_no"].ToString(); } sp_billno = TenPayInfo.PartnerId + sp_billno; //调起微信支付签名 timeStamp = TenPayUtil.GetTimestamp(); //设置支付参数 RequestHandler paySignReqHandler = new RequestHandler(null); paySignReqHandler.SetParameter("appid", TenPayInfo.AppId); paySignReqHandler.SetParameter("openId", TenPayInfo.AppKey); paySignReqHandler.SetParameter("transId", "111112222233333"); paySignReqHandler.SetParameter("deliver_TimesTamp", timeStamp); paySignReqHandler.SetParameter("out_Trade_No", sp_billno); paySignReqHandler.SetParameter("deliver_Status", "1"); paySignReqHandler.SetParameter("deliver_Msg", "ok"); appSignature = paySignReqHandler.CreateSHA1Sign(); var result = TenPay.Delivernotify(TenPayInfo.AppId, "oX99MDgNcgwnz3zFN3DNmo8uwa-w", "111112222233333", sp_billno, timeStamp, "1", "ok", appSignature, "sha1"); ViewData["message"] = result.errcode; return(View()); }
public ActionResult Index(string Id) { timeStamp = TenPayUtil.GetTimestamp(); nonceStr = TenPayUtil.GetNoncestr(); //晓峰测试号 appID 和 Scret appid=wx0bcc58e7cb182a1f&secret=6bca2d2e1e4a0892b462590aec81716f //获取全局Access_takenJSON 有效期7200秒,开发者必须在自己的服务全局缓存access_token string Access_takenJSON = packageReqHandler.RequestGet("https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=xx&secret=xxxx"); strAccess_taken = packageReqHandler.GetJsonValue(Access_takenJSON, "access_token"); //获取jsapi_ticket,有效期7200秒,开发者必须在自己的服务全局缓存jsapi_ticket string jsapi_ticketJSON = packageReqHandler.RequestGet(string.Format("https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token={0}&type=jsapi", strAccess_taken)); strjsapi_ticket = packageReqHandler.GetJsonValue(jsapi_ticketJSON, "ticket"); //设置签名参数 RequestHandler paySignReqHandler = new RequestHandler(null); paySignReqHandler.SetParameter("jsapi_ticket", strjsapi_ticket); paySignReqHandler.SetParameter("nonceStr", nonceStr); paySignReqHandler.SetParameter("timeStamp", timeStamp); paySignReqHandler.SetParameter("url", Request.Url.AbsoluteUri); signature = paySignReqHandler.CreateSHA1Sign(); ViewBag.TimeStamp = timeStamp; ViewBag.NonceStr = nonceStr; ViewBag.Signature = signature; //ViewBag.JSTickets = strjsapi_ticket; //ViewBag.URLS = Request.Url.AbsoluteUri; Contents pic = contentsBll.GetContentsById(int.Parse(Id)); return(View(pic)); }
public ActionResult SharedAddress() { var accessToken = AccessTokenContainer.TryGetAccessToken(TenPayInfo.AppId, "49b71198b776e18521659a32a97501a6"); string timeStamp = TenPayUtil.GetTimestamp(); string nonceStr = TenPayUtil.GetNoncestr(); RequestHandler paySignReqHandler = new RequestHandler(null); paySignReqHandler.SetParameter("accessToken", accessToken); paySignReqHandler.SetParameter("appid", TenPayInfo.AppId); paySignReqHandler.SetParameter("nonceStr", nonceStr); paySignReqHandler.SetParameter("timeStamp", timeStamp); paySignReqHandler.SetParameter("url", TenPayInfo.TenPayNotify); var addrSign = paySignReqHandler.CreateSHA1Sign(); ViewData["appId"] = TenPayInfo.AppId; ViewData["addrSign"] = addrSign; ViewData["timeStamp"] = timeStamp; ViewData["nonceStr"] = nonceStr; return(View()); }
public ActionResult Index() { string _code = Request.QueryString["code"]; //微信授权(如需授权,可开通) //weChatOauth(_code); //this.oAuthAccessTokenResult = OAuth.GetAccessToken("AppId", "AppSecret", _code); //this.oAuthAccessTokenResult = OAuth.RefreshToken("AppId", this.oAuthAccessTokenResult.refresh_token); //this.openid = this.oAuthAccessTokenResult.openid; //this.accessToken = this.oAuthAccessTokenResult.access_token; string timeStamp = TenPayUtil.GetTimestamp(); string nonceStr = TenPayUtil.GetNoncestr(); string paySign = ""; string sp_billno = Request["order_no"]; string openid = this.openid; //附加数据 string attach = sp_billno; //当前时间 yyyyMMdd string date = DateTime.Now.ToString("yyyyMMdd"); if (null == sp_billno) { //生成订单10位序列号,此处用时间和随机数生成,商户根据自己调整,保证唯一 sp_billno = DateTime.Now.ToString("HHmmss") + TenPayUtil.BuildRandomStr(28); } else { sp_billno = Request["order_no"].ToString(); } //创建支付应答对象 RequestHandler packageReqHandler = new RequestHandler(null); //初始化 //packageReqHandler.Init(); //packageReqHandler.SetKey(TenPayInfo.Key); //设置package订单参数 packageReqHandler.SetParameter("appid", TenPayInfo.AppId); //公众账号ID packageReqHandler.SetParameter("body", "test"); packageReqHandler.SetParameter("mch_id", TenPayInfo.Mchid); //商户号 packageReqHandler.SetParameter("nonce_str", nonceStr.ToLower()); //随机字符串 packageReqHandler.SetParameter("notify_url", TenPayInfo.TenPayNotify); //接收财付通通知的URL packageReqHandler.SetParameter("openid", openid); //openid packageReqHandler.SetParameter("out_trade_no", sp_billno); //商家订单号 packageReqHandler.SetParameter("spbill_create_ip", Request.UserHostAddress); //用户的公网ip,不是商户服务器IP packageReqHandler.SetParameter("total_fee", "1"); //商品金额,以分为单位(money * 100).ToString() packageReqHandler.SetParameter("trade_type", "JSAPI"); //交易类型 //获取package包 string sign = packageReqHandler.CreateMd5Sign("key", TenPayInfo.Key); packageReqHandler.SetParameter("sign", sign); //交易类型 string data = packageReqHandler.ParseXML(); var result = TenPayV3.Unifiedorder(data); var res = XDocument.Parse(result); string prepayId = ""; try { if (res.Element("xml").Element("return_code").Value == "SUCCESS") { prepayId = res.Element("xml").Element("prepay_id").Value; } } catch (Exception ex) { return(View()); } string package = string.Format("prepay_id={0}", prepayId); timeStamp = TenPayUtil.GetTimestamp(); //设置支付参数 RequestHandler paySignReqHandler = new RequestHandler(null); paySignReqHandler.SetParameter("appId", TenPayInfo.AppId); paySignReqHandler.SetParameter("timeStamp", timeStamp); paySignReqHandler.SetParameter("nonceStr", nonceStr); paySignReqHandler.SetParameter("package", package); paySignReqHandler.SetParameter("signType", "MD5"); paySign = paySignReqHandler.CreateMd5Sign("key", TenPayInfo.Key); ViewData["appId"] = TenPayInfo.AppId; ViewData["timeStamp"] = timeStamp; ViewData["nonceStr"] = nonceStr; ViewData["package"] = package; ViewData["paySign"] = paySign; return(View()); }
public ActionResult JsPay(string code, string state) { try { Logger.LogDebug("进来啦"); var openIdResult = OAuthApi.GetAccessToken(this.weChatOptions.AppId, this.weChatOptions.AppSecret, code); if (openIdResult.errcode != Senparc.Weixin.ReturnCode.请求成功) { throw new Exception($"微信支付申请失败,Erro:{openIdResult.errmsg}"); } Logger.LogDebug("获取AccessToken成功"); if (this.memoryCache.TryGetValue <WeChatPayRequest>(state, out WeChatPayRequest request)) { Logger.LogDebug(Newtonsoft.Json.JsonConvert.SerializeObject(request)); } else { Logger.LogDebug($"未找到对应的付款请求,state:{state}"); } var array = state.Split('|'); var bcTradeNo = array[0]; var money = decimal.Parse(array[1]); var SuccessUrl = array[2].ToString(); //成功跳转地址 var FailedUrl = array[3].ToString(); //失败跳转地址 var notifyUrl = "https://bcl.baocailang.com:8995/api/Payment/WeChatPayNotify"; //回调地址 var nonceStr = TenPayUtil.GetNoncestr(); var timeStamp = TenPayUtil.GetTimestamp(); string billBody = "商城--订单支付"; var xmlDataInfo = new TenPayV3UnifiedorderRequestData( this.weChatOptions.AppId, this.weChatOptions.MchId, billBody, request.PaymentId, (int)(request.TotalFee * 100), "192.168.2.1", notifyUrl, Senparc.Weixin.TenPay.TenPayV3Type.JSAPI, openIdResult.openid, this.weChatOptions.ApiKey, nonceStr ); Logger.LogDebug($"申请支付结果:{0}", Newtonsoft.Json.JsonConvert.SerializeObject(xmlDataInfo)); var result = TenPayV3.Unifiedorder(xmlDataInfo); Logger.LogDebug($"申请JsPay支付返回code:{result.result_code}"); Logger.LogDebug($"申请JsPay支付返回:{result.ResultXml}"); Logger.LogDebug($"申请JsPay支付返回结果:{result.return_msg}"); var package = string.Format("prepay_id={0}", result.prepay_id); Logger.LogDebug($"Package={package}"); var jsPayParam = new WeChatPayParameter { AppId = result.appid, MchId = result.mch_id, NonceStr = result.nonce_str, PaySign = TenPayV3.GetJsPaySign(this.weChatOptions.AppId, timeStamp, nonceStr, package, this.weChatOptions.ApiKey), SuccessUrl = request.SuccessUrl, FailedUrl = request.FailedUrl, Package = package, TimeStamp = timeStamp }; return(View(jsPayParam)); } catch (Exception ex) { Logger.LogDebug("启动微信支付失败--{0}", ex.Message); throw new Exception(ex.Message); } }
public ActionResult Index() { string sp_billno = Request["orderId"].ToString(); ViewData["orderId"] = sp_billno; string timeStamp = TenPayUtil.GetTimestamp(); string nonceStr = TenPayUtil.GetNoncestr(); string paySign = ""; string body = string.Empty; string fee = string.Empty; decimal totalfee = 0; //根据订单号获取从数据库中body fee 等信息 try { var goodsinfos = this.customerOrder.GetOrderById(Int64.Parse(sp_billno)); ViewData["Goods"] = goodsinfos; foreach (var goodinfo in goodsinfos) { totalfee += goodinfo.Price * goodinfo.Quantity; } body = "商品数量" + goodsinfos.Count; var integerpart = decimal.Truncate(totalfee); var decimalpart = decimal.Floor((totalfee - integerpart) * 100); fee = (integerpart * 100 + decimalpart).ToString(); ViewData["Fee"] = totalfee; } catch (Exception ex) { ViewData["Msg"] = ex.Message; return(View("failurePay")); } //附加数据 string attach = sp_billno; //当前时间 yyyyMMdd string date = DateTime.Now.ToString("yyyyMMdd"); if (string.IsNullOrEmpty(sp_billno)) { //生成订单10位序列号,此处用时间和随机数生成,商户根据自己调整,保证唯一 //sp_billno = DateTime.Now.ToString("HHmmss") + TenPayUtil.BuildRandomStr(28); ViewData["Msg"] = "订单生成错误"; return(View("failurePay")); } //sp_billno = DateTime.Now.ToString("HHmmss") + TenPayUtil.BuildRandomStr(28); //创建支付应答对象 RequestHandler packageReqHandler = new RequestHandler(null); //初始化 //packageReqHandler.Init(); //packageReqHandler.SetKey(TenPayInfo.Key); //设置package订单参数 string openid = Request.Cookies["sid"].Value; packageReqHandler.SetParameter("appid", TenPayInfo.AppId); //公众账号ID packageReqHandler.SetParameter("body", body); packageReqHandler.SetParameter("mch_id", TenPayInfo.Mchid); //商户号 packageReqHandler.SetParameter("nonce_str", nonceStr.ToLower()); //随机字符串 packageReqHandler.SetParameter("notify_url", TenPayInfo.TenPayNotify); //接收财付通通知的URL packageReqHandler.SetParameter("openid", openid); //openid packageReqHandler.SetParameter("out_trade_no", sp_billno); //商家订单号 packageReqHandler.SetParameter("spbill_create_ip", Request.UserHostAddress); //用户的公网ip,不是商户服务器IP packageReqHandler.SetParameter("total_fee", fee); //商品金额,以分为单位(money * 100).ToString() packageReqHandler.SetParameter("trade_type", "JSAPI"); //交易类型 //获取package包 string sign = packageReqHandler.CreateMd5Sign("key", TenPayInfo.Key); packageReqHandler.SetParameter("sign", sign); //交易类型 string data = packageReqHandler.ParseXML(); var result = TenPayV3.Unifiedorder(data); var res = XDocument.Parse(result); string prepayId = ""; try { if (res.Element("xml").Element("return_code").Value == "SUCCESS") { prepayId = res.Element("xml").Element("prepay_id").Value; } } catch (Exception ex) { ViewData["Msg"] = ex.Message; return(View("failurePay")); } string package = string.Format("prepay_id={0}", prepayId); timeStamp = TenPayUtil.GetTimestamp(); //设置支付参数 RequestHandler paySignReqHandler = new RequestHandler(null); paySignReqHandler.SetParameter("appId", TenPayInfo.AppId); paySignReqHandler.SetParameter("timeStamp", timeStamp); paySignReqHandler.SetParameter("nonceStr", nonceStr); paySignReqHandler.SetParameter("package", package); paySignReqHandler.SetParameter("signType", "MD5"); paySign = paySignReqHandler.CreateMd5Sign("key", TenPayInfo.Key); ViewData["appId"] = TenPayInfo.AppId; ViewData["timeStamp"] = timeStamp; ViewData["nonceStr"] = nonceStr; ViewData["package"] = package; ViewData["paySign"] = paySign; return(View()); }
public ActionResult NativeCall() { string sp_billno = Request["order_no"]; //当前时间 yyyyMMdd string date = DateTime.Now.ToString("yyyyMMdd"); //订单号,此处用时间和随机数生成,商户根据自己调整,保证唯一 string out_trade_no = "" + DateTime.Now.ToString("HHmmss") + TenPayUtil.BuildRandomStr(4); if (null == sp_billno) { //生成订单10位序列号,此处用时间和随机数生成,商户根据自己调整,保证唯一 sp_billno = DateTime.Now.ToString("HHmmss") + TenPayUtil.BuildRandomStr(4); } else { sp_billno = Request["order_no"].ToString(); } sp_billno = TenPayInfo.PartnerId + sp_billno; //创建RequestHandler实例 RequestHandler packageReqHandler = new RequestHandler(null); //初始化 packageReqHandler.Init(); packageReqHandler.SetKey(TenPayInfo.Key); //设置package订单参数 packageReqHandler.SetParameter("partner", TenPayInfo.PartnerId); //商户号 packageReqHandler.SetParameter("bank_type", "WX"); //银行类型 packageReqHandler.SetParameter("fee_type", "1"); //币种,1人民币 packageReqHandler.SetParameter("input_charset", "GBK"); packageReqHandler.SetParameter("out_trade_no", sp_billno); //商家订单号 packageReqHandler.SetParameter("total_fee", "1"); //商品金额,以分为单位(money * 100).ToString() packageReqHandler.SetParameter("notify_url", TenPayInfo.TenPayNotify); //接收财付通通知的URL packageReqHandler.SetParameter("body", "nativecall"); //商品描述 packageReqHandler.SetParameter("spbill_create_ip", "8.8.8.8" /*Page.Request.UserHostAddress*/); //用户的公网ip,不是商户服务器IP //获取package包 string packageValue = packageReqHandler.GetRequestURL(); //调起微信支付签名 string timeStamp = TenPayUtil.GetTimestamp(); string nonceStr = TenPayUtil.GetNoncestr(); //设置支付参数 RequestHandler payHandler = new RequestHandler(null); payHandler.SetParameter("appid", TenPayInfo.AppId); payHandler.SetParameter("noncestr", nonceStr); payHandler.SetParameter("timestamp", timeStamp); payHandler.SetParameter("package", packageValue); payHandler.SetParameter("RetCode", "0"); payHandler.SetParameter("RetErrMsg", "成功"); string paySign = payHandler.CreateSHA1Sign(); payHandler.SetParameter("app_signature", paySign); payHandler.SetParameter("sign_method", "SHA1"); Response.ContentType = "text/xml"; Response.Clear(); ViewData["payHandler"] = payHandler.ParseXML(); return(View()); }
/// <summary> /// 最新接口调用 /// 2014-11-24 /// </summary> /// <param name="ttFee">支付金额(单位元)</param> /// <param name="busiBody">订单内容</param> /// <param name="out_trade_no">订单号</param> /// <param name="code"></param> protected void WxPayDataV3(decimal ttFee, string busiBody, string out_trade_no, string code) { BLL.wx_payment_wxpay wxPayBll = new BLL.wx_payment_wxpay(); Model.wx_payment_wxpay paymentInfo = wxPayBll.GetModelByWid(wid); BLL.wx_userweixin uwBll = new BLL.wx_userweixin(); Model.wx_userweixin uwEntity = uwBll.GetModel(wid); // logBll.AddLog(wid,"【微支付】微信预定", "paypage.aspx WxPayDataV3", "211 wid:" + wid, 1); //先设置基本信息 string MchId = paymentInfo.partnerId; // "1218574001";// string partnerKey = paymentInfo.partnerKey; // 商户支付密钥Key。登录微信商户后台,进入栏目【账户设置】【密码安全】【API 安全】【API 密钥】 string notify_url = "http://" + HttpContext.Current.Request.Url.Authority + "/api/payment/wxpay/notify_url.aspx"; logBll.AddLog(wid, "【微支付】微信预定", "paypage.aspx WxPayDataV3", "uwEntity.AppId: " + uwEntity.AppId + "| uwEntity.AppSecret;" + uwEntity.AppSecret + "|code:" + code, 1); string timeStamp = ""; string nonceStr = ""; string paySign = ""; string sp_billno = out_trade_no; //当前时间 yyyyMMdd string date = DateTime.Now.ToString("yyyyMMdd"); if (null == sp_billno) { //生成订单10位序列号,此处用时间和随机数生成,商户根据自己调整,保证唯一 sp_billno = DateTime.Now.ToString("HHmmss") + TenPayUtil.BuildRandomStr(28); } //创建支付应答对象 Senparc.Weixin.MP.TenPayLibV3.RequestHandler packageReqHandler = new Senparc.Weixin.MP.TenPayLibV3.RequestHandler(null); //初始化 //packageReqHandler.SetKey(""/*TenPayV3Info.Key*/); timeStamp = TenPayUtil.GetTimestamp(); nonceStr = TenPayUtil.GetNoncestr(); //设置package订单参数 packageReqHandler.SetParameter("appid", uwEntity.AppId); //公众账号ID packageReqHandler.SetParameter("mch_id", MchId); //商户号 packageReqHandler.SetParameter("nonce_str", nonceStr); //随机字符串 packageReqHandler.SetParameter("body", busiBody); //商品描述 packageReqHandler.SetParameter("attach", wid + "|" + busiBody); packageReqHandler.SetParameter("out_trade_no", sp_billno); //商家订单号 packageReqHandler.SetParameter("total_fee", ((int)(ttFee * 100)).ToString()); //商品金额,以分为单位(money * 100).ToString() packageReqHandler.SetParameter("spbill_create_ip", Request.UserHostAddress); //用户的公网ip,不是商户服务器IP packageReqHandler.SetParameter("notify_url", notify_url); //接收财付通通知的URL packageReqHandler.SetParameter("trade_type", TenPayV3Type.JSAPI.ToString()); //交易类型 packageReqHandler.SetParameter("openid", openid); //用户的openId string sign = packageReqHandler.CreateMd5Sign("key", partnerKey); packageReqHandler.SetParameter("sign", sign); //签名 string data = packageReqHandler.ParseXML(); var result = TenPayV3.Unifiedorder(data); var res = XDocument.Parse(result); string prepayId = res.Element("xml").Element("prepay_id").Value; //设置支付参数 Senparc.Weixin.MP.TenPayLibV3.RequestHandler paySignReqHandler = new Senparc.Weixin.MP.TenPayLibV3.RequestHandler(null); paySignReqHandler.SetParameter("appId", uwEntity.AppId); paySignReqHandler.SetParameter("timeStamp", timeStamp); paySignReqHandler.SetParameter("nonceStr", nonceStr); paySignReqHandler.SetParameter("package", string.Format("prepay_id={0}", prepayId)); paySignReqHandler.SetParameter("signType", "MD5"); paySign = paySignReqHandler.CreateMd5Sign("key", partnerKey); packageValue = ""; packageValue += " \"appId\": \"" + uwEntity.AppId + "\", "; packageValue += " \"timeStamp\": \"" + timeStamp + "\", "; packageValue += " \"nonceStr\": \"" + nonceStr + "\", "; packageValue += " \"package\": \"" + string.Format("prepay_id={0}", prepayId) + "\", "; packageValue += " \"signType\": \"MD5\", "; packageValue += " \"paySign\": \"" + paySign + "\""; }
public string GetRequestUrl_App(string returnUrl, string notifyUrl, string orderId, decimal totalFee, string productInfo, string openId = null) { string timeStamp = ""; string nonceStr = ""; string paySign = ""; string sp_billno = orderId; //当前时间 yyyyMMdd string date = DateTime.Now.ToString("yyyyMMdd"); //创建支付应答对象 RequestHandler packageReqHandler = new RequestHandler(); //初始化 packageReqHandler.Init(); //packageReqHandler.SetKey(""/*TenPayV3Info.Key*/); timeStamp = TenPayUtil.GetTimestamp(); nonceStr = TenPayUtil.GetNoncestr(); Config config = Utility <Config> .GetConfig(WorkDirectory); //设置package订单参数 packageReqHandler.SetParameter("appid", config.AppId); //公众账号ID packageReqHandler.SetParameter("mch_id", config.MCHID); //商户号 packageReqHandler.SetParameter("nonce_str", nonceStr); //随机字符串 packageReqHandler.SetParameter("body", productInfo); packageReqHandler.SetParameter("out_trade_no", sp_billno); //商家订单号 packageReqHandler.SetParameter("total_fee", ((int)(totalFee * 100)).ToString()); //商品金额,以分为单位(money * 100).ToString() packageReqHandler.SetParameter("spbill_create_ip", _httpContextAccessor.HttpContext.Features.Get <IHttpConnectionFeature>().RemoteIpAddress.ToString()); //用户的公网ip,不是商户服务器IP packageReqHandler.SetParameter("notify_url", notifyUrl); //接收财付通通知的URL packageReqHandler.SetParameter("trade_type", "APP"); //交易类型 packageReqHandler.SetParameter("openid", string.IsNullOrWhiteSpace(openId) ? "" : openId); //用户的openId string sign = packageReqHandler.CreateMd5Sign("key", config.Key); packageReqHandler.SetParameter("sign", sign); //签名 string data = packageReqHandler.ParseXML(); //Core.Log.Debug("data=" + data); var result = TenPayV3.Unifiedorder(data); //Core.Log.Debug("result=" + result); var res = XDocument.Parse(result); if (res == null) { throw new ApplicationException("调用统一支付出错:请求内容:" + data); } string returnCode = res.Element("xml").Element("return_code").Value; if (returnCode == "FAIL")//失败 { throw new ApplicationException("预支付失败:" + res.Element("xml").Element("return_msg").Value); } string resultCode = res.Element("xml").Element("result_code").Value; if (resultCode == "FAIL") { throw new ApplicationException("预支付失败:" + res.Element("xml").Element("err_code_des").Value); } string prepayId = res.Element("xml").Element("prepay_id").Value; //设置支付参数 RequestHandler paySignReqHandler = new RequestHandler(); paySignReqHandler.SetParameter("appid", config.AppId); paySignReqHandler.SetParameter("partnerid", config.MCHID); paySignReqHandler.SetParameter("prepayid", prepayId); paySignReqHandler.SetParameter("timestamp", timeStamp); paySignReqHandler.SetParameter("noncestr", nonceStr); paySignReqHandler.SetParameter("package", "Sign=WXPay"); paySign = paySignReqHandler.CreateMd5Sign("key", config.Key); paySignReqHandler.SetParameter("sign", paySign); var hashtable = paySignReqHandler.GetAllParameters(); System.Text.StringBuilder strBuilder = new System.Text.StringBuilder(); strBuilder.Append("{"); foreach (var p in hashtable.Keys) { if (p.ToString() == "timestamp") { strBuilder.Append("\"" + p + "\":" + hashtable[p] + ""); } else { strBuilder.Append("\"" + p + "\":\"" + hashtable[p] + "\""); } strBuilder.Append(","); } string resultStr = strBuilder.ToString().TrimEnd(',') + "}"; return(resultStr); }
public string GetRequestUrl(string returnUrl, string notifyUrl, string orderId, decimal totalFee, string productInfo, string openId = null) { string timestamp = ""; string noncestr = ""; string str = ""; string str1 = orderId; DateTime.Now.ToString("yyyyMMdd"); RequestHandler requestHandler = new RequestHandler(); requestHandler.Init(); timestamp = TenPayUtil.GetTimestamp(); noncestr = TenPayUtil.GetNoncestr(); Config config = Utility <Config> .GetConfig(base.WorkDirectory); requestHandler.SetParameter("appid", config.AppId); requestHandler.SetParameter("mch_id", config.MCHID); requestHandler.SetParameter("nonce_str", noncestr); requestHandler.SetParameter("body", productInfo); requestHandler.SetParameter("out_trade_no", str1); int num = (int)(totalFee * new decimal(100)); requestHandler.SetParameter("total_fee", num.ToString()); requestHandler.SetParameter("spbill_create_ip", "222.240.184.122"); requestHandler.SetParameter("notify_url", notifyUrl); requestHandler.SetParameter("trade_type", "JSAPI"); requestHandler.SetParameter("openid", openId); string str2 = requestHandler.CreateMd5Sign("key", config.Key); requestHandler.SetParameter("sign", str2); string str3 = requestHandler.ParseXML(); XDocument xDocument = XDocument.Parse(TenPayV3.Unifiedorder(str3)); if (xDocument == null) { throw new ApplicationException(string.Concat("调用统一支付出错:请求内容:", str3)); } if (xDocument.Element("xml").Element("return_code").Value == "FAIL") { throw new ApplicationException(string.Concat("预支付失败:", xDocument.Element("xml").Element("return_msg").Value)); } if (xDocument.Element("xml").Element("result_code").Value == "FAIL") { throw new ApplicationException(string.Concat("预支付失败:", xDocument.Element("xml").Element("err_code_des").Value)); } string value = xDocument.Element("xml").Element("prepay_id").Value; RequestHandler requestHandler1 = new RequestHandler(); requestHandler1.SetParameter("appId", config.AppId); requestHandler1.SetParameter("timeStamp", timestamp); requestHandler1.SetParameter("nonceStr", noncestr); requestHandler1.SetParameter("package", string.Format("prepay_id={0}", value)); requestHandler1.SetParameter("signType", "MD5"); str = requestHandler1.CreateMd5Sign("key", config.Key); string str4 = string.Concat("WeixinJSBridge.invoke('getBrandWCPayRequest', {{'appId': '{0}','timeStamp': '{1}','nonceStr': '{2}','package': '{3}','signType': 'MD5','paySign': '{4}'}}, function (res) {{if (res.err_msg == 'brand_wcpay_request:ok') {{location.href='", returnUrl, "'}}else alert('支付失败!')}});"); object[] appId = new object[] { config.AppId, timestamp, noncestr, string.Format("prepay_id={0}", value), str }; string str5 = string.Format(str4, appId); return(string.Format("javascript:{0}", str5)); }
public ActionResult JsApi(string code, string state) { if (string.IsNullOrEmpty(code)) { return(Content("您拒绝了授权!")); } if (state != "JeffreySu") { //这里的state其实是会暴露给客户端的,验证能力很弱,这里只是演示一下 //实际上可以存任何想传递的数据,比如用户ID,并且需要结合例如下面的Session["OAuthAccessToken"]进行验证 return(Content("验证失败!请从正规途径进入!")); } //通过,用code换取access_token var openIdResult = OAuth.GetAccessToken(TenPayV3Info.AppId, TenPayV3Info.AppSecret, code); if (openIdResult.errcode != ReturnCode.请求成功) { return(Content("错误:" + openIdResult.errmsg)); } string timeStamp = ""; string nonceStr = ""; string paySign = ""; string sp_billno = Request["order_no"]; //当前时间 yyyyMMdd string date = DateTime.Now.ToString("yyyyMMdd"); if (null == sp_billno) { //生成订单10位序列号,此处用时间和随机数生成,商户根据自己调整,保证唯一 sp_billno = DateTime.Now.ToString("HHmmss") + TenPayUtil.BuildRandomStr(28); } else { sp_billno = Request["order_no"].ToString(); } //创建支付应答对象 RequestHandler packageReqHandler = new RequestHandler(null); //初始化 packageReqHandler.Init(); //packageReqHandler.SetKey(""/*TenPayV3Info.Key*/); timeStamp = TenPayUtil.GetTimestamp(); nonceStr = TenPayUtil.GetNoncestr(); //设置package订单参数 packageReqHandler.SetParameter("appid", TenPayV3Info.AppId); //公众账号ID packageReqHandler.SetParameter("mch_id", TenPayV3Info.MchId); //商户号 packageReqHandler.SetParameter("nonce_str", nonceStr); //随机字符串 packageReqHandler.SetParameter("body", "test"); packageReqHandler.SetParameter("out_trade_no", sp_billno); //商家订单号 packageReqHandler.SetParameter("total_fee", "1"); //商品金额,以分为单位(money * 100).ToString() packageReqHandler.SetParameter("spbill_create_ip", Request.UserHostAddress); //用户的公网ip,不是商户服务器IP packageReqHandler.SetParameter("notify_url", TenPayV3Info.TenPayV3Notify); //接收财付通通知的URL packageReqHandler.SetParameter("trade_type", TenPayV3Type.JSAPI.ToString()); //交易类型 packageReqHandler.SetParameter("openid", openIdResult.openid); //用户的openId string sign = packageReqHandler.CreateMd5Sign("key", TenPayV3Info.Key); packageReqHandler.SetParameter("sign", sign); //签名 string data = packageReqHandler.ParseXML(); var result = TenPayV3.Unifiedorder(data); var res = XDocument.Parse(result); string prepayId = res.Element("xml").Element("prepay_id").Value; //设置支付参数 RequestHandler paySignReqHandler = new RequestHandler(null); paySignReqHandler.SetParameter("appId", TenPayV3Info.AppId); paySignReqHandler.SetParameter("timeStamp", timeStamp); paySignReqHandler.SetParameter("nonceStr", nonceStr); paySignReqHandler.SetParameter("package", string.Format("prepay_id={0}", prepayId)); paySignReqHandler.SetParameter("signType", "MD5"); paySign = paySignReqHandler.CreateMd5Sign("key", TenPayV3Info.Key); ViewData["appId"] = TenPayV3Info.AppId; ViewData["timeStamp"] = timeStamp; ViewData["nonceStr"] = nonceStr; ViewData["package"] = string.Format("prepay_id={0}", prepayId); ViewData["paySign"] = paySign; return(View()); }
//public ActionResult FeedBack() //{ // //创建支付应答对象 // ResponseHandler resHandler = new ResponseHandler(null); // resHandler.Init(); // resHandler.SetKey(TenPayInfo.Key, TenPayInfo.AppKey); // //判断签名 // if (resHandler.IsWXsignfeedback()) // { // //回复服务器处理成功 // Response.Write("OK"); // Response.Write("OK:" + resHandler.GetDebugInfo()); // } // else // { // //sha1签名失败 // Response.Write("fail"); // Response.Write("fail:" + resHandler.GetDebugInfo()); // } // return null; //} public ActionResult JsApi() { string appId = "";//TenPayV3Info.AppId string timeStamp = ""; string nonceStr = ""; string package = ""; string paySign = ""; string sp_billno = Request["order_no"]; //当前时间 yyyyMMdd string date = DateTime.Now.ToString("yyyyMMdd"); if (null == sp_billno) { //生成订单10位序列号,此处用时间和随机数生成,商户根据自己调整,保证唯一 sp_billno = DateTime.Now.ToString("HHmmss") + TenPayUtil.BuildRandomStr(28); } else { sp_billno = Request["order_no"].ToString(); } //创建支付应答对象 RequestHandler packageReqHandler = new RequestHandler(null); //初始化 packageReqHandler.Init(); packageReqHandler.SetKey("" /*TenPayV3Info.Key*/); timeStamp = TenPayUtil.GetTimestamp(); nonceStr = TenPayUtil.GetNoncestr(); //设置package订单参数 packageReqHandler.SetParameter("appid", appId); //公众账号ID packageReqHandler.SetParameter("mch_id", "" /*TenPayV3Info.Mchid*/); //商户号 packageReqHandler.SetParameter("nonce_str", nonceStr); //随机字符串 packageReqHandler.SetParameter("body", "test"); packageReqHandler.SetParameter("out_trade_no", sp_billno); //商家订单号 packageReqHandler.SetParameter("total_fee", "1"); //商品金额,以分为单位(money * 100).ToString() packageReqHandler.SetParameter("spbill_create_ip", /*Request.UserHostAddress*/ "8.8.8.8"); //用户的公网ip,不是商户服务器IP packageReqHandler.SetParameter("notify_url", "www.weiweihi.com" /*_tenPayInfo.TenPayNotify*/); //接收财付通通知的URL packageReqHandler.SetParameter("trade_type", TenPayV3Type.JSAPI.ToString()); //交易类型 //获取package包 string sign = packageReqHandler.CreateMd5Sign("key", "" /*TenPayV3Info.Key*/); packageReqHandler.SetParameter("sign", sign); //交易类型 string data = packageReqHandler.ParseXML(); var result = TenPayV3.Unifiedorder(data); var res = XDocument.Parse(result); string prepayId = res.Element("xml").Element("prepay_id").Value; //设置支付参数 RequestHandler paySignReqHandler = new RequestHandler(null); paySignReqHandler.SetParameter("appid", appId); paySignReqHandler.SetParameter("timestamp", timeStamp); paySignReqHandler.SetParameter("noncestr", nonceStr); paySignReqHandler.SetParameter("package", string.Format("prepay_id={0}", prepayId)); paySign = paySignReqHandler.CreateMd5Sign("signType", "MD5"); //获取debug信息,建议把请求和debug信息写入日志,方便定位问题 //string pakcageDebuginfo = packageReqHandler.getDebugInfo(); //Response.Write("<br/>pakcageDebuginfo:" + pakcageDebuginfo + "<br/>"); //string paySignDebuginfo = paySignReqHandler.getDebugInfo(); //Response.Write("<br/>paySignDebuginfo:" + paySignDebuginfo + "<br/>"); ViewData["appId"] = appId; ViewData["timeStamp"] = timeStamp; ViewData["nonceStr"] = nonceStr; ViewData["package"] = package; ViewData["paySign"] = paySign; return(View()); }
public ActionResult JsApi() { //string appId = TenPayInfo.AppId; string timeStamp = ""; string nonceStr = ""; string packageValue = ""; string paySign = ""; string sp_billno = Request["order_no"]; //当前时间 yyyyMMdd string date = DateTime.Now.ToString("yyyyMMdd"); if (null == sp_billno) { //生成订单10位序列号,此处用时间和随机数生成,商户根据自己调整,保证唯一 sp_billno = DateTime.Now.ToString("HHmmss") + TenPayUtil.BuildRandomStr(4); } else { sp_billno = Request["order_no"].ToString(); } sp_billno = TenPayInfo.PartnerId + sp_billno; //创建支付应答对象 RequestHandler packageReqHandler = new RequestHandler(null); //初始化 packageReqHandler.Init(); packageReqHandler.SetKey(TenPayInfo.Key); //设置package订单参数 packageReqHandler.SetParameter("partner", TenPayInfo.PartnerId); //商户号 packageReqHandler.SetParameter("fee_type", "1"); //币种,1人民币 packageReqHandler.SetParameter("input_charset", "GBK"); packageReqHandler.SetParameter("bank_type", "WX"); packageReqHandler.SetParameter("out_trade_no", sp_billno); //商家订单号 packageReqHandler.SetParameter("total_fee", "1"); //商品金额,以分为单位(money * 100).ToString() packageReqHandler.SetParameter("notify_url", TenPayInfo.TenPayNotify); //接收财付通通知的URL packageReqHandler.SetParameter("body", "JSAPIdemo"); //商品描述 packageReqHandler.SetParameter("spbill_create_ip", Request.UserHostAddress); //用户的公网ip,不是商户服务器IP //获取package包 packageValue = packageReqHandler.GetRequestURL(); //调起微信支付签名 timeStamp = TenPayUtil.GetTimestamp(); nonceStr = TenPayUtil.GetNoncestr(); //设置支付参数 RequestHandler paySignReqHandler = new RequestHandler(null); paySignReqHandler.SetParameter("appid", TenPayInfo.AppId); paySignReqHandler.SetParameter("appkey", TenPayInfo.AppKey); paySignReqHandler.SetParameter("noncestr", nonceStr); paySignReqHandler.SetParameter("timestamp", timeStamp); paySignReqHandler.SetParameter("package", packageValue); paySign = paySignReqHandler.CreateSHA1Sign(); //TenPay.Delivernotify(TenPayInfo.AppId, "oX99MDgNcgwnz3zFN3DNmo8uwa-w", "111112222233333", sp_billno, // timeStamp, "1", "ok", "53cca9d47b883bd4a5c85a9300df3da0cb48565c", "sha1"); //获取debug信息,建议把请求和debug信息写入日志,方便定位问题 //string pakcageDebuginfo = packageReqHandler.getDebugInfo(); //Response.Write("<br/>pakcageDebuginfo:" + pakcageDebuginfo + "<br/>"); //string paySignDebuginfo = paySignReqHandler.getDebugInfo(); //Response.Write("<br/>paySignDebuginfo:" + paySignDebuginfo + "<br/>"); //TODO:和JSSDK一样整合信息包 ViewData["appId"] = TenPayInfo.AppId; ViewData["timeStamp"] = timeStamp; ViewData["nonceStr"] = nonceStr; ViewData["packageValue"] = packageValue; ViewData["paySign"] = paySign; return(View()); }
public string GetRequestUrl(string returnUrl, string notifyUrl, string orderId, decimal totalFee, string productInfo, string openId = null) { string timestamp = ""; string noncestr = ""; string str3 = ""; string str4 = orderId; string str5 = DateTime.Now.ToString("yyyyMMdd"); RequestHandler handler = new RequestHandler(); handler.Init(); timestamp = TenPayUtil.GetTimestamp(); noncestr = TenPayUtil.GetNoncestr(); Config config = Utility <Config> .GetConfig(WorkDirectory); handler.SetParameter("appid", config.AppId); handler.SetParameter("mch_id", config.MCHID); handler.SetParameter("nonce_str", noncestr); handler.SetParameter("body", productInfo); handler.SetParameter("out_trade_no", str4); handler.SetParameter("total_fee", ((int)(totalFee * 100M)).ToString()); handler.SetParameter("spbill_create_ip", _httpContextAccessor.HttpContext.Features.Get <IHttpConnectionFeature>().RemoteIpAddress.ToString()); handler.SetParameter("notify_url", notifyUrl); handler.SetParameter("trade_type", "JSAPI"); handler.SetParameter("openid", string.IsNullOrWhiteSpace(openId) ? "" : openId); string str6 = handler.CreateMd5Sign("key", config.Key); handler.SetParameter("sign", str6); string str7 = handler.ParseXML(); // Log.Debug("data=" + str7); XDocument document = XDocument.Parse(TenPayV3.Unifiedorder(str7)); if (document == null) { throw new ApplicationException("调用统一支付出错:请求内容:" + str7); } if (document.Element("xml").Element("return_code").Value == "FAIL") { throw new ApplicationException("预支付失败:" + document.Element("xml").Element("return_msg").Value); } if (document.Element("xml").Element("result_code").Value == "FAIL") { throw new ApplicationException("预支付失败:" + document.Element("xml").Element("err_code_des").Value); } string str11 = document.Element("xml").Element("prepay_id").Value; RequestHandler handler2 = new RequestHandler(); handler2.SetParameter("appId", config.AppId); handler2.SetParameter("nonceStr", noncestr); handler2.SetParameter("timeStamp", timestamp); handler2.SetParameter("package", "prepay_id=" + str11); handler2.SetParameter("signType", "MD5"); str3 = handler2.CreateMd5Sign("key", config.Key); handler2.SetParameter("sign", str3); handler2.SetParameter("prepayId", str11); Hashtable allParameters = handler2.GetAllParameters(); StringBuilder builder = new StringBuilder(); foreach (object obj2 in allParameters.Keys) { builder.Append(obj2 + ":" + allParameters[obj2]); builder.Append(","); } char[] trimChars = new char[] { ',' }; return(builder.ToString().TrimEnd(trimChars)); }
public string GetRequestUrl(string returnUrl, string notifyUrl, string orderId, decimal totalFee, string productInfo, string openId = null) { string timeStamp = ""; string nonceStr = ""; string paySign = ""; string sp_billno = orderId; //当前时间 yyyyMMdd string date = DateTime.Now.ToString("yyyyMMdd"); //创建支付应答对象 RequestHandler packageReqHandler = new RequestHandler(); //初始化 packageReqHandler.Init(); //packageReqHandler.SetKey(""/*TenPayV3Info.Key*/); timeStamp = TenPayUtil.GetTimestamp(); nonceStr = TenPayUtil.GetNoncestr(); Config config = Utility <Config> .GetConfig(WorkDirectory); //设置package订单参数 packageReqHandler.SetParameter("appid", config.AppId); //公众账号ID packageReqHandler.SetParameter("mch_id", config.MCHID); //商户号 packageReqHandler.SetParameter("nonce_str", nonceStr); //随机字符串 packageReqHandler.SetParameter("body", productInfo); packageReqHandler.SetParameter("out_trade_no", sp_billno); //商家订单号 packageReqHandler.SetParameter("total_fee", ((int)(totalFee * 100)).ToString()); //商品金额,以分为单位(money * 100).ToString() packageReqHandler.SetParameter("spbill_create_ip", _httpContextAccessor.HttpContext.Features.Get <IHttpConnectionFeature>().RemoteIpAddress.ToString()); //用户的公网ip,不是商户服务器IP packageReqHandler.SetParameter("notify_url", notifyUrl); //接收财付通通知的URL packageReqHandler.SetParameter("trade_type", "JSAPI"); //交易类型 packageReqHandler.SetParameter("openid", openId); //用户的openId string sign = packageReqHandler.CreateMd5Sign("key", config.Key); packageReqHandler.SetParameter("sign", sign); //签名 string data = packageReqHandler.ParseXML(); var result = TenPayV3.Unifiedorder(data); var res = XDocument.Parse(result); if (res == null) { throw new ApplicationException("调用统一支付出错:请求内容:" + data); } string returnCode = res.Element("xml").Element("return_code").Value; if (returnCode == "FAIL")//失败 { throw new ApplicationException("预支付失败:" + res.Element("xml").Element("return_msg").Value); } string resultCode = res.Element("xml").Element("result_code").Value; if (resultCode == "FAIL") { throw new ApplicationException("预支付失败:" + res.Element("xml").Element("err_code_des").Value); } string prepayId = res.Element("xml").Element("prepay_id").Value; //设置支付参数 RequestHandler paySignReqHandler = new RequestHandler(); paySignReqHandler.SetParameter("appId", config.AppId); paySignReqHandler.SetParameter("timeStamp", timeStamp); paySignReqHandler.SetParameter("nonceStr", nonceStr); paySignReqHandler.SetParameter("package", string.Format("prepay_id={0}", prepayId)); paySignReqHandler.SetParameter("signType", "MD5"); paySign = paySignReqHandler.CreateMd5Sign("key", config.Key); string js = string.Format("WeixinJSBridge.invoke('getBrandWCPayRequest', {{" + "'appId': '{0}'," + "'timeStamp': '{1}'," + "'nonceStr': '{2}'," + "'package': '{3}'," + "'signType': 'MD5'," + "'paySign': '{4}'" + "}}, function (res) {{" + "if (res.err_msg == 'get_brand_wcpay_request:ok') {{" + "location.href='" + returnUrl + "'" + "}}else alert('支付失败!')" + "}});", config.AppId, timeStamp, nonceStr, string.Format("prepay_id={0}", prepayId), paySign); return(string.Format("javascript:{0}", js)); }
/// <summary> /// JSAPI 支付 /// </summary> /// <returns></returns> public ActionResult JsApi() { string timeStamp = null; string nonceStr = null; string packageValue = null; string paySign = null; string sp_billno = Request.Form["order_no"]; //当前时间 yyyyMMdd string date = SystemTime.Now.ToString("yyyyMMdd"); if (null == sp_billno) { //生成订单10位序列号,此处用时间和随机数生成,商户根据自己调整,保证唯一 sp_billno = SystemTime.Now.ToString("HHmmss") + TenPayUtil.BuildRandomStr(4); } else { sp_billno = Request.Form["order_no"].ToString(); } sp_billno = TenPayInfo.PartnerId + sp_billno; //创建支付应答对象 RequestHandler packageReqHandler = new RequestHandler(null); //初始化 packageReqHandler.Init(); packageReqHandler.SetKey(TenPayInfo.Key); //设置package订单参数 packageReqHandler.SetParameter("partner", TenPayInfo.PartnerId); //商户号 packageReqHandler.SetParameter("fee_type", "1"); //币种,1人民币 packageReqHandler.SetParameter("input_charset", "GBK"); packageReqHandler.SetParameter("bank_type", "WX"); packageReqHandler.SetParameter("out_trade_no", sp_billno); //商家订单号 packageReqHandler.SetParameter("total_fee", "1"); //商品金额,以分为单位(money * 100).ToString() packageReqHandler.SetParameter("notify_url", TenPayInfo.TenPayNotify); //接收财付通通知的URL packageReqHandler.SetParameter("body", "JSAPIdemo"); //商品描述 packageReqHandler.SetParameter("spbill_create_ip", HttpContext.UserHostAddress()?.ToString()); //用户的公网ip,不是商户服务器IP //获取package包 packageValue = packageReqHandler.GetRequestURL(); //调起微信支付签名 timeStamp = TenPayUtil.GetTimestamp(); nonceStr = TenPayUtil.GetNoncestr(); //设置支付参数 RequestHandler paySignReqHandler = new RequestHandler(null); paySignReqHandler.SetParameter("appid", TenPayInfo.AppId); paySignReqHandler.SetParameter("appkey", TenPayInfo.AppKey); paySignReqHandler.SetParameter("noncestr", nonceStr); paySignReqHandler.SetParameter("timestamp", timeStamp); paySignReqHandler.SetParameter("package", packageValue); paySign = paySignReqHandler.CreateSHA1Sign(); //TODO:和JSSDK一样整合信息包 ViewData["appId"] = TenPayInfo.AppId; ViewData["timeStamp"] = timeStamp; ViewData["nonceStr"] = nonceStr; ViewData["packageValue"] = packageValue; ViewData["paySign"] = paySign; return(View()); }