protected void Page_Load(object sender, EventArgs e) { //登录用户名 memid = Request.QueryString["memid"] ?? ""; //微信方提供的APPID,从config配置文件中获取 appid = ConfigurationManager.AppSettings["appid"].ToString(); //接口文档里的参数(目前不知用处) string auth_code = Request.QueryString["auth_code"] ?? ""; //商品描述 string body = Request.QueryString["body"] ?? ""; //微信支付分配的终端设备号 string device_info = Request.QueryString["device_info"] ?? ""; //微信方提供的mch_id,从config配置文件中获取 string mch_id = ConfigurationManager.AppSettings["mch_id"].ToString(); //随机字符串 string nonce_str = TenpayUtil.getNoncestr(); //通知地址,从config配置文件中获取 string notify_url = ConfigurationManager.AppSettings["domain_url"].ToString() + "/PayRetrun/CZpay/wxpay/CZ_WeiXinNotifyUrl.aspx"; //订单号 out_trade_no = Request.QueryString["out_trade_no"] ?? ""; body = "ORDER" + out_trade_no; //用户OPENID string openid = Request.QueryString["openid"] ?? ""; //IP string spbill_create_ip = Request.UserHostAddress; //金额 total_fee = Request.QueryString["total_fee"] ?? ""; total_fee = Convert.ToInt32((Convert.ToDecimal(total_fee) * 100)).ToString();//微信的单位为分,所以乘100 //附加数据原样返回 string attach = string.Format("memid|{0}", memid); cardid = Request.QueryString["cardid"] ?? ""; cardpwd = Request.QueryString["cardpwd"] ?? ""; //获取package包 //商户密钥,从config配置文件中获取 string key = ConfigurationManager.AppSettings["key"].ToString(); Random rd = new Random(); //创建支付应答对象 RequestHandler packageReqHandler = new RequestHandler(Context); //初始化 packageReqHandler.init(); packageReqHandler.setParameter("appid", appid); packageReqHandler.setParameter("body", body); packageReqHandler.setParameter("mch_id", mch_id); packageReqHandler.setParameter("nonce_str", nonce_str.ToLower()); packageReqHandler.setParameter("notify_url", notify_url); packageReqHandler.setParameter("openid", openid); packageReqHandler.setParameter("out_trade_no", out_trade_no + rd.Next(1000, 9999).ToString()); //这里为了重复提交的时候订单号不重复,后面跟随机字符串 packageReqHandler.setParameter("spbill_create_ip", "192.168.1.1"); packageReqHandler.setParameter("total_fee", total_fee); //商品金额,以分为单位(money * 100).ToString() packageReqHandler.setParameter("trade_type", "JSAPI"); string sign = packageReqHandler.createMd5Sign("key", key); packageReqHandler.setParameter("sign", sign); string data = packageReqHandler.parseXML(); var result = TenPayV3.Unifiedorder(data, "https://api.mch.weixin.qq.com/pay/unifiedorder"); var res = XDocument.Parse(result); string prepay_id = string.Empty; logger.Info("---------------------------------日志开始----------------------------------------"); logger.Info("appid:" + appid); logger.Info("body:" + body); logger.Info("mch_id:" + mch_id); logger.Info("nonce_str:" + nonce_str); logger.Info("openid:" + openid); logger.Info("notify_url:" + notify_url); logger.Info("out_trade_no:" + out_trade_no); logger.Info("spbill_create_ip:" + spbill_create_ip); logger.Info("total_fee:" + total_fee); logger.Info("trade_type:" + "JSAPI"); logger.Info("XMLValue:" + res.Element("xml").Element("return_code").Value); logger.Info("XMLValue:" + res.Element("xml").Element("return_msg").Value); logger.Info("---------------------------------日志结束----------------------------------------"); try { if (res.Element("xml").Element("return_code").Value == "SUCCESS") { prepay_id = res.Element("xml").Element("prepay_id").Value; } } catch (Exception) { } //调起微信支付签名 timeStamp = TenpayUtil.getTimestamp(); nonceStr = TenpayUtil.getNoncestr().ToLower(); signType = "MD5"; package = string.Format("prepay_id={0}", prepay_id); //设置支付参数 RequestHandler paySignReqHandler = new RequestHandler(Context); paySignReqHandler.setParameter("appId", appid); paySignReqHandler.setParameter("timeStamp", timeStamp); paySignReqHandler.setParameter("nonceStr", nonceStr); paySignReqHandler.setParameter("package", package); paySignReqHandler.setParameter("signType", "MD5"); paySign = paySignReqHandler.createMd5Sign("key", key); //获取debug信息,建议把请求和debug信息写入日志,方便定位问题 //string pakcageDebuginfo = packageReqHandler.getDebugInfo(); //Response.Write("<br/>pakcageDebuginfo:" + pakcageDebuginfo + "<br/>"); //string paySignDebuginfo = paySignReqHandler.getDebugInfo(); //Response.Write("<br/>paySignDebuginfo:" + paySignDebuginfo + "<br/>"); }