/// <summary>
        /// 生成带参数的二维码
        /// </summary>
        /// <param name="accessToken"></param>
        /// <param name="expire_seconds">该二维码有效时间,以秒为单位。 最大不超过2592000(即30天),此字段如果不填,则默认有效期为30秒。</param>
        /// <param name="qrCodeType">二维码类型,QR_SCENE为临时,QR_LIMIT_SCENE为永久,QR_LIMIT_STR_SCENE为永久的字符串参数值</param>
        /// <param name="scene_id">场景值ID,临时二维码时为32位非0整型,永久二维码时最大值为100000(目前参数只支持1--100000)</param>
        /// <param name="scene_str">场景值ID(字符串形式的ID),字符串类型,长度限制为1到64,仅永久二维码支持此字段   </param>
        public static CreateQRCodeResult CreateQRCode(string accessToken, QRCodeType qrCodeType, string expire_seconds = null, string scene_id = null, string scene_str = null)
        {
            string  url      = string.Format("https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token={0}", accessToken);
            dynamic jsonData = null;

            if (qrCodeType == QRCodeType.QR_SCENE)
            {
                jsonData = new
                {
                    expire_seconds = expire_seconds,
                    action_name    = "QR_SCENE",
                    action_info    = new
                    {
                        scene = new
                        {
                            scene_id = scene_id
                        }
                    }
                };
            }
            else if (qrCodeType == QRCodeType.QR_LIMIT_SCENE)
            {
                jsonData = new
                {
                    action_name = "QR_LIMIT_SCENE",
                    action_info = new
                    {
                        scene = new
                        {
                            scene_id = scene_id
                        }
                    }
                };
            }
            else if (qrCodeType == QRCodeType.QR_LIMIT_STR_SCENE)
            {
                jsonData = new
                {
                    action_name = "QR_LIMIT_STR_SCENE",
                    action_info = new
                    {
                        scene = new
                        {
                            scene_str = scene_str
                        }
                    }
                };
            }
            else
            {
                Log.Debug("CreateQRCode", "无该类型的QRCodeType");
            }
            dynamic            result   = HttpService.WeChatPost(url, JsonHelper.getJsonString(jsonData));
            CreateQRCodeResult wxResult = EntityHelper.GetJsonResultToEntity <CreateQRCodeResult>(result);

            return(wxResult);
        }
Example #2
0
        /// <summary>
        /// 获取二维码类型
        /// </summary>
        /// <param name="RCode"></param>
        /// <returns></returns>
        private bool GetQRCodeType(string strRCode)
        {
            //港通卡
            if (strRCode.Contains("http://boea.cn/M_Hmw/CardTask.html"))
            {
                strQRCodeType = QRCodeType.GTK;
                return(true);
            }

            //电子提送货单
            if (strRCode.Contains("inGateNo"))
            {
                strQRCodeType = QRCodeType.DZTSHD;
                return(true);
            }

            return(false);
        }
Example #3
0
        private void RenderQRCode(ComponentController paComponentController, QRCodeType paQRCodeType, String paText, String paImageSource)
        {
            paComponentController.AddElementAttribute(ComponentController.ElementAttribute.ea_Type, paQRCodeType.ToString());
            paComponentController.AddAttribute(HtmlAttribute.Class, ctCLSElementDiv);
            paComponentController.AddElementType(ComponentController.ElementType.Element);
            paComponentController.RenderBeginTag(HtmlTag.Div);

            paComponentController.AddAttribute(HtmlAttribute.Class, ctCLSTextDiv);
            paComponentController.RenderBeginTag(HtmlTag.Div);
            paComponentController.Write(paText);
            paComponentController.RenderEndTag();

            paComponentController.AddAttribute(HtmlAttribute.Class, ctCLSImage);
            paComponentController.AddAttribute(HtmlAttribute.Src, paImageSource);
            paComponentController.RenderBeginTag(HtmlTag.Img);
            paComponentController.RenderEndTag();

            paComponentController.RenderEndTag();
        }
Example #4
0
        /// <summary>
        /// 创建二维码
        /// </summary>
        /// <param name="content"></param>
        /// <returns></returns>
        public static string Create(string str, int _size, string destImg = "", bool _combin = false, QRCodeLevel _levet = QRCodeLevel.M, QRCodeVersion _ver = QRCodeVersion.A, QRCodeType _type = QRCodeType.Byte)
        {
            var _result = string.Empty;
            var fullpath = string.Empty;
            var filepath = System.Web.HttpContext.Current.Server.MapPath(@"~\QRCode\upload") + "\\";
            if (string.IsNullOrEmpty(destImg))
            {
                destImg = filepath + "favicon.png";
            }
            if (string.IsNullOrEmpty(str))
            {
                _result = "[{\"status\":0,\"count\":1,\"content\":\"" + "亲内容去哪里了".ChinessConvertToUnicodeString() + "\"}]";
                return _result;
            }

            QRCodeEncoder qrCodeEncoder = new QRCodeEncoder();
            String encoding = _type.ToString();
            if (encoding == "Byte")
            {
                qrCodeEncoder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.BYTE;
            }
            else if (encoding == "AlphaNumeric")
            {
                qrCodeEncoder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.ALPHA_NUMERIC;
            }
            else if (encoding == "Numeric")
            {
                qrCodeEncoder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.NUMERIC;
            }

            try
            {
                int scale = _size;
                qrCodeEncoder.QRCodeScale = scale;
            }
            catch (Exception ex)
            {
                //throw new Exception(ex.ToString());
                _result = "[{\"status\":0,\"count\":1,\"content\":\"" + "大小设置出错".ChinessConvertToUnicodeString() + "\"}]";
                return _result;
            }
            try
            {
                int version = Convert.ToInt16(_ver);
                qrCodeEncoder.QRCodeVersion = version + 1;
            }
            catch (Exception ex)
            {
                //throw new Exception(ex.ToString());
                _result = "[{\"status\":0,\"count\":1,\"content\":\"" + "版本设置出错".ChinessConvertToUnicodeString() + "\"}]";
                return _result;
            }
            string errorCorrect = _levet.ToString();
            if (errorCorrect == "L")
                qrCodeEncoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.L;
            else if (errorCorrect == "M")
                qrCodeEncoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.M;
            else if (errorCorrect == "Q")
                qrCodeEncoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.Q;
            else if (errorCorrect == "H")
                qrCodeEncoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.H;

            Image image;

            image = qrCodeEncoder.Encode(ConverToGB(str, 16));

            var filename = Guid.NewGuid().ToString() + ".png";

            fullpath = filepath + filename;

            if (!Directory.Exists(filepath))
            {
                Directory.CreateDirectory(filepath);
            }
            fullpath = filepath + filename;
            if (_combin)
            {
                CombinImage(image, destImg, true);
            }
            image.Dispose();
            _result = "[{\"status\":1,\"count\":1,\"content\":\"" + str + "\",\"list\":[{\"imgurl\":\"" + fullpath + "\"}]}]";

            return _result;
        }