Esempio n. 1
0
        public virtual async Task <string> Getwxacodeunlimit(string scene, string page = "pages/index/index")
        {
            var key   = "SoMall:QR:Mini";
            var cache = await _redisClient.HashGetAsync(key, scene);

            if (cache.HasValue)
            {
                return(cache.ToString());
            }

            var appId = await _setting.GetOrNullAsync(WeixinManagementSetting.MiniAppId);

            var appSec = await _setting.GetOrNullAsync(WeixinManagementSetting.MiniAppSecret);

            var token = await GetAccessTokenAsync(appId, appSec);

            var url   = $"https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token={token}";
            var img   = HttpEx.PostGotImageByte(url, new { scene, page });
            var upyun = await GetUploader();

            var result = upyun.writeFile($"/somall/mini_qr/{scene}.jpg", img,
                                         true);

            if (result)
            {
                var path = $"{upyun.Domain}/somall/mini_qr/{scene}.jpg";
                await _redisClient.HashSetAsync(key, scene,
                                                path);

                return(path);
            }

            throw new UserFriendlyException("生成小程序二维码失败");
        }