public void Product(string openid, string total_fee) { ViewBag.PayOpenId = openid; if (string.IsNullOrEmpty(openid) || string.IsNullOrEmpty(total_fee)) { Response.Write("<span style='color:#FF0000;font-size:20px'>" + "页面传参出错,请返回重试" + "</span>"); } //JSAPI支付预处理 try { var stringADict = new Dictionary <string, string>(); stringADict.Add("appid", WeixinConfig.AppID); stringADict.Add("mch_id", WeixinConfig.mch_id); stringADict.Add("device_info", WeixinConfig.DeviceInfo); stringADict.Add("nonce_str", CommonHelper.CreateNonceStr()); stringADict.Add("body", "统一下单test"); stringADict.Add("attach", "test"); stringADict.Add("out_trade_no", CommonHelper.CreateOutTradeNo()); stringADict.Add("fee_type", "CNY"); stringADict.Add("total_fee", total_fee); stringADict.Add("spbill_create_ip", "8.8.8.8"); stringADict.Add("time_start", DateTime.Now.ToString("yyyyMMddHHmmss")); stringADict.Add("time_expire", DateTime.Now.AddMinutes(10).ToString("yyyyMMddHHmmss")); stringADict.Add("goods_tag", "jjj"); stringADict.Add("notify_url", ""); stringADict.Add("trade_type", "JSAPI"); stringADict.Add("product_id", ""); //stringADict.Add("limit_pay", limit_pay); stringADict.Add("openid", openid); var _sign = WxPayAPI.Sign(stringADict, WeixinConfig.PartnerKey);//生成签名字符串 var _postdata = CommonHelper.GeneralPostdata(stringADict, _sign); ViewBag.WxJsApiParam = _postdata; dynamic _result = WxPayAPI.UnifiedOrder(WeixinConfig.AppID, WeixinConfig.mch_id, WeixinConfig.DeviceInfo, CommonHelper.CreateNonceStr(), "统一下单test", "", "test", CommonHelper.CreateOutTradeNo(), "CNY", Convert.ToInt32(total_fee), "8.8.8.8", DateTime.Now.ToString("yyyyMMddHHmmss"), DateTime.Now.AddMinutes(10).ToString("yyyyMMddHHmmss"), "jjj", "", "JSAPI", "", "no_credit", openid, WeixinConfig.PartnerKey); //在页面上显示订单信息 Response.Write("<span style='color:#00CD00;font-size:20px'>订单详情:</span><br/>"); if (_result.return_code.ToString().IndexOf("SUCCESS") >= 0) { Response.Write("<textarea rows='3' cols='2' style='color:#00CD00;font-size:20px;width:98%;' >" + _result.ToString() + "</textarea>"); } else { Response.Write("<textarea rows='3' cols='2' style='color:#00CD00;font-size:20px;width:98%;' >" + _result.return_msg + "</textarea>"); } } catch (Exception ex) { Response.Write("<span style='color:#FF0000;font-size:20px'>" + "下单失败,请返回重试" + "</span>"); } }
public JsonResult Index() { var form = Request.Form; var sPara = GetRequestPost(form); WeiXinConfig wxconfig = BMAConfig.WeiXinConfig; if (sPara.Count <= 0) { throw new ArgumentNullException(); } //LogWriter.Default.WriteInfo(form.ToString());//记录请求关键信息到日志中去 Logs.Write(form.ToString()); var out_trade_no = BrnMall.Core.Common.Utils.GenerateOutTradeNo(); //Guid.NewGuid().ToString(); var domain = wxconfig.Domain; var body = sPara["body"]; var detail = sPara["detail"]; var attach = sPara["attach"]; var fee_type = "CNY"; var total_fee = int.Parse(sPara["total_fee"]) * 100; var trade_type = sPara["trade_type"]; var spbill_create_ip = (trade_type == "APP" || trade_type == "NATIVE") ? Request.UserHostName : wxconfig.Spbill_create_ip; var time_start = DateTime.Now.ToString("yyyyMMddHHmmss"); var time_expire = DateTime.Now.AddHours(1).ToString("yyyyMMddHHmmss"); //默认1个小时订单过期,开发者可自定义其他超时机制,原则上微信订单超时时间不超过2小时 var goods_tag = sPara["goods_tag"]; var notify_url = string.Format("{0}/mobile/WXPay/Notify", domain); //与下面的Notify对应,开发者可自定义其他url地址 var product_id = sPara["product_id"]; var openid = sPara["openid"]; var partnerKey = wxconfig.PartnerKey; var content = WxPayAPI.UnifiedOrder( wxconfig.AppID, wxconfig.Mch_id, wxconfig.Device_info, Util.CreateNonce_str(), body, detail, attach, out_trade_no, fee_type, total_fee, spbill_create_ip, time_start, time_expire, goods_tag, notify_url, trade_type, product_id, openid, partnerKey); if (content.return_code.Value == "SUCCESS" && content.result_code.Value == "SUCCESS") { var result = new { prepay_id = content.prepay_id.Value, trade_type = content.trade_type.Value, sign = content.sign.Value, nonce_str = content.nonce_str.Value, return_code = content.result_code.Value, return_msg = "", }; return(Json(result)); } else { var result = new { return_code = content.return_code.Value, return_msg = content.return_msg.Value, }; return(Json(result)); } }
public JsonResult Index() { var form = Request.Form; var sPara = GetRequestPost(form); if (sPara.Count <= 0) { throw new ArgumentNullException(); } Common.LogHelper.LogError(form.ToString());//记录请求关键信息到日志中去 var out_trade_no = Guid.NewGuid().ToString(); var domain = System.Configuration.ConfigurationManager.AppSettings["Domain"]; var body = sPara["body"]; var detail = sPara["detail"]; var attach = sPara["attach"]; var fee_type = "CNY"; var total_fee = int.Parse(sPara["total_fee"]); var trade_type = sPara["trade_type"]; var spbill_create_ip = (trade_type == "APP" || trade_type == "NATIVE") ? Request.UserHostName : WeixinConfig.spbill_create_ip; var time_start = DateTime.Now.ToString("yyyyMMddHHmmss"); var time_expire = DateTime.Now.AddHours(1).ToString("yyyyMMddHHmmss"); //默认1个小时订单过期,开发者可自定义其他超时机制,原则上微信订单超时时间不超过2小时 var goods_tag = sPara["goods_tag"]; var notify_url = string.Format("{0}/WXPay/Notify", domain); //与下面的Notify对应,开发者可自定义其他url地址 var product_id = sPara["product_id"]; var openid = sPara["openid"]; var partnerKey = WeixinConfig.PartnerKey; var content = WxPayAPI.UnifiedOrder( WeixinConfig.AppID, WeixinConfig.mch_id, WeixinConfig.device_info, Util.CreateNonce_str(), body, detail, attach, out_trade_no, fee_type, total_fee, spbill_create_ip, time_start, time_expire, goods_tag, notify_url, trade_type, product_id, openid, partnerKey); if (content.return_code.Value == "SUCCESS" && content.result_code.Value == "SUCCESS") { var result = new { prepay_id = content.prepay_id.Value, trade_type = content.trade_type.Value, sign = content.sign.Value, nonce_str = content.nonce_str.Value, return_code = content.result_code.Value, return_msg = "", }; return(Json(result)); } else { var result = new { return_code = content.return_code.Value, return_msg = content.return_msg.Value, }; return(Json(result)); } }
public ActionResult NativePay(string productId) { string _model1 = WxBizPayAPI.Mode1(WeixinConfig.AppID, WeixinConfig.mch_id, CommonHelper.CreateTimestamp().ToString(), CommonHelper.CreateNonceStr(), productId, WeixinConfig.PartnerKey); //统一下单二维码生成 dynamic _result = WxPayAPI.UnifiedOrder( WeixinConfig.AppID, WeixinConfig.mch_id, WeixinConfig.DeviceInfo, CommonHelper.CreateNonceStr(), "贡献一分钱", "", "", CommonHelper.CreateOutTradeNo(), "CNY", 1, "8.8.8.8", DateTime.Now.ToString("yyyyMMddHHmmss"), DateTime.Now.AddMinutes(10).ToString("yyyyMMddHHmmss"), "jjj", "", "NATIVE", productId, "no_credit", "", WeixinConfig.PartnerKey); dynamic _model2 = WxBizPayAPI.Mode2(_result.code_url); ViewBag.Model1 = _model1; try { ViewBag.Model2 = _model2; } catch { } return(View()); }
public ActionResult JsApiPay(string openid, string total_fee) { ViewBag.PayOpenId = openid; ViewBag.TotleFee = total_fee; if (string.IsNullOrEmpty(openid) || string.IsNullOrEmpty(total_fee)) { Response.Write("<span style='color:#FF0000;font-size:20px'>" + "页面传参出错,请返回重试" + "</span>"); } dynamic _result = WxPayAPI.UnifiedOrder(WeixinConfig.AppID, WeixinConfig.mch_id, WeixinConfig.DeviceInfo, CommonHelper.CreateNonceStr(), "统一下单test", "", "test", CommonHelper.CreateOutTradeNo(), "CNY", Convert.ToInt32(total_fee), "8.8.8.8", DateTime.Now.ToString("yyyyMMddHHmmss"), DateTime.Now.AddMinutes(10).ToString("yyyyMMddHHmmss"), "jjj", "", "JSAPI", "", "no_credit", openid, WeixinConfig.PartnerKey); if (_result.return_code.ToString().IndexOf("SUCCESS") >= 0) { var stringADict = new Dictionary <string, string>(); stringADict.Add("appid", WeixinConfig.AppID); stringADict.Add("timeStamp", CommonHelper.CreateTimestamp().ToString()); stringADict.Add("nonceStr", CommonHelper.CreateNonceStr()); stringADict.Add("package", "prepay_id=" + _result.prepay_id); stringADict.Add("signType", "MD5"); stringADict.Add("openid", openid); var _sign = WxPayAPI.Sign(stringADict, WeixinConfig.PartnerKey);//生成签名字符串 stringADict.Add("paySign", _sign); ViewBag.WxJsApiParam = stringADict; Response.Write("<textarea rows='3' cols='2' style='color:#00CD00;font-size:20px;width:98%;' >" + stringADict + "</textarea>"); } else { Response.Write("<textarea rows='3' cols='2' style='color:#00CD00;font-size:20px;width:98%;' >" + _result.return_msg + "</textarea>"); } return(View()); }
public JsonResult WxPay() //public HttpResponseMessage WxPay() { if (WebHelper.IsGet()) { var result = new { return_code = "erro", return_msg = "请求错误", }; return(Json(result)); //return new HttpResponseMessage { Content = new StringContent(result.ToString(), System.Text.Encoding.UTF8, "application/json") }; } else { var form = Request.Form; var sPara = GetRequestPost(form); WeiXinConfig wxconfig = BMAConfig.WeiXinConfig; if (sPara.Count <= 0) { throw new ArgumentNullException(); } //LogWriter.Default.WriteInfo(form.ToString());//记录请求关键信息到日志中去 BMALog.Instance.Write(form.ToString()); var out_trade_no = BrnMall.Core.Common.Utils.GenerateOutTradeNo() + "_" + sPara["paytype"]; //Guid.NewGuid().ToString(); var domain = wxconfig.Domain; var body = sPara["body"]; var detail = sPara["detail"]; var attach = sPara["attach"]; var fee_type = "CNY"; var total_fee = int.Parse(sPara["total_fee"]) * 100; var trade_type = sPara["trade_type"]; var spbill_create_ip = (trade_type == "APP" || trade_type == "NATIVE") ? Request.UserHostName : wxconfig.Spbill_create_ip; var time_start = DateTime.Now.ToString("yyyyMMddHHmmss"); var time_expire = DateTime.Now.AddHours(1).ToString("yyyyMMddHHmmss"); //默认1个小时订单过期,开发者可自定义其他超时机制,原则上微信订单超时时间不超过2小时 var goods_tag = sPara["goods_tag"]; var notify_url = wxconfig.NOTIFY_URL; //string.Format("{0}/mob/WXPay/Notify", domain);//与下面的Notify对应,开发者可自定义其他url地址 var product_id = sPara["product_id"]; var openid = sPara["openid"]; var partnerKey = wxconfig.PartnerKey; var content = WxPayAPI.UnifiedOrder( wxconfig.AppID, wxconfig.Mch_id, wxconfig.Device_info, Util.CreateNonce_str(), body, detail, attach, out_trade_no, fee_type, total_fee, spbill_create_ip, time_start, time_expire, goods_tag, notify_url, trade_type, product_id, openid, partnerKey); BMALog.Instance.Write("url:" + notify_url + "|||con:" + content); if (content.return_code.Value == "SUCCESS" && content.result_code.Value == "SUCCESS") { WxPayAPIHelp.WxPayData jsApiParam = new WxPayAPIHelp.WxPayData(); string payTimeSamp = DateTime.Now.Ticks.ToString().Substring(0, 10); jsApiParam.SetValue("appId", wxconfig.AppID); jsApiParam.SetValue("timeStamp", payTimeSamp); jsApiParam.SetValue("nonceStr", content.nonce_str.Value); jsApiParam.SetValue("package", "prepay_id=" + content.prepay_id.Value); jsApiParam.SetValue("signType", "MD5"); var result = new { prepay_id = content.prepay_id.Value, trade_type = content.trade_type.Value, sign = content.sign.Value, sign1 = jsApiParam.MakeSign(), timestamp = payTimeSamp, nonce_str = content.nonce_str.Value, return_code = content.result_code.Value, return_msg = "", }; //string result = "{\"return_code\":\"SUCCESS\",\"sc\":\"123\"}"; return(Json(result)); //return new HttpResponseMessage { Content = new StringContent(result.ToString(), System.Text.Encoding.UTF8, "application/json") }; } else { var result = new { return_code = content.return_code.Value, return_msg = content.return_msg.Value, }; return(Json(result)); //return new HttpResponseMessage { Content = new StringContent(result.ToString(), System.Text.Encoding.UTF8, "application/json") }; } } }
public ActionResult Index() { try { var out_trade_no = Guid.NewGuid().ToString("N"); var domain = System.Configuration.ConfigurationManager.AppSettings["Domain"]; var body = "商品描述"; var detail = "商品详情"; var attach = ""; var product_id = "1"; var openid = User.Identity.Name; var goods_tag = ""; var fee_type = "CNY"; var total_fee = 10; var trade_type = "JSAPI"; var appId = System.Configuration.ConfigurationManager.AppSettings["AppId"]; var nonceStr = Util.CreateNonce_str(); var timestamp = Util.CreateTimestamp(); var success_redict_url = string.Format("{0}/WxPay/Success", domain); var url = domain + Request.Url.PathAndQuery; var userAgent = Request.UserAgent; var userVersion = userAgent.Substring(userAgent.LastIndexOf("MicroMessenger/") + 15, 3);//微信版本号高于或者等于5.0才支持微信支付 var spbill_create_ip = (trade_type == "APP" || trade_type == "NATIVE") ? Request.UserHostName : WeixinConfig.spbill_create_ip; var time_start = DateTime.Now.ToString("yyyyMMddHHmmss"); var time_expire = DateTime.Now.AddHours(1).ToString("yyyyMMddHHmmss"); //默认1个小时订单过期,开发者可自定义其他超时机制,原则上微信订单超时时间不超过2小时 var notify_url = string.Format("{0}/WxPay/Notify", domain); //与下面的Notify对应,开发者可自定义其他url地址 var partnerKey = WeixinConfig.PartnerKey; var mch_id = WeixinConfig.mch_id; var device_info = WeixinConfig.device_info; var returnXML = ""; var paramaterXml = ""; var content = WxPayAPI.UnifiedOrder( appId, mch_id, device_info, nonceStr, body, detail, attach, out_trade_no, fee_type, total_fee, spbill_create_ip, time_start, time_expire, goods_tag, notify_url, trade_type, product_id, openid, partnerKey, out returnXML, out paramaterXml); LogWriter.Default.WriteError(paramaterXml); LogWriter.Default.WriteError(returnXML); var prepay_id = ""; var sign = ""; var return_code = ""; var return_msg = ""; var err_code = ""; var err_code_des = ""; var isUnifiedOrderSuccess = false; if (content.return_code.Value == "SUCCESS" && content.result_code.Value == "SUCCESS") { prepay_id = content.prepay_id.Value; sign = WxPayAPI.SignPay(appId, timestamp.ToString(), nonceStr, prepay_id, partnerKey); trade_type = content.trade_type.Value; isUnifiedOrderSuccess = true; } else { return_code = content.return_code.Value; return_msg = content.return_msg.Value; isUnifiedOrderSuccess = false; } if (!isUnifiedOrderSuccess) { return(RedirectToAction("Failed", new { msg = "(代码:101)服务器下单失败,请重试" })); } var model = new JSPayModel { appId = appId, nonceStr = nonceStr, timestamp = timestamp, userAgent = userAgent, userVersion = userVersion, attach = "", body = body, detail = detail, openid = openid, product_id = out_trade_no, goods_tag = goods_tag, price = total_fee, total_fee = total_fee, prepay_id = prepay_id, trade_type = trade_type, sign = sign, return_code = return_code, return_msg = return_msg, err_code = err_code, err_code_des = err_code_des, success_redict_url = success_redict_url }; return(View(model)); } catch (Exception ex) { LogWriter.Default.WriteError(ex.Message); return(RedirectToAction("Failed", new { msg = "(代码:200)" + ex.Message })); } }
public ActionResult OrderPay() { //订单id列表 string oidList = WebHelper.GetQueryString("oidList"); string paySystemName = ""; decimal allSurplusMoney = 0M; List <OrderInfo> orderList = new List <OrderInfo>(); foreach (string oid in StringHelper.SplitString(oidList)) { //订单信息 OrderInfo orderInfo = Orders.GetOrderByOid(TypeHelper.StringToInt(oid)); if (orderInfo != null && orderInfo.Uid == WorkContext.Uid && orderInfo.OrderState == (int)OrderState.WaitPaying && orderInfo.PayMode == 1 && (paySystemName.Length == 0 || paySystemName == orderInfo.PaySystemName)) { orderList.Add(orderInfo); } else { return(Redirect(Url.Action("index", "home"))); } paySystemName = orderInfo.PaySystemName; allSurplusMoney += orderInfo.SurplusMoney; } if (orderList.Count < 1 || allSurplusMoney == 0M) { return(Redirect(Url.Action("index", "home"))); } WeiXinConfig wxconfig = BMAConfig.WeiXinConfig; var appId = wxconfig.AppID; //WeixinConfig.AppID; var nonceStr = Util.CreateNonce_str(); var timestamp = DateTime.Now.Ticks.ToString().Substring(0, 10); var domain = wxconfig.Domain; var url = Request.Url.ToString().Replace("#", "");// domain + Request.Url.PathAndQuery; var jsTickect = WeiXinHelp.IsExistjsapi_ticket(); var string1 = ""; var signature = WeiXinHelp.GetjsSDK_Signature(nonceStr, jsTickect, timestamp, url); //JSAPI.GetSignature(jsTickect, nonceStr, timestamp, url, out string1); var userAgent = Request.UserAgent; var userVersion = userAgent.Substring(userAgent.LastIndexOf("/") + 1); //WeiXinConfig wxconfig = BMAConfig.WeiXinConfig; //Logs.Write(form.ToString()); var out_trade_no = orderList[0].OSN; //Guid.NewGuid().ToString(); //var domain = wxconfig.Domain; var body = "购买创梦星火商城商品"; var detail = "购买创梦星火商城商品"; var attach = "购买创梦星火商城商品"; var fee_type = "CNY"; var total_fee = Decimal.ToInt32(orderList[0].SurplusMoney) * 100;// *100; var trade_type = "JSAPI"; var spbill_create_ip = (trade_type == "APP" || trade_type == "NATIVE") ? Request.UserHostName : wxconfig.Spbill_create_ip; var time_start = DateTime.Now.ToString("yyyyMMddHHmmss"); var time_expire = DateTime.Now.AddDays(7).ToString("yyyyMMddHHmmss"); //默认1个小时订单过期,开发者可自定义其他超时机制,原则上微信订单超时时间不超过2小时 var goods_tag = "商品"; var notify_url = wxconfig.NOTIFY_URL; //与下面的Notify对应,开发者可自定义其他url地址 var product_id = orderList[0].Oid.ToString(); var openid = WorkContext.Openid; var partnerKey = wxconfig.PartnerKey; var content = WxPayAPI.UnifiedOrder( wxconfig.AppID, wxconfig.Mch_id, wxconfig.Device_info, Util.CreateNonce_str(), body, detail, attach, out_trade_no, fee_type, total_fee, spbill_create_ip, time_start, time_expire, goods_tag, notify_url, trade_type, product_id, openid, partnerKey); var prepay_id = ""; //var trade_type = ""; var paySign = ""; //var timestamp = ""; var nonce_str = ""; var return_code = ""; if (content.return_code.Value == "SUCCESS" && content.result_code.Value == "SUCCESS") { WxPayAPIHelp.WxPayData jsApiParam = new WxPayAPIHelp.WxPayData(); string payTimeSamp = DateTime.Now.Ticks.ToString().Substring(0, 10); jsApiParam.SetValue("appId", wxconfig.AppID); jsApiParam.SetValue("timeStamp", payTimeSamp); jsApiParam.SetValue("nonceStr", content.nonce_str.Value); jsApiParam.SetValue("package", "prepay_id=" + content.prepay_id.Value); jsApiParam.SetValue("signType", "MD5"); //prepay_id = content.prepay_id.Value; prepay_id = content.prepay_id.Value; trade_type = content.trade_type.Value; paySign = jsApiParam.MakeSign(); timestamp = payTimeSamp; nonce_str = content.nonce_str.Value; return_code = content.result_code.Value; } else { return(PromptView("错误编号:" + content.return_code.Value + "错误信息:" + content.return_msg.Value)); } OrderPayModel model = new OrderPayModel(); model.OidList = oidList; model.AllSurplusMoney = allSurplusMoney; model.OrderList = orderList; model.PayPlugin = Plugins.GetPayPluginBySystemName(paySystemName); model.nonceStr = nonceStr; model.jsapiTicket = jsTickect; model.nonce_str = nonce_str; model.paySign = paySign; model.signature = signature; model.timestamp = timestamp; model.userAgent = userAgent; model.userVersion = userVersion; model.appId = appId; model.prepay_id = prepay_id; return(View(model)); //return PromptView("出错了!"); }