QiFeng.ZWY.Bll/WxInterfaceFunc/WxInterQrCodeFunc.cs

(开头部分) 4KB

这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。

using System;
using System.Globalization;
using System.Net;
using System.Web;
using QiFeng.LMSD.Model;
using QiFeng.LMSD.Model.WeChat;
using QiFeng.LMSD.Utility;
using Newtonsoft.Json;
using QiFeng.LMSD.Model.Wechat;

namespace QiFeng.LMSD.Bll.WxInterfaceFunc
{
    /// <summary>
    /// 微信二维码接口类
    /// </summary>
    public class WxInterQrCodeFunc : BaseWxInterFunc
    {
        #region 获取带参数的二维码图片

        /// <summary>
        /// 获取Ticket
        /// </summary>
        /// <param name="sceneId">场景值ID,临时二维码时为32位非0整型,永久二维码时最大值为100000(目前参数只支持1--100000)</param>
        /// <param name="accessToken"></param>
        /// <returns></returns>
        private QrTicket CreateQrCode(long sceneId, string accessToken)
        {
            //创建获取QrCode的Ticket Url  需要Format 0 access_token
            const string weiXinTicketCreateUrl = "https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token={0}";

            // 获取二维码 所需Ticket 需要上传的Json字符串(需要Format 0.scene_id)
            // scene_id场景值ID  永久二维码时最大值为100000(目前参数只支持1--100000)
            const string weiXinQrCodeTicketCreateJsonString =
                "{\"action_name\": \"QR_LIMIT_SCENE\", \"action_info\": {\"scene\": {\"scene_id\":{0}}}}";

            if (string.IsNullOrEmpty(accessToken))
                throw new WxErrorMsgException("Access Token Error", WxErrorMsgExceptionType.WxErrorException);

            var url = string.Format(weiXinTicketCreateUrl, accessToken);
            var postData = weiXinQrCodeTicketCreateJsonString.Replace("{0}", sceneId.ToString(CultureInfo.InvariantCulture));

            var result = HttpClientHelper.PostResponse(url, postData);//请求
            if (result.Contains("\"ticket\":") && result.Contains("\"url\":"))
            {
                var ticket = JsonConvert.DeserializeObject<QrTicket>(result); //HttpClientHelper.PostResponse<Ticket>(url, postData);

                if (ticket == null || string.IsNullOrEmpty(ticket.Ticket) || string.IsNullOrEmpty(ticket.Url))
                {
                    return null;
                }
                return ticket;
            }
            if (result.Contains("\"errcode\":") && result.Contains("\"errmsg\":"))
            {
                if (result.Contains("40001") || result.Contains("40014") || result.Contains("42001"))
                {
                    var errTicket = new QrTicket {ErrorMsg = result};
                    return errTicket;
                }
                throw new WxErrorMsgException(result, WxErrorMsgExceptionType.WxErrorException);
后面还有 49 行代码,解锁后查看完整代码

24 小时内免费解锁 3 个项目,之后 1 算力/个。 规则说明

AI 解读 AI

登录后可用,每次 10 算力,解读结果公开显示在下面。

还没有人解读过这个文件。