using Microsoft.AspNetCore.Mvc;
using Senparc.Weixin.Entities.TemplateMessage;
using Senparc.Weixin.MP.AdvancedAPIs;
using Senparc.Weixin;
using Senparc.Weixin.MP;
using Senparc.Weixin.WxOpen.AdvancedAPIs;
using Infrastructure;
using Senparc.Weixin.WxOpen.AdvancedAPIs.Template;
using System.Threading.Tasks;
using System;
namespace Infrastructure.WeChat.SubScribe
{
public static class Subscribe
{
private static readonly NLog.Logger logger = NLog.LogManager.GetCurrentClassLogger();
///
/// 订阅消息
///
///
///
public static async Task SubscribeMessage(string templateId,string openId, TemplateMessageData templateMessageData)
{
await Task.Delay(1000);//停1秒钟,实际开发过程中可以将权限存入数据库,任意时间发送。
var page = "pages/index/index";
var wxOpenAppId = AppSettings.GetConfig("SenparcWeixinSetting:TenPayV3_AppId");
//templateId也可以由后端指定
try
{
var result = await MessageApi.SendSubscribeAsync(wxOpenAppId, openId, templateId, templateMessageData, page);
if (result.errcode == ReturnCode.请求成功)
{
return "消息已发送,请注意查收" ;
}
else
{
return "发送失败:" + result.errmsg;
}
}
catch (Exception ex)
{
logger.Error(ex,"推送失败");
throw new CustomException("推送失败:"+ex);
}
}
///
/// 下发小程序和公众号统一的服务消息
///
///
///
public static async Task UniformSend(string mpTemplateId, string openId,string pagePath, object templateData)
{
await Task.Delay(1000);//停1秒钟,实际开发过程中可以将权限存入数据库,任意时间发送。
try
{
var mpAppId = Config.SenparcWeixinSetting.MpSetting.WeixinAppId;//公众号ID
//{"touser":"oeaTy0DgoGq-lyqvTauWVjbIVuP0","weapp_template_msg":null,"mp_template_msg":{"appid":"wx669ef95216eef885","template_id":null,"url":"https://dev.senparc.com","miniprogram":{"appid":"wx12b4f63276b14d4c","pagepath":"websocket/websocket"},"data":{"first":{"value":"小程序和公众号统一的服务消息","color":"#173177"},"keyword1":{"value":"2022/1/20 23:22:12","color":"#173177"},"keyword2":{"value":"dev.senparc.com","color":"#173177"},"keyword3":{"value":"小程序接口测试","color":"#173177"},"keyword4":{"value":"正常","color":"#173177"},"keyword5":{"value":"测试“小程序和公众号统一的服务消息”接口,服务正常","color":"#173177"},"remark":{"value":"您的 OpenId:oeaTy0DgoGq-lyqvTauWVjbIVuP0","color":"#173177"},"TemplateId":"ur6TqESOo-32FEUk4qJxeWZZVt4KEOPjqbAFDGWw6gg","Url":"https://dev.senparc.com","TemplateName":"系统异常告警通知"}}}
var wxOpenAppId = AppSettings.GetConfig("SenparcWeixinSetting:TenPayV3_AppId");
var miniprogram = new Miniprogram_PagePath(wxOpenAppId, pagePath);//使用 pagepath 参数
//var miniprogram = new Miniprogram_Page(WxOpenAppId, pagePath);// 使用 page 参数
//https://weixin.senparc.com/QA-17333
UniformSendData msgData = new(
openId,
new Mp_Template_Msg(mpAppId,
mpTemplateId,
"https://dev.senparc.com",
miniprogram,
templateData)
);
var result = await Senparc.Weixin.WxOpen.AdvancedAPIs.Template.TemplateApi.UniformSendAsync(mpAppId, msgData);
if (result.errcode == ReturnCode.请求成功)
{
return "服务消息已发送,请注意查收";
}
else
{
string msg;
if (result.errmsg.Contains("require subscribe"))
{
msg = "您需要关注公众号【盛派网络小助手】才能收到公众号内的模板消息!";
}
else
{
msg = result.errmsg;
}
return "出错啦!";
}
}
catch (Exception ex)
{
throw new Exception("推送报错:"+ex);
}
}
}
}