微信小程序> 微信公众号模板,微信统一服务小程序服务通知与微信公众号模板消息发送

微信公众号模板,微信统一服务小程序服务通知与微信公众号模板消息发送

浏览量:698 时间: 来源:xxuncle
微信新更新的sendUniformMessage接口也叫下发小程序和公众号统一的服务消息,可以支持小程序服务通知和微信公众号模板消息的发送,并且如果小程序与公众号相互关联还可根据通知进行页面的跳转交互,好吧话不多说直接上干货:
官方文档链接地址:
首先我们看官方文档的请求地址:
POSThttps://api.weixin.qq.com/cgi-bin/message/wxopen/template/uniform_send?access_token=ACCESS_TOKEN可以看到要发送统一服务便需要获取到与微信交换的access_token,跟微信打过交道的朋友就知道微信提供了根据appid以及appsecret获取token的接口在这里就不多做解释了当然你也可以使用现有的sdk本人使用的是Magicodes.WeChat.MiniProgram这个是公司在githup开源的sdk之一进行微信的基础信息注册如下所示:
namespaceMagicodes.MiniProgram.Startup{publicclassMiniProgramStartup{///summary///配置微信小程序////summarypublicstaticvoidConfig(ILoggerlogger,IIocManageriocManager,IConfigurationRootconfig,ISettingManagersettingManager){//日志函数voidLogAction(stringtag,stringmessage){if(tag.Equals("error",StringComparison.CurrentCultureIgnoreCase))logger.Error(message);elselogger.Debug(message);}varconfigInfo=newDefaultMiniProgramConfig{MiniProgramAppId=config["WeChat:MiniProgram:AppId"],MiniProgramAppSecret=config["WeChat:MiniProgram:AppSecret"]};//从用户设置读取配置if(Convert.ToBoolean(settingManager.GetSettingValue(AppSettings.WeChatMiniProgram.IsActive))){configInfo.MiniProgramAppId=settingManager.GetSettingValue(AppSettings.WeChatMiniProgram.AppId);configInfo.MiniProgramAppSecret=settingManager.GetSettingValue(AppSettings.WeChatMiniProgram.AppSecret);}MiniProgramSDKBuilder.Create()//设置日志记录.WithLoggerAction(LogAction).RegisterGetKeyFunc(()={varkey=iocManager.ResolveIAbpSession()?.TenantId;if(key==null)return"0";
returnkey.ToString();}).RegisterGetConfigByKeyFunc(key=configInfo).Build();}}}
就可以使用接口获取token:
TokenApitokenApi=newTokenApi()varAccessToken=tokenApi.SafeGet()?.AccessToken;
然后就是入参的准备仔细看一下官方文档会发现小程序对于不良营销方面还是非常的严格需要提供formid或者预支付id作为入参所以在小程序的场景中应该尽量多存储一下formid和预支付id以供使用
我们来看一下入参格式:
namespaceMagicodes.App.Application.MiniProgram.Dto{///summary///发送统一服务出参(根据微信格式定义)////summarypublicclassUniServiceOutput{///summary///接收该消息的用户openid(小程序与公众号openid需根据场景区分)////summarypublicstringtouser{get;set;}///summary///小程序的模板////summarypublicAppletTemplateInputDtoweapp_template_msg{get;set;}///summary///公众号的模板////summarypublicPlatformTemplateInputDtomp_template_msg{get;set;}
///summary///小程序模板入参////summarypublicclassAppletTemplateInputDto{///summary///模板消息id////summarypublicstringtemplate_id{get;set;}///summary///小程序跳转页面(点击模板消息触发)////summarypublicstringpage{get;set;}///summary///表单id(可以是支付场景的预支付id)////summarypublicstringform_id{get;set;}///summary///模板数据////summarypublicDictionarystring,TemplateDataItemdata{get;set;}///summary///放大的关键词(为空无放大关键词)////summarypublicstringemphasis_keyword{get;set;}
}
///summary///公众号模板入参////summarypublicclassPlatformTemplateInputDto{///summary///公众号appid////summarypublicstringappid{get;set;}///summary///模板消息id////summarypublicstringtemplate_id{get;set;}///summary///模板消息的跳转地址////summarypublicstringurl{get;set;}///summary///关联的小程序(如需要跳转小程序页面需传此值)////summarypublicAssociatedMiniprogramminiprogram{get;set;}///summary///公众号模板数据////summarypublicDictionarystring,TemplateDataItemData{get;set;}}
///summary///关联的小程序////summarypublicclassAssociatedMiniprogram{///summary///小程序appid////summarypublicstringappid{get;set;}///summary///需要跳转的小程序地址////summarypublicstringpagepath{get;set;}}}}
namespaceMagicodes.App.Application.MiniProgram.Dto{
///summary///模板消息的数据项类型////summarypublicclassTemplateDataItem{///summary///////summary///paramname="tvalue"/param///paramname="tcolor"/parampublicTemplateDataItem(stringtvalue,stringtcolor="#173177"){value=tvalue;color=tcolor;}
///summary///项目值////summarypublicstringvalue{get;set;}
///summary///16进制颜色代码,如:#FF0000////summarypublicstringcolor{get;set;}}}
这里一定注意的地方1、参数要一致包括大小写和符号,2、touser指的平台的openid3、有小程序的入参时默认先发小程序服务通知,没有小程序的入参有公众号入参才会发公众号模板消息
以上准备好了之后就可以进行发送了
///处理并发送模板消息////summary///paramname="input"/paramprivateSendUniformMessageResultsendUniformMessage(UniServiceOutputinput){TokenApitokenApi=newTokenApi();stringresult=null;//根据sdk安全获取AcceessToken值varAccessToken=tokenApi.SafeGet()?.AccessToken;if(!string.IsNullOrEmpty(AccessToken)){stringurl="https://api.weixin.qq.com/cgi-bin/message/wxopen/template/uniform_send?access_token="+AccessToken;varwr=newWeChatApiWebRequestHelper();result=wr.HttpPost(url,JsonConvert.SerializeObject(input));}else{Logger.Debug("未获取到AccessToken");}
returnJsonConvert.DeserializeObjectSendUniformMessageResult(result);}

版权声明

即速应用倡导尊重与保护知识产权。如发现本站文章存在版权问题,烦请提供版权疑问、身份证明、版权证明、联系方式等发邮件至197452366@qq.com ,我们将及时处理。本站文章仅作分享交流用途,作者观点不等同于即速应用观点。用户与作者的任何交易与本站无关,请知悉。

产品经理

手机 : 13312967497

擅长 : 小程序流量变现

扫码领取礼包

热门模板

  • 头条
  • 搜狐
  • 微博
  • 百家
  • 一点资讯
  • 知乎