Beispiel #1
0
        /// <summary>
        /// 创建二维码ticket
        /// </summary>
        /// <param name="scene_id"></param>
        /// <param name="action_name"></param>
        /// <param name="expire_seconds"></param>
        /// <returns></returns>
        public static QRCodeTicket CreateQRCode(int scene_id, QRCode_ActionName action_name, TimeSpan expire_seconds)
        {
            string access_token = Wx.GetAccessToken();
            string url          = $"https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token={access_token}";

            var    data       = CreateData(action_name, expire_seconds, scene_id);
            string responeStr = HttpRequsetHelper.Post(url, data);

            QRCodeTicket res = Newtonsoft.Json.JsonConvert.DeserializeObject <QRCodeTicket>(responeStr);

            return(res);
        }
Beispiel #2
0
        private static object CreateData(QRCode_ActionName action_name, TimeSpan expire_seconds, int?scene_id, string scene_str = null)
        {
            switch (action_name)
            {
            //临时 id类型
            case QRCode_ActionName.QR_SCENE:
                return(new
                {
                    expire_seconds = expire_seconds.Seconds,
                    action_name = action_name.ToString(),
                    action_info = new
                    {
                        scene = new
                        {
                            scene_id = scene_id
                        }
                    }
                });

            //临时 str类型
            case QRCode_ActionName.QR_STR_SCENE:
                return(new
                {
                    expire_seconds = expire_seconds.Seconds,
                    action_name = action_name.ToString(),
                    action_info = new
                    {
                        scene = new
                        {
                            scene_str = scene_str
                        }
                    }
                });

            //永久 id类型
            case QRCode_ActionName.QR_LIMIT_SCENE:
                return(new
                {
                    action_name = action_name.ToString(),
                    action_info = new
                    {
                        scene = new
                        {
                            scene_id = scene_id
                        }
                    }
                });

            //永久 str类型
            case QRCode_ActionName.QR_LIMIT_STR_SCENE:
                return(new
                {
                    action_name = action_name.ToString(),
                    action_info = new
                    {
                        scene = new
                        {
                            scene_str = scene_str
                        }
                    }
                });

            default:
                return(null);
            }
        }