2025-04-24 18:31:27 +08:00

112 lines
4.9 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using MyCode.Project.Domain.Config;
using MyCode.Project.Domain.Message.Act.User;
using MyCode.Project.Domain.Message.Request.Activity;
using MyCode.Project.Domain.Message.Request.Member;
using MyCode.Project.Domain.Message.Request.User;
using MyCode.Project.Domain.Message.Response.CardCover;
using MyCode.Project.Domain.Message.Response.Goods;
using MyCode.Project.Domain.Message.Response.LiveVideo;
using MyCode.Project.Domain.Message.Response.Member;
using MyCode.Project.Domain.Message.Response.Wechat;
using MyCode.Project.Infrastructure.Common;
using MyCode.Project.Services;
using MyCode.Project.Services.CustomMessageHandler;
using MyCode.Project.WebApi.App_Filter;
using Senparc.NeuChar.Context;
using Senparc.NeuChar.Entities;
using Senparc.Weixin.MP;
using Senparc.Weixin.MP.MessageHandlers;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Web.Http;
using System.Xml.Linq;
namespace MyCode.Project.WebApi.Areas.Member.Controllers
{
/// <summary>
/// 微信公众号 相关接口
/// </summary>
public class WeChatPublicController : BaseMemberController
{
#region
private readonly IWorkProcessService _workProcessService;
public WeChatPublicController(IWorkProcessService workProcessService)
{
_workProcessService = workProcessService;
}
#endregion
#region WeCallBack()
/// <summary>
/// 微信回调1
/// </summary>
[AllowAnonymous, IgnoreResultHandle, HttpGet, HttpPost, ActionName("WeCallBack")]
public void WeCallBack()
{
var context = CurrentHttpContext;
string signature = context.Request["signature"];
string timestamp = context.Request["timestamp"];
string nonce = context.Request["nonce"];
string echostr = context.Request["echostr"];
//get method -检验是否微信的回调,不是则不执行
//if (CheckSignature.Check(signature, timestamp, nonce, SystemConfig.WeToken))
//{
// string postStr = @" <xml><ToUserName><![CDATA[gh_9022339a2c40]]></ToUserName>
//<FromUserName><![CDATA[onGWJs5LvcR2NbYMJF2VyRhVH9XU]]></FromUserName>
//<CreateTime>1576747572</CreateTime>
//<MsgType><![CDATA[event]]></MsgType>
//<Event><![CDATA[subscribe]]></Event>
//<EventKey><![CDATA[]]></EventKey>
//</xml>";
Stream s = System.Web.HttpContext.Current.Request.InputStream;//此方法是对System.Web.HttpContext.Current.Request.InputStream的封装可直接代码
string postStr = "";
if (s != null && s.Length > 0)
{
s.Position = 0; //当你读取完之后必须把stream的读取位置设为开始
StreamReader reader = new StreamReader(s, System.Text.Encoding.UTF8);
postStr = reader.ReadToEnd().ToString();
}
//byte[] b = new byte[s.Length];
//s.Read(b, 0, (int)s.Length);
//string postStr = Encoding.UTF8.GetString(b);
//LogHelper.Info(postStr);
var weixinContext = MessageHandler<MessageContext<IRequestMessageBase, IResponseMessageBase>>.GlobalWeixinContext.MessageQueue.FirstOrDefault();
var recordCount = MessageHandler<MessageContext<IRequestMessageBase, IResponseMessageBase>>.GlobalWeixinContext.MaxRecordCount;
if (string.IsNullOrEmpty(postStr))
{
context.Response.Output.Write(echostr);
context.Response.End();
return;
}
//var doc = XDocument.Parse(postStr);
_workProcessService.Add<IWeChatPublicService>(Guid.Parse("00000000-0000-0000-0000-000000000009"), "MemberWeChatPublicCallBack","会员公众号回调", postStr,2);
//var maxRecordCount = 1;
//var messageHandler = new CustomMessageHandler(doc, null, maxRecordCount);
//messageHandler.OmitRepeatedMessage = true;
//messageHandler.Execute();
//LogHelper.Info("RequestMessages:" + messageHandler.RequestMessage);
//if (messageHandler.TextResponseMessage != null)
//{
// //LogHelper.Info("ResponseMessages:" + messageHandler.TextResponseMessage);
// context.Response.Output.Write(messageHandler.TextResponseMessage);
// context.Response.End();
//}
//new SuccessResponseMessage();
context.Response.Output.Write(new SuccessResponseMessage());
context.Response.End();
//}
return;
}
#endregion
}
}