• 测试扫描支付功能


     1      private Dictionary<string, object> WeixinPayTest(string body, string attach, string out_trade_no, int total_fee, long product_id)
     2         {
     3             string url = "http://spdbapi.ulopay.com/pay/unifiedorder";//浦发银行测试获取支付二维码地址
     4             Dictionary<string, object> dict = new Dictionary<string, object>(); 
     5             string userip = System.Web.HttpContext.Current.Request.UserHostAddress;//获取用户IP
     6             if (userip == "::1")
     7             {
     8                 userip = "127.0.0.1";
     9             }
    10           
    11             Dictionary<string, string> dicts = new Dictionary<string, string>();
    12             dicts.Add("body", "测试购买商品");//说明
    13             dicts.Add("mch_id", "26206409");//商户号
    14             dicts.Add("nonce_str", "ibuaiVcKdpRxkhJA");//随机数,不能超过32位
    15             dicts.Add("notify_url", "http://www.baidu.com/");//支付完返回地址
    16             dicts.Add("out_trade_no", out_trade_no);//订单号
    17             dicts.Add("spbill_create_ip", userip);
    18             dicts.Add("total_fee", "1");//支付金额
    19             dicts.Add("trade_type", "trade.weixin.native");//类型,这里是微信二维码扫描
    20             //生成签名
    21             StringBuilder str = new StringBuilder();
    22             str.Append("body=测试购买商品");//商品或支付单简要描述            
    23             str.Append("&mch_id=26206409");//商户号ID
    24             str.Append("&nonce_str=ibuaiVcKdpRxkhJA");//随机数,不能超过32位
    25             str.Append("&notify_url=http://www.baidu.com/");
    26             str.Append("&out_trade_no=" + out_trade_no);
    27             str.Append("&spbill_create_ip=" + userip);
    28             str.Append("&total_fee=1");
    29             str.Append("&trade_type=trade.weixin.native");     
    30             str.Append("&key=e5ffcbcede5216753749a976ccef4202");//key
    31             string sign = BLL.Common.Utils.MD5(str.ToString());
    32             dicts.Add("sign", sign.ToUpper());            
    33             //制作简单xml
    34             StringBuilder sb = new StringBuilder();
    35             sb.Append("<xml>");
    36             foreach (var k in dicts)
    37             {
    38                 sb.Append("<" + k.Key + ">" + k.Value + "</" + k.Key + ">");              
    39             }
    40             sb.Append("</xml>");
    41             string data = sb.ToString();
    42             WebRequestHelper req = new WebRequestHelper(url, data, Encoding.GetEncoding("utf-8"));
    43             req.Accept = "application/xml";
    44             req.ContentType = "application/xml;charset=utf-8";//输出xml格式和utf-8
    45             string res = req.PostRequest();//获取放回值
    46             if (res == "")
    47                 return null;
    48             NameValueCollection list = GetXmlFieldList(res);//把返回的xml转换为键值对形式
    49             if (list["return_code"] == "SUCCESS" && list["result_code"] == "SUCCESS")
    50             {
    51                 dict.Add("url", "/pay/GetPayQRCode.ashx?data=" + Web.UI.Fun.Utils.DESEncrypt(list["code_url"]));
    52                 dict.Add("code", 0);
    53             }
    54          
    55             return dict;
    56         }
    57 
    58         private NameValueCollection GetXmlFieldList(string res)
    59         {
    60             XmlDocument doc = new XmlDocument();
    61             doc.LoadXml(res);
    62             XmlNode root = doc.SelectSingleNode("xml");
    63             if (root == null) return null;
    64 
    65             NameValueCollection list = new NameValueCollection();
    66             foreach (XmlNode node in root.ChildNodes)
    67             {
    68                 list.Add(node.Name, node.InnerText);
    69             }
    70             return list;
    71         }

     接着使用生成二维码展示出来,使用第三方插件QRCode

     1        Web.UI.Request request = new UI.Request(true);
     2             string data = request.QueryString("data");
     3             if (string.IsNullOrEmpty(data))
     4             {
     5                 return;
     6             }
     7 
     8             try
     9             {
    10                 data = Utils.DESDecrypt(data);
    11                 QRCodeEncoder qrCodeEncoder = new QRCodeEncoder();
    12                 qrCodeEncoder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.BYTE;
    13                 qrCodeEncoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.L;
    14                 qrCodeEncoder.QRCodeVersion = 4;
    15                 qrCodeEncoder.QRCodeScale = 6;
    16 
    17                 Image image = qrCodeEncoder.Encode(data, Encoding.Default);
    18                 System.IO.MemoryStream ms = new System.IO.MemoryStream();
    19                 image.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
    20                 context.Response.ClearContent();
    21                 context.Response.ContentType = "image/Jpeg";
    22                 context.Response.BinaryWrite(ms.ToArray());
    23                 context.Response.End();
    24             }
    25             catch (Exception ex)
    26             {
    27 
    28             }
  • 相关阅读:
    Firebird开源管理工具
    ionic3使用echarts
    ionic3安卓平台引用高德地图
    ionic3安卓版release发布
    sequelize的get/post方法例子
    sequelize查询数据的日期格式化
    sequelize的mssql配置
    cordova插件列表
    ionic3使用cordova创建自定义插件
    koa2+log4js+sequelize搭建的nodejs服务
  • 原文地址:https://www.cnblogs.com/huodetiantang/p/9105760.html
Copyright © 2020-2023  润新知