/// <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); }
/// <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); }
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(); }
/// <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; }