using Abp.Application.Services.Dto;
using Abp.Runtime.Caching;
using Microsoft.Extensions.Configuration;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using Newtonsoft.Json.Schema;
using Senparc.CO2NET.HttpUtility;
using Senparc.Weixin.CommonAPIs.ApiHandlerWapper;
using Senparc.Weixin.MP.Containers;
using Senparc.Weixin.MP.Entities;
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Text;
using System.Threading.Tasks;
namespace AbpProject.WeiXinMPCache
{
public class MPCacheAppService : AbpProjectAppServiceBase, IMPCacheAppService
{
///
private readonly string AppIdSAddress = "WeiXinMP:AppID";
///
private readonly string AppSecretAddress = "WeiXinMP:AppSecret";
///
private readonly string AccTokenUrl = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={0}&secret={1}";
private readonly ICacheManager \_cacheManager;
private readonly IConfiguration \_appConfiguration;
public MPCacheAppService(IConfiguration appConfiguration, ICacheManager cacheManager)
{
\_appConfiguration = appConfiguration;
\_cacheManager = cacheManager;
}
/// <summary>
/// 获取公众微信号的token
/// </summary>
/// <returns></returns>
public async Task<string> GetAccessToken()
{
var acctoken = await \_cacheManager.GetCache("WeiXinMP").GetOrDefaultAsync("AccessToken");
if (acctoken == null || string.IsNullOrEmpty(acctoken.ToString()))
{
var appId = \_appConfiguration\[AppIdSAddress\];
var appSecret = \_appConfiguration\[AppSecretAddress\];
var url = string.Format(AccTokenUrl, appId, appSecret);
var result = HttpClientHelper<AccessTokenResult>.Get(url,new AccessTokenResult());
if (result != null)
{
await \_cacheManager.GetCache("WeiXinMP").SetAsync("AccessToken", result.access\_token, TimeSpan.FromHours());
return result.access\_token;
}
}
return acctoken.ToString();
}
}
}
手机扫一扫
移动阅读更方便
你可能感兴趣的文章