You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
93 lines
2.9 KiB
C#
93 lines
2.9 KiB
C#
using DS.Module.Core;
|
|
using DS.WMS.Core.WxModule.Interface;
|
|
using Microsoft.AspNetCore.DataProtection;
|
|
using Microsoft.AspNetCore.Mvc;
|
|
using Newtonsoft.Json;
|
|
using Newtonsoft.Json.Linq;
|
|
using NLog;
|
|
using Senparc.Weixin.MP;
|
|
using LogLevel = NLog.LogLevel;
|
|
|
|
namespace DS.WMS.WebApi.Controllers;
|
|
|
|
/// <summary>
|
|
/// 微信公众号模块
|
|
/// </summary>
|
|
[Route("api/[controller]")]
|
|
public class WebAuthController : Controller
|
|
{
|
|
static readonly Logger Logger = LogManager.GetCurrentClassLogger();
|
|
|
|
// //微信公众号的APPid
|
|
// private string AppId = "wx63325af0c60e64e4";
|
|
//
|
|
// //微信公众号的配置的Secret
|
|
// private string Secret = "e71ef689becd58b5e2d3ec345ba5a23e";
|
|
//
|
|
// //授权成功返回主页
|
|
// private string indexUrl = "http://60.209.125.238:9998/#/pages/index/index?TenantId=1595354960864874496";
|
|
private string Token = "gumang896";
|
|
private readonly IWxPublicConfigService _invokeService;
|
|
|
|
/// <summary>
|
|
/// 构造函数
|
|
/// </summary>
|
|
/// <param name="invokeService"></param>
|
|
public WebAuthController(IWxPublicConfigService invokeService)
|
|
{
|
|
_invokeService = invokeService;
|
|
}
|
|
|
|
/// 验签
|
|
/// </summary>
|
|
/// <param name="signature"></param>
|
|
/// <param name="timestamp"></param>
|
|
/// <param name="nonce"></param>
|
|
/// <param name="echostr"></param>
|
|
/// <returns></returns>
|
|
[HttpGet]
|
|
[Route("index")]
|
|
public ActionResult Get(string signature, string timestamp, string nonce, string echostr)
|
|
{
|
|
// 验证成功返回echostr,否则返回空字符串
|
|
return Content(!CheckSignature.Check(signature, timestamp, nonce, Token) ? "" : echostr);
|
|
}
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
/// <param name="code"></param>
|
|
/// <param name="state"></param>
|
|
/// <param name="configId"></param>
|
|
/// <returns></returns>
|
|
[HttpGet]
|
|
[Route("callback")]
|
|
public ActionResult Post(string code, string state, string configId)
|
|
{
|
|
DataResult data = new DataResult();
|
|
string ReturnUrl = String.Empty;
|
|
Logger.Log(LogLevel.Info, "获取state成功:" + state);
|
|
Logger.Log(LogLevel.Info, "获取授权码成功:" + code);
|
|
|
|
var config = _invokeService.GetWxConfig(state);
|
|
|
|
string res = WxWebHelper.GetAccess_token(config.Appid, config.Secret, code);
|
|
Logger.Log(LogLevel.Info, "获取Token信息:" + res);
|
|
if (res.Contains("access_token"))
|
|
{
|
|
JObject token = JObject.Parse(res);
|
|
|
|
data.Code = ResultCode.Success;
|
|
data.Message = "授权成功!";
|
|
|
|
ReturnUrl = config.IndexUrl + "&OpenId=" + token["openid"].ToString();
|
|
}
|
|
else
|
|
{
|
|
data.Code = ResultCode.Fail;
|
|
data.Message = "授权失败!";
|
|
Logger.Log(LogLevel.Info, "获取网页Token失败:" + res);
|
|
ReturnUrl = config.IndexUrl;
|
|
}
|
|
return Redirect(ReturnUrl);
|
|
}
|
|
} |