using CoreCms.Net.Caching.AccressToken;
using CoreCms.Net.WeChat.Service.Options;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Options;
namespace CoreCms.Net.Web.WebApi.Controllers
{
///
/// 微信公众号通用接口
///
[Route("api/[controller]/[action]")]
[ApiController]
public class WeChatOffiaccountController : Controller
{
private readonly WeChatOptions _weChatOptions;
///
/// 构造函数
///
///
public WeChatOffiaccountController(IOptions weChatOptions)
{
_weChatOptions = weChatOptions.Value;
}
///
/// JS-SDK使用权限签名算法
///
///
[HttpPost]
[Authorize]
public IActionResult GetWeChatConfig()
{
//获取全局缓存的jsapi_ticket
var jsApiTicket = WeChatCacheAccessTokenHelper.GetWeChatJsApiTicket();
var nonceStr = CoreCms.Net.Utility.Helper.CommonHelper.GetSerialNumber();
var timestamp = CoreCms.Net.Utility.Helper.CommonHelper.GetTimeStampByTotalSeconds().ToString();
var url = Request.GetTypedHeaders().Referer;
//获取前面
var signatureStr = "jsapi_ticket=" + jsApiTicket + "&noncestr=" + nonceStr + "×tamp=" + timestamp + "&url=" + url;
var signature = CoreCms.Net.Utility.Helper.CommonHelper.Sha1Signature(signatureStr);
return Json(new
{
jsApiTicket,
appId = _weChatOptions.WeiXinAppId,
timestamp,
nonceStr,
signature,
url
});
}
}
}