using Senparc.Weixin.MP; using Senparc.Weixin.MP.AdvancedAPIs; using Senparc.Weixin.MP.AdvancedAPIs.TemplateMessage; using Senparc.Weixin.MP.AdvancedAPIs.User; using Senparc.Weixin.MP.Containers; namespace JNPF.Extras.Thirdparty.WeChat; /// /// 微信公众号. /// public class WeChatMPUtil { /// /// 访问令牌. /// public string accessToken { get; private set; } /// /// 构造函数. /// public WeChatMPUtil() { } /// /// 构造函数. /// public WeChatMPUtil(string appId, string appSecret) { try { accessToken = AccessTokenContainer.TryGetAccessToken(appId, appSecret); } catch (Exception ex) { } } /// /// 微信后台验证地址. /// /// 签名. /// 时间戳. /// nonce. /// 算出的值. /// public bool CheckToken(string signature, string timestamp, string nonce) { var token = "WEIXINJNPF"; return CheckSignature.Check(signature, timestamp, nonce, token); } /// /// 根据OpenId进行群发. /// /// 消息类型. /// 群发媒体文件时传入mediaId,群发文本消息时传入content,群发卡券时传入cardId. /// 开发者侧群发msgid,长度限制64字节,如不填,则后台默认以群发范围和群发内容的摘要值做为clientmsgid. /// openId字符串数组. /// 代理请求超时时间(毫秒). /// public bool SendGroupMessageByOpenId(int type, string value, string[] openIds, string clientmsgid = null, int timeOut = 10000) { try { GroupMessageType messageType = new GroupMessageType(); switch (type) { case 1://文本 messageType = GroupMessageType.text; break; case 2://图片 messageType = GroupMessageType.image; break; case 3://语音 messageType = GroupMessageType.voice; break; case 4://视频 messageType = GroupMessageType.video; break; case 5://图文 messageType = GroupMessageType.mpnews; break; case 6:// 卡券 messageType = GroupMessageType.wxcard; break; default: break; } var result = GroupMessageApi.SendGroupMessageByOpenId(accessToken, messageType, value, clientmsgid, timeOut, openIds); return result.errcode == 0; } catch (Exception ex) { return false; } } /// /// 根据OpenId发送模板消息. /// /// /// /// /// /// public void SendTemplateMessage(string openId, string templateId, string url, object data, TemplateModel_MiniProgram miniProgram = null) { var result = TemplateApi.SendTemplateMessage(accessToken, openId, templateId, url, data, miniProgram); if (result.errcode != 0) { throw new Exception(result.errmsg); } } /// /// 根据OpenId发送模板消息. /// /// /// /// /// /// public string GetTemplateMp(string templateId) { try { var result = TemplateApi.GetPrivateTemplate(accessToken); if (result.errcode == 0) { var data = result.template_list.Find(x => x.template_id == templateId); return data.content; } return string.Empty; } catch (Exception ex) { return string.Empty; } } /// /// 通过openId获取用户信息. /// /// /// public UserInfoJson GetWeChatUserInfo(string openId) { return UserApi.Info(accessToken, openId); } }