博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
微信扫码支付asp.net(C#)实现步骤
阅读量:6979 次
发布时间:2019-06-27

本文共 5219 字,大约阅读时间需要 17 分钟。

支付提交页面:

[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
dic = new Dictionary
(); 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
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");

 

以上代码全部经过实体网站测试成功运行。

转载于:https://www.cnblogs.com/valu/p/4339939.html

你可能感兴趣的文章
认识HTML5的WebSocket 认识HTML5的WebSocket
查看>>
SQL with NUll处理,Join系列,between,in对比exists以及少量题目
查看>>
更换博客地址
查看>>
Ring Tone Manager on Windows Mobile
查看>>
openresty 前端开发入门五之Mysql篇
查看>>
MySQL编码引发的两个问题
查看>>
Mysql——外键
查看>>
高级特性-多线程,GUI
查看>>
高可用集群之分布式文件系统
查看>>
LINUX内核升级
查看>>
将视觉深度学习模型应用于非视觉领域
查看>>
连接centos7桌面方法
查看>>
eclipse设置
查看>>
第二课 , 启动 ./start-all.sh
查看>>
linux下jboss的安装配置
查看>>
运维日志管理系统
查看>>
fragment 横竖屏 不重建
查看>>
Oracle数据库文件坏块损坏的恢复方法
查看>>
Watir-webdriver处理table
查看>>
我的友情链接
查看>>