便捷缴费 支付 (一)

           互联网的时代,一时一刻都没有停止过,一直都在进步,随着社会的需要,科技的发展。各个方面的各个岗位的需要,没有什么技术实现不了的。为了更便捷、服务的时代。一切达到简便、快捷、易上手。例如 :“中国建设银行校园缴费平台”。PC端缴费、微信公众号缴费都是太拘束了。客户说 :我就想要跟他差不多的,各个商户生成自己的一个二维码,如果客户用微信扫一扫默认就是微信支付、用支付宝扫默认就是支付宝支付、用浏览器扫 到支付那一页了下面列表可以选择支付宝、微信、银联、等等各个通道支付。   嗯  听着是可以满足客户需求的  但  但 可能花点时间 

 

 整理整理思路 ,想倒是想的挺简单挺美好来着,但是到某一步也许就卡的一下,无论怎么样 一切都是能解决滴 ,没有什么能够阻挡 。。。

创建生成连接二维码

 (1).可以放到公共的类里啦

  public class QRCodeHandler
    {
        /// <summary>
        /// 创建生成二维码
        /// </summary>
        /// <param name="Dz">跳转连接地址</param>
        /// <param name="Tp">中间显示的Logo</param>
        /// <returns></returns>
        ///   也可以是Image 类型
        public static byte[] CreateQRcode(string Dz, string Tp)
        {

            QRCodeEncoder qrCodeEncoder = new QRCodeEncoder();
            qrCodeEncoder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.BYTE;//二维码编码(Byte、AlphaNumeric、Numeric)
            qrCodeEncoder.QRCodeScale = 4;//二维码尺寸(Version为0时,1:26x26,每加1宽和高各加25
            qrCodeEncoder.QRCodeVersion = 8;//二维码密集度0-40
            qrCodeEncoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.M;//二维码纠错能力(L:7% M:15% Q:25% H:30%)
            Image card = qrCodeEncoder.Encode(Dz, Encoding.UTF8);
            System.IO.MemoryStream MStream = new System.IO.MemoryStream();
            card.Save(MStream, System.Drawing.Imaging.ImageFormat.Png);

            System.IO.MemoryStream MStream1 = new System.IO.MemoryStream();
            CombinImage(card, Tp).Save(MStream1, System.Drawing.Imaging.ImageFormat.Png);

            MStream.Dispose();
            MStream1.Dispose();

            MemoryStream ms = new MemoryStream();
            card.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);


            //return card;  Image类型的时候返回

            return ms.ToArray(); //返回 byte[]类型

        }
        /// <summary>   
        /// 调用此函数后使此两种图片合并,类似相册,有个   
        /// 背景图,中间贴自己的目标图片   
        /// </summary>   
        /// <param name="imgBack">粘贴的源图片</param>   
        /// <param name="destImg">粘贴的目标图片</param>   
        public static Image CombinImage(Image imgBack, string destImg)
        {
            Image img = Image.FromFile(destImg);        //照片图片     
            if (img.Height != 65 || img.Width != 65)
            {
                img = KiResizeImage(img, 65, 65, 0);
            }
            Graphics g = Graphics.FromImage(imgBack);

            g.DrawImage(imgBack, 0, 0, imgBack.Width, imgBack.Height); 
View Code

 (2).前端调用后台生成商户需要的连接地址二维码,EWMWxItem中的w、h 是设置二维码里面logo的宽高

   //页面
<ul class="ui-list ui-list-one ui-list-link ui-border-tb">

    @foreach (var m in Model.sources)
    {
        var url = Url.Action("WxItem", new { id = m.ID });
        <li class="ui-border-t">
            <a class="ui-list-info" href="@url">
                <h4 class="ui-nowrap">@m.MC</h4>
                <img src="@Url.Action("EWMWxItem", "Home", new { id = m.ID, logo = m.Logo, dz= url })" />
                <div class="ui-txt-info"></div>
            </a>
        </li>
    }

</ul>
  //后台
 [Description("获取二维码")]
   public ActionResult EWMWxItem(int id, string logo, string dz, int? w, int? h)
        {
            try
            {
                w = 50; h = 50;
                if (string.IsNullOrWhiteSpace(logo))
                    return HttpNotFound();
                logo = logo.Replace("../", "");
                var t = "~/" + logo;
                var logourl = Server.MapPath(t);
                var startIndex = logourl.LastIndexOf('.');
                List<string> exs = new List<string> { ".JPG", ".JPEG", ".PNG", ".GIF", ".ICO", ".BMP" };
                if (w.HasValue || h.HasValue)
                {
                    var tp = string.Format("{0}.{1}_{2}.jpg", logourl, w, h);
                    if (!System.IO.File.Exists(tp))
                    {
                        Db.Charge.FileHelper.PicFile.MakeThumbnail(logourl, tp, w, h);
                    }
                    logourl = tp;
                }
                //二维码跳转的连接地址
                var Url = Request.Url.Scheme + "://" + Request.Url.Authority + dz;
                var EWMLogo = QRCodeHandler.CreateQRcode(Url, logourl);

                return File(EWMLogo, @"image/jpeg");
            }
            catch (Exception ex)
            {
                Db.Charge.LogHelper.WriteLogs.LogN("EWMWxItem", ex.ToString());
                return HttpNotFound();
            }

        }
View Code

如果二维码返回 Image类型,后台可以这样处理

        // Image类型
        public class ImageResult : ActionResult
        {
            public ImageResult() { }
            public Image Image { get; set; }
            public ImageFormat ImageFormat { get; set; }
            public override void ExecuteResult(ControllerContext context)
            {
                // 验证属性
                if (Image == null)
                {
                    throw new ArgumentNullException("Image");
                }
                if (ImageFormat == null)
                {
                    throw new ArgumentNullException("ImageFormat");
                }
                //输出
                context.HttpContext.Response.Clear();
                if (ImageFormat.Equals(ImageFormat.Bmp)) context.HttpContext.Response.ContentType = "image/bmp";
                if (ImageFormat.Equals(ImageFormat.Gif)) context.HttpContext.Response.ContentType = "image/gif";
                if (ImageFormat.Equals(ImageFormat.Icon)) context.HttpContext.Response.ContentType = "image/vnd.microsoft.icon";
                if (ImageFormat.Equals(ImageFormat.Jpeg)) context.HttpContext.Response.ContentType = "image/jpeg";
                if (ImageFormat.Equals(ImageFormat.Png)) context.HttpContext.Response.ContentType = "image/png";
                if (ImageFormat.Equals(ImageFormat.Tiff)) context.HttpContext.Response.ContentType = "image/tiff";
                if (ImageFormat.Equals(ImageFormat.Wmf)) context.HttpContext.Response.ContentType = "image/wmf";
                Image.Save(context.HttpContext.Response.OutputStream, ImageFormat);
            }
        }

       public ActionResult EWMWxItem(int id, string logo, string dz, int? w, int? h)
        {

            //二维码跳转的连接地址
            var Url = Request.Url.Scheme + "://" + Request.Url.Authority + dz;
            var EWMLogo = QRCodeHandler.CreateQRcode(Url, logo);
            return new ImageResult()
            {
                Image = EWMLogo,
                ImageFormat = System.Drawing.Imaging.ImageFormat.Jpeg
            };
        }
View Code

 看前台页面需要什么类型的数据显示,无论是哪个类型的 都可以显示在页面。

 

 

 哇 ~    显示出来了耶 ,但  但是 这个图片 有点大啊,咦  不管了 先扫一下吧  哈哈哈 跳到了

 

转载于:https://www.cnblogs.com/BabyRui/p/11586754.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值