• .NET开发微信小程序-生成二维码


    1.生成小程序二维码功能

    直接请求相应的链接。传递相应的参数

    以生成商铺的付款码为例:

    复制代码
     var shopsId = e.ShopsId
         //付款码的参数
         var codeModel = new function () { }
         codeModel.path = "pages/PageWxPay/PageWxPay?shopsId=" + shopsId
         codeModel.width = 430
         codeModel.auto_color = false
         codeModel.line_color = { "r": "0", "g": "0", "b": "0" }
         var data = {
           shopsID: shopsId,
           data: JSON.stringify(codeModel)
         }
         console.log(data)
         api.RequestApiURL("Weixin/MyPaymentCode", data, function (codeData) {
           console.log(codeData)
           var obj = codeData.data.data
           if (obj.Key == "0") {
             that.setData({
               payCodeUrl: app.globalData.apiurl + obj.Value
             })
             wx.hideLoading()
           }
           else {
             wx.showToast({ title: obj.Value })
           }
         })
    复制代码

    后台代码处理

    复制代码
     private static object obj = new object();
            /// <summary>
            /// 创建二维码
            /// 接口A: 适用于需要的码数量较少的业务场景 接口地址:
            /// 接口B:适用于需要的码数量极多,或仅临时使用的业务场景
            /// 接口C:适用于需要的码数量较少的业务场景
            /// </summary>
            /// <param name="data">前台传递的数据</param>
            /// <param name="path">图片存储位置</param>
            /// <param name="toKen"></param>
            /// <returns></returns>
            public static bool CreateWxaqrCode(Utils.QrCodeType nType, string data, string path, string toKen, out string ExcaptionMassage)
            {
                ExcaptionMassage = "";
                bool msg = false;
                string url = string.Empty;
                switch (nType)
                {
                    case Utils.QrCodeType.A:
                        url = "https://api.weixin.qq.com/wxa/getwxacode?access_token={0}";
                        break;
                    case Utils.QrCodeType.B:
                        url = "http://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token={0}";
                        break;
                    case Utils.QrCodeType.C:
                        url = "https://api.weixin.qq.com/cgi-bin/wxaapp/createwxaqrcode?access_token={0}";
                        break;
    
                }
                url = string.Format(url, toKen);
                lock (obj)
                {
                    //判断当前用户是否生成二微码
                    if (!System.IO.File.Exists(path))
                    {
                        try
                        {
                            //获取数据流
                            Stream str = Request.PostMoths(url, data);
    
                            byte[] by = Utils.StreamToBytes(str);
    
                            Utils.PreservationCodeImage(path, by);
                            //保存该文件
                            msg = true;
                        }
                        catch(Exception e)
                        {
                            ExcaptionMassage= e.Message;
                            msg = false;//出现异常
                        }
                    }
                }
                return msg;
            }
    复制代码

    注:PostMoths方法在小程序基础配置里面有

    StreamToBytes方法和PreservationCodeImage方法在支付里面有

  • 相关阅读:
    20200925--矩阵加法(奥赛一本通P93 6 多维数组)
    20200924--图像相似度(奥赛一本通P92 5多维数组)
    20200923--计算鞍点(奥赛一本通P91 4)
    20200922--计算矩阵边缘元素之和(奥赛一本通P91 3二维数组)
    20200921--同行列对角线的格(奥赛一本通P89 2 二维数组)
    磨人的.net core 3.1(二) DataReader的问题
    磨人的.net core 3.1(一) CORS的问题
    Vue SSR问题:返回的js打包文件为HTML文件
    axios与.net core API实现文件下载
    .Net Core API中基于System.Threading.Timer的定时任务
  • 原文地址:https://www.cnblogs.com/EasyLive2006/p/7978163.html
Copyright © 2020-2023  润新知