public HttpResponseMessage wxpayTest() { string appid = "wxd8482615c33b8859"; // string mch_id = "1494504712"; //微信支付分配的商户号 string nonce_str = RandHelper.Instance.Str(24, true);; //随机字符串,不长于32位。推荐随机数生成算法 string body = "饭的支付测试"; //商品描述-腾讯充值中心-QQ会员充值 string out_trade_no = "thisisWXOrder" + DateTime.Now.ToString("yyyy-MM-dd"); //商品订单号只能是数字、大小写字母_-|*@ 32位以内 var fee = new Decimal(0.01); string total_fee = (Math.Round((decimal)fee * 100, 0)).ToString(); //总金额 string spbill_create_ip = "192.168.3.2"; //终端ip-用户端实际ip-app传给我 string notify_url = apiHost + "/notify/wxpayNotify"; //通知地址 string trade_type = "APP"; //交易类型 string mch_key = "2BCF8DD9490E328D2FCEDE7B26643231"; var dict = new Dictionary <string, string>(); dict.Add("appid", appid); //dict.Add("attach", "attach"); dict.Add("mch_id", mch_id); dict.Add("nonce_str", nonce_str); //dict.Add("sign", sign); dict.Add("body", body); dict.Add("out_trade_no", out_trade_no); dict.Add("total_fee", total_fee); dict.Add("spbill_create_ip", spbill_create_ip); dict.Add("notify_url", notify_url); dict.Add("trade_type", trade_type); var signTemp = WXPayHelperHere.getParamSrc(dict) + "&key=" + mch_key; string sign = MD5Helper.Instance.StrToMD5_UTF8(signTemp);//签名-签名生成算法 var xml = StringHelperHere.Instance.GetWX_XML(appid, "attach", body, mch_id, nonce_str, notify_url, out_trade_no, spbill_create_ip, total_fee, trade_type, sign); var url = "https://api.mch.weixin.qq.com/pay/unifiedorder"; Stream outstream = null; Stream instream = null; StreamReader sr = null; HttpWebResponse response = null; HttpWebRequest request = null; // 要注意的这是这个编码方式,还有内容的Xml内容的编码方式 Encoding encoding = Encoding.GetEncoding("UTF-8"); byte[] data = encoding.GetBytes(xml); // 准备请求,设置参数 request = WebRequest.Create(url) as HttpWebRequest; request.Method = "POST"; request.ContentType = "text/xml"; //request.ContentLength = data.Length; outstream = request.GetRequestStream(); outstream.Write(data, 0, data.Length); outstream.Flush(); outstream.Close(); //发送请求并获取相应回应数据 response = request.GetResponse() as HttpWebResponse; //直到request.GetResponse()程序才开始向目标网页发送Post请求 instream = response.GetResponseStream(); sr = new StreamReader(instream, encoding); //返回结果网页(html)代码 string content = sr.ReadToEnd(); XmlDocument doc = new XmlDocument(); doc.LoadXml(content); //string json = Newtonsoft.Json.JsonConvert.SerializeXmlNode(doc); //var b = doc.DocumentElement["return_code"].InnerText; JObject jo = new JObject(); foreach (XmlNode item in doc.DocumentElement.ChildNodes) { jo.Add(item.Name, item.InnerText); } //return content; //var a = 1; return(ControllerHelper.Instance.JsonResult(200, JsonConvert.SerializeObject(jo), "")); }
public HttpResponseMessage Charge(UserReq req) { var tokenStr = req.Token; var userId = Convert.ToInt32(req.userId); Token token = CacheHelper.GetUserToken(tokenStr); if (token == null) { return(ControllerHelper.Instance.JsonResult(400, "token失效")); } if (token.Payload.UserID != userId) { return(ControllerHelper.Instance.JsonResult(400, "token错误")); } var payType = req.payType; var payMoney = Convert.ToDecimal(req.payMoney); var Spbill_create_ip = req.spbill_create_ip; var out_trade_no = StringHelperHere.Instance.GetTimeStamp() + StringHelperHere.Instance.GetLastFiveStr(userId.ToString()); UserPay up = new UserPay(); up.type = 0; up.status = false; up.userId = userId; up.createTime = DateTime.Now; up.takeType = payType; up.outTradeNo = out_trade_no; up.money = payMoney; UserPayOper.Instance.Add(up); if (payType == "alipay") { //var str = alipay.CreateAlipayOrder(chargeMoney, out_trade_no, "http://" + apiHost + "/user/chargeByAlipayNotify"); AlipayHelperHere a = new AlipayHelperHere(); var b = a.CreateAlipayOrder(req.payMoney, out_trade_no, "https://fan-di.com/notify/chargeByAlipayNotify"); JObject jo = new JObject(); jo.Add("payType", "alipay"); jo.Add("payStr", b); return(ControllerHelper.Instance.JsonResult(200, JsonConvert.SerializeObject(jo), "")); } else { WXPayHelperHere w = new WXPayHelperHere(); var b = w.CreateWXOrder(payMoney, out_trade_no, "https://fan-di.com/notify/ChargeByWxNotify", Spbill_create_ip); XmlDocument doc = new XmlDocument(); doc.LoadXml(b); if (doc.DocumentElement["return_code"].InnerText != "SUCCESS") { txyInfo txy = new txyInfo(); txy.content = JsonConvert.SerializeObject(doc); //txyInfoOper txyOper = new txyInfoOper(); txyInfoOper.Instance.Add(txy); return(ControllerHelper.Instance.JsonResult(500, "网络不稳定,请稍后")); } JObject jo = new JObject(); jo.Add("payType", "wxpay"); foreach (XmlNode item in doc.DocumentElement.ChildNodes) { if (item.Name != "sign") { jo.Add(item.Name, item.InnerText); } } var timestamp = StringHelperHere.Instance.GetTimeStamp(); jo.Add("timestamp", timestamp); var dict = new Dictionary <string, string>(); foreach (var item in jo) { if (item.Key == "prepay_id") { dict.Add("prepayid", item.Value.ToString()); } if (item.Key == "nonce_str") { dict.Add("noncestr", item.Value.ToString()); } } dict.Add("appid", "wxd8482615c33b8859"); dict.Add("partnerid", "1494504712"); dict.Add("package", "Sign=WXPay"); dict.Add("timestamp", timestamp); string sign = StringHelperHere.Instance.GetWXSign(dict, "2BCF8DD9490E328D2FCEDE7B26643231"); jo.Add("sign", sign); return(ControllerHelper.Instance.JsonResult(200, JsonConvert.SerializeObject(jo), "")); } }