来源:自学PHP网 时间:2015-04-14 12:58 作者: 阅读:次
[导读] 支付提交页面: [HttpPost] public ActionResult index(decimal amount) { 生成订单10位序列号,此处用时间和随机数生成,商户...
支付提交页面: [HttpPost] public ActionResult index(decimal amount) { //生成订单10位序列号,此处用时间和随机数生成,商户根据自己调整,保证唯一 string order_no = DateTime.Now.ToString("yyyyMMddHHmmss") + TenpayUtil.BuildRandomStr(4); //这里是数据操作,代码已删除 ViewData["weixin_pay_qr_code"] = string.Format("/get_qrcode?product_id={0}", order_no); return View(); }
输出二维码: public void get_qrcode(string product_id) { WxPayHelper helper = new WxPayHelper(); Dictionary<string, string> dic = new Dictionary<string, string>(); dic.Add("appid", config_util.mp_weixin_appid); dic.Add("mch_id", config_util.weixin_mch_id); dic.Add("nonce_str", TenpayUtil.getNoncestr()); dic.Add("product_id", product_id); dic.Add("time_stamp", TenpayUtil.getTimestamp()); dic.Add("sign", helper.GetSign(dic)); string url = WxPayHelper.FormatBizQueryParaMap(dic, false);//这里不要url编码 string code = "weixin://wxpay/bizpayurl?" + url; var qrc = Create_ImgCode(code, 6); System.IO.MemoryStream ms = new System.IO.MemoryStream(); qrc.Save(ms, System.Drawing.Imaging.ImageFormat.Bmp); byte[] bytes = ms.GetBuffer(); //byte[] bytes= ms.ToArray(); 这两句都可以,至于区别么,下面有解释 ms.Close(); Response.BinaryWrite(bytes); return; }
原生拉取微信支付代码: public ContentResult index() { if (Request.RequestType == "POST") { try { WxPayHelper helper = new WxPayHelper(); StreamReader reader = new StreamReader(Request.InputStream); String xmlData = reader.ReadToEnd(); helper.ReceivePostXmlData(xmlData); common_util.WriteLog("接收post来的xmlData=" + xmlData); if (helper.CheckSign()) { common_util.WriteLog("签名验证通过"); string product_id = helper.GetProductId(); common_util.WriteLog("产品id=" + product_id); string order_no = product_id;if (产品ID存在) { #region 业务处理 helper.SetParameter("body", "用户充值,用户号:" + item.user_id); helper.SetParameter("out_trade_no", order_no); helper.SetParameter("total_fee", (item.amount * 100).ToString("#"));//这里单位是分 helper.SetParameter("notify_url", "http//www.openweixin.com.cn/notify"); helper.SetParameter("trade_type", "NATIVE"); string prepay_id = helper.GetPrepayId(); common_util.WriteLog("prepay_id=" + prepay_id); if (!string.IsNullOrEmpty(prepay_id)) { helper.SetReturnParameter("return_code", "SUCCESS"); helper.SetReturnParameter("result_code", "SUCCESS"); helper.SetReturnParameter("prepay_id", prepay_id); helper.SetReturnParameter("appid", helper.GetAppId); helper.SetReturnParameter("mch_id", helper.GetMch_Id); helper.SetReturnParameter("nonce_str", TenpayUtil.getNoncestr()); } else { helper.SetReturnParameter("return_code", "SUCCESS");//返回状态码 helper.SetReturnParameter("result_code", "FAIL");//业务结果 helper.SetReturnParameter("err_code_des", "预订单生产失败"); } #endregion } else { helper.SetReturnParameter("return_code", "SUCCESS");//返回状态码 helper.SetReturnParameter("result_code", "FAIL");//业务结果 helper.SetReturnParameter("err_code_des", "此商品无效");//业务结果 } } else { helper.SetReturnParameter("return_code", "FAIL"); helper.SetReturnParameter("return_msg", "签名失败"); common_util.WriteLog("签名验证没有通过"); } string xmlStr = helper.GetReturnXml(); common_util.WriteLog("返回xml=" + xmlStr); Response.ContentType = "text/xml"; Response.Clear(); Response.Write(xmlStr); Response.End(); } catch (Exception ex) { common_util.WriteLog("异常了" + ex); } } return Content("OK"); } 支付成功通知页面: if (Request.RequestType == "POST") { try { WxPayHelper helper = new WxPayHelper(); StreamReader reader = new StreamReader(Request.InputStream); String xmlData = reader.ReadToEnd(); helper.ReceivePostXmlData(xmlData); common_util.WriteLog("Notify_接收post来的xmlData=" + xmlData); if (helper.CheckSign()) { Dictionary<string, string> dicBack = helper.GetParameter();//获取所有参数 if (dicBack != null && dicBack.Keys.Contains("return_code")) { if (dicBack["return_code"] == "SUCCESS") { common_util.WriteLog("return_code=SUCCESS"); if (dicBack["result_code"] == "SUCCESS") { common_util.WriteLog("result_code=SUCCESS"); string out_trade_no = dicBack["out_trade_no"];//商户订单号 common_util.WriteLog("out_trade_no=" + out_trade_no); //1.验证商户订单号是否被处理 //2.处理过直接返回成功,否则返回 //此处根据out_trade_no 处理业务数据 //处理业务数据结束 common_util.WriteLog("Notify_验证签名成功"); helper.SetReturnParameter("return_code", "SUCCESS"); helper.SetReturnParameter("return_msg", ""); } } if (dicBack["return_code"] == "FAIL") { common_util.WriteLog("Notify_验证签名成功"); helper.SetReturnParameter("return_code", "SUCCESS"); helper.SetReturnParameter("return_msg", dicBack["return_msg"]); } } } else { common_util.WriteLog("Notify_验证签名失败"); helper.SetReturnParameter("return_code", "FAIL"); helper.SetReturnParameter("return_msg", "签名失败"); } string xmlStr = helper.GetReturnXml(); common_util.WriteLog("Notify_返回xml=" + xmlStr); Response.ContentType = "text/xml"; Response.Clear(); Response.Write(xmlStr); Response.End(); } catch (Exception ex) { common_util.WriteLog("Notify_异常了" + ex); } } return Content("OK"); 以上代码全部经过实体网站测试成功运行。 |
自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习
京ICP备14009008号-1@版权所有www.zixuephp.com
网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com