C# 淘宝商品微信返利助手开发-(八)微信号对接

系列教程一目录:返利助手原理

系列教程二目录:返利助手开放文档以及帐号申请地址

系列教程三目录:返利助手开发(1)API介绍

系列教程四目录:返利助手开发(2)淘宝分享的内容如何只取淘口令

系列教程五目录:返利助手开发(3)淘口令如何通过API转换为链接

系列教程六目录:返利助手开发(4)如果通过淘口令解析的出来的地址获得返利信息

系列教程七目录:返利助手开发(5)如何将优惠券地址转为淘口令

系列教程八目录:微信号对接

系列教程九目录:编写一个vue页面用于复制淘口令

微信公众号分为订阅号和公众号
经过博主测试如果没有资料申请公众号的人可以自行申请订阅号代替
订阅号一样可以使用接口自动回复,只是订阅号没有红包发送,获取用户信息,公众号菜单等功能的权限

微信开发的我们首先得得获取的到微信公众号的APPID和APPSecrest
APPID和Secrest

还需要将服务器配置启用服务器地址就是你你对接接受微信消息并处理的接口地址
Token就是你自定义的密码,微信在访问你接口的时候你要返回这里配置的token微信验证成功后才会运行访问
EncodingAESKey微信加密密钥开启后自动生成
在这里插入图片描述

然后在程序中开发,由于为了便捷我这里使用了盛派微信的dll流程如下:
安装盛派的dll

微信公众号自动回去不仅仅需要APPID和APPsecret
还需要以下参数
“Token”: “自己设置一个自定义的密码”,
“EncodingAESKey”: “微信中获取”,
“AppId”: “微信中获取”,
“Appsecrest”: “微信中获取”

配置完成后我们进行开发
首先是微信验证的,因为只有微信验证成功了才会将消息推送给我们
代码如下:

     public static readonly string Token = SiteConfig.GetSite("Token");//与微信公众账号后台的Token设置保持一致,区分大小写。public static readonly string EncodingAESKey = SiteConfig.GetSite("EncodingAESKey");//与微信公众账号后台的EncodingAESKey设置保持一致,区分大小写。public static readonly string AppId = SiteConfig.GetSite("AppId");//与微信公众账号后台的AppId设置保持一致,区分大小写。private ILog log = LogManager.GetLogger(Startup.repository.Name, typeof(WeixinController));/// <summary>/// 微信后台验证地址(使用Get),微信后台的“接口配置信息”的Url填写如:http://sdk.weixin.senparc.com/weixin/// </summary>[HttpGet]public object Get(string signature, string timestamp, string nonce, string echostr){bool istrue = CheckSignature(signature, timestamp, nonce);if (istrue){return echostr; //返回随机字符串则表示验证通过}else{log.Info("如果你在浏览器中看到这句话,说明此地址可以被作为微信公众账号后台的Url,请注意保持Token一致。");return Content("如果你在浏览器中看到这句话,说明此地址可以被作为微信公众账号后台的Url,请注意保持Token一致。"); //返回随机字符串则表示验证不通过}}#region/// <summary>/// 验证微信签名/// </summary>/// <returns></returns>/// * 将token、timestamp、nonce三个参数进行字典序排序/// * 将三个参数字符串拼接成一个字符串进行sha1加密/// * 开发者获得加密后的字符串可与signature对比,标识该请求来源于微信。private bool CheckSignature(string signature, string timestamp, string nonce){string access_token = Token;string[] ArrTmp = { access_token, timestamp, nonce };Array.Sort(ArrTmp);     //字典排序string tmpStr = string.Join("", ArrTmp);tmpStr = MD5Util.SHA1(tmpStr);if (tmpStr.ToLower() == signature){return true;}else{return false;}}#endregion

微信验证写完之后就是处理微信消息的接口了:
如下所示:

   /// <summary>/// 用户发送消息后,微信平台自动Post一个请求到这里,并等待响应XML/// PS:此方法为常规switch判断方法,从v0.3.3版本起,此Demo不再更新/// </summary>[HttpPost]public object Post(string signature, string timestamp, string nonce, string echostr){if (!CheckSignature(signature, timestamp, nonce)){return Content("参数错误!");}XDocument requestDoc = null;try{var syncIOFeature = HttpContext.Features.Get<IHttpBodyControlFeature>();if (syncIOFeature != null){syncIOFeature.AllowSynchronousIO = true;}requestDoc = XDocument.Load(Request.Body);var requestMessage = RequestMessageFactory.GetRequestEntity(new DefaultMpMessageContext(), requestDoc);requestDoc.Save(ServerUtility.ContentRootMapPath("~/App_Data/" + SystemTime.Now.Ticks + "_Request_" + requestMessage.FromUserName + ".txt"));//测试时可开启,帮助跟踪数据ResponseMessageBase responseMessage = null;switch (requestMessage.MsgType){case RequestMsgType.Text://文字{var strongRequestMessage = requestMessage as RequestMessageText;Dictionary<string, string> dic = new Dictionary<string, string>();string resultmessage = "";resultmessage = strongRequestMessage.Content;if (resultmessage.Length <= 12){var strongresponseMessage = ResponseMessageBase.CreateFromRequestMessage<ResponseMessageText>(requestMessage);strongresponseMessage.Content = string.Format("你发送的消息是{0}", strongRequestMessage.Content);responseMessage = strongresponseMessage;}else (resultmessage.Length >= 12){try{//返利信息处理查询代码}catch (Exception e){log.Info("Message"+e.Message);log.Info("InnerException" + e.InnerException.Message);var strongresponseMessage = ResponseMessageBase.CreateFromRequestMessage<ResponseMessageText>(requestMessage);strongresponseMessage.Content = string.Format("此商品暂无优惠", strongRequestMessage.Content);responseMessage = strongresponseMessage;}}//TODO:交给Service处理具体信息,参考/Service/EventSercice.cs 及 /Service/LocationSercice.csbreak;}case RequestMsgType.Location://位置{var strongRequestMessage = requestMessage as RequestMessageText;var strongresponseMessage =ResponseMessageBase.CreateFromRequestMessage<ResponseMessageText>(requestMessage);strongresponseMessage.Content =string.Format("您刚才发送了位置信息,暂不支持位置信息",strongRequestMessage.Content);responseMessage = strongresponseMessage;break;}case RequestMsgType.Image://图片{//TODO:交给Service处理具体信息var strongRequestMessage = requestMessage as RequestMessageImage;var strongresponseMessage =ResponseMessageBase.CreateFromRequestMessage<ResponseMessageNews>(requestMessage);strongresponseMessage.Articles.Add(new Article(){Title = "您刚才发送了图片信息",Description = "您刚才发送了图片信息",PicUrl = strongRequestMessage.PicUrl,Url = "http://www.baidu.com"});responseMessage = strongresponseMessage;break;}case RequestMsgType.Voice://语音{//TODO:交给Service处理具体信息var strongRequestMessage = requestMessage as RequestMessageVoice;var strongresponseMessage =ResponseMessageBase.CreateFromRequestMessage<ResponseMessageMusic>(requestMessage);strongresponseMessage.Music.MusicUrl = "http://sdk.weixin.senparc.com/Content/music1.mp3";responseMessage = strongresponseMessage;break;}case RequestMsgType.Event://事件{var strongRequestMessage = requestMessage as RequestMessageEvent;var strongresponseMessage =ResponseMessageBase.CreateFromRequestMessage<ResponseMessageText>(requestMessage);log.Info(JsonConvert.SerializeObject(strongRequestMessage));switch (strongRequestMessage.EventName){//关注case "subscribe":strongresponseMessage.Content =string.Format("感谢你关注我的微信号");responseMessage = strongresponseMessage;break;//取消关注case "unsubscribe":strongresponseMessage.Content =string.Format("如果你有那些建议,请及时返回,我争取做得更好");responseMessage = strongresponseMessage;break;//默认事件default:break;}break;}default:throw new ArgumentOutOfRangeException();}var responseDoc = Senparc.NeuChar.Helpers.EntityHelper.ConvertEntityToXml(responseMessage);responseDoc.Save(ServerUtility.ContentRootMapPath("~/App_Data/" + SystemTime.Now.Ticks + "_Response_" + responseMessage.ToUserName + ".txt"));//测试时可开启,帮助跟踪数据return Content(responseDoc.ToString());//如果不需要记录responseDoc,只需要://return Content(responseMessage.ConvertEntityToXmlString());}catch (Exception ex){log.Info("Message:" + ex.Message);log.Info("InnerException:" + ex.InnerException.Message);return Content("");}}

我们可以看到微信回复的事件里面包含,文字信息,语音信息,图片信息,位置信息和事件信息

其中事件信息又分为,关注事件,取消关注事件,如果是有自定义菜单的用户可能还有菜单点击事件

我们通过判断不同类型都消息类型对不同类型的信息进行分析处理

到这里之后只需要发布到服务器配置好之后微信公众号就能按照你编写的代码自动回复了

博主这里无聊对接了1个测qq凶吉的接口喜欢的朋友可以通过
回复
QQ:QQ号
来测凶吉

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/410471.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C# 制作不规则窗体的两种解决方案

我的广告单元&#xff0c;有空点一下哦&#xff0c;谢谢&#xff01; 冒着被拍砖的危险&#xff0c;投放到首页。C#制作不规则窗体应该又是一个老生常谈的问题了&#xff0c;可能很多老鸟会带BS的眼神&#xff0c;那么请老鸟们视该文章如浮云吧。 制作不规则窗体&#xff0c;本…

新概念英语第二册课文电子版_新概念英语第二册课文学生(Victoria)朗读

点击上"蓝字"关注我们专栏介绍【悦读时刻】是我们为中小学生在英语、语文朗读中的佼佼者开辟的专栏。我们会在优秀朗诵内容中进行优选之后上传发布。外研社新概念英语 II编者&#xff1a;何其莘 &L.G. AlexanderLONGMAN2简 介《新概念英语》(New Concept Engl…

C# 淘宝商品微信返利助手开发-(九)编写一个vue页面用于复制淘口令

系列教程一目录&#xff1a;返利助手原理 系列教程二目录&#xff1a;返利助手开放文档以及帐号申请地址 系列教程三目录&#xff1a;返利助手开发&#xff08;1&#xff09;API介绍 系列教程四目录&#xff1a;返利助手开发&#xff08;2&#xff09;淘宝分享的内容如何只取…

python color属性_使用Python制作一个带GUI界面的词云自动生成工具(连载七)

前几篇向大家介绍了词云自动生成工具&#xff08;GUI&#xff09;的详解GUI词云自动生成工具中词云属性设置界面的实现&#xff08;连载六&#xff09;。通过前面内容我们基本构建出了词云自动生成工具的主要框架。本篇结合tkinter中的filedialog和colorchooser的使用&#xff…

python爬取微博评论_用 python 爬取微博评论并手动分词制作词云

最近上海好像有举行个什么维吾尔族的秘密时装秀&#xff0c;很好看的样子&#xff0c;不过我还没时间看。但是微博上已经吵翻了天&#xff0c;原因是好吧&#xff0c;这不是我们关心的&#xff0c;我的心里只有学习我爱学习 Python 爬虫 本次爬取的是这条微博这条微博 微博的移…

公众号出现该公众号提供的服务出现故障分析

近日公众号出现了 出现该公众号提供的服务出现故障的错误提示 百度了一下这种错误的可能性 在这里插入图片描述 1. 程序后台未回复微信success 2. 5秒内无响应 3. 授权给了多个第三方平台&#xff0c;其中一个不可用。 4. ToUserName和 FromUserName 参数不正确无法找到接收…

数据结构之栈对逆BoLand表达式的计算

一. 后缀表达式: 后缀表达式,逆波兰表达式,是指运算符位于操作符之后,计算机对该式是从做到右进行计算,计算过程如下例子 二.计算思路 对于后缀表达式的计算,需要一个栈即可, 即遇见数字压栈,遇见运算符从栈中取出两个数,根据运算进行操作, 需要注意的是,减法以及除法都是后出栈…

c++ fork 进程时 共享内存_c/c++ Linux 进程间通信------共享内存

1. 什么是共享内存共享内存(Shared Memory)&#xff0c;指两个或多个进程共享一个给定的存储区。进程可以将同一段共享内存连接到它们自己的地址空间中&#xff0c;所有进程都可以访问共享内存中的地址&#xff0c;就好像它们是由用C语言函数malloc分配的内存一样。而如果某个进…

python爬取新闻网站内容_python爬虫案例:抓取网易新闻

此文属于入门级级别的爬虫&#xff0c;老司机们就不用看了。 本次主要是爬取网易新闻&#xff0c;包括新闻标题、作者、来源、发布时间、新闻正文。 首先我们打开163的网站&#xff0c;我们随意选择一个分类&#xff0c;这里我选的分类是国内新闻。然后鼠标右键点击查看源代码&…

如何查看QQ和微信查看授权过那些应用?

平时生活中&#xff0c;要登录一些网站或者app时&#xff0c;为了省事儿&#xff0c;都用第三方登录&#xff0c;登录是简单快捷了一些 时间长了,授权过的那些应用都不知道了&#xff0c;甚至一些应用你没用去授权权限也一直开放给别人网站的 所以为了自己帐号的安全还是有必…

C# ASP.NET MVC 图片上传的多种方式(存储至服务器文件夹,阿里云oss)

图片上传时我们进场用到的一个功能今天将他整理了一下写了个demo希望对大家有用 该demo分为如下 1.上传至至服务器文件夹 2.上传至阿里云oss 3.百度webupload上传图片 效果图如下: 首先讲解一下后台代码 (1)上传至服务器存储 using System; using System.Collections; u…

java变量命名规则_浅谈JAVA开发规范与开发细节(上)

开发团队在开发过程中&#xff0c;由于每个人的开发习惯&#xff0c;以及对于技术的理解深浅程度不一&#xff0c;往往一个项目在开发过程中&#xff0c;代码的质量&#xff0c;代码的风格都不尽相似&#xff0c;所以有一份适合团队的代码规范是非常有必要的&#xff0c;而一个…

Charles

安装 https://www.jianshu.com/p/cb744a4c0344 https://blog.csdn.net/qq_28831197/article/details/81196571 使用说明&#xff1a; 来源&#xff1a;https://www.jianshu.com/p/73b134559c76 过滤网络请求 通常情况下&#xff0c;我们需要对网络请求进行过滤&#xff0c;只监…

.NET Core Docker使用初入篇

本篇内容如何在CentOS上安装Docker服务器与工具准备安装Docker更新系统安装Docker源设置Docker开机启动启动Docker使用Docker运行一个.NET Core 例子.net core 例子拉取.net core 例子停止.net core 例子启用其他如何在CentOS上安装Docker 服务器与工具准备 首先我们需要一个…

如何延长作用域链_第4部分2:作用域(链)和 闭包

知识列表作用域/作用域链 闭包&#xff08;涉及JS垃圾回收机制 &#xff09;https://zhuanlan.zhihu.com/p/27110726 【 js 基础 】【读书笔记】作用域和闭包https://juejin.im/post/5afb0ae56fb9a07aa2138425 深入理解闭包之前置知识→作用域与词法作用域&#xff08;一&#…

C# T4模板在项目中的使用

1.什么是t4模版 T4&#xff0c;即4个T开头的英文字母组合&#xff1a;Text Template Transformation Toolkit。 T4(Text Template Transformation Toolkit)是微软官方在VisualStudio 2008中开始使用的代码生成引擎。在 Visual Studio 中&#xff0c;“T4 文本模板”是由一些文…

Docker中安装Jenkins实时发布.net core 项目(一)

Docker中安装Jenkins实时发布.net core 项目安装docker懒人篇手动安装dockerfile安装jenkins常规安装jenkinsjenkins的安装搜索jenkins拉取jenkins容器jenkins的启动jenkins密码其他安装docker 使用curl安装最新版 curl -fsSL https://get.docker.com/ | sh重启Docker systemc…

Docker中安装Jenkins实时发布.net core 项目(二)

Docker中安装Jenkins实时发布.net core 项目防坑点升级dockerjenkins运行运行命令jenkins拉取git并构建项目其他查看发布文件防坑点 升级docker 首先我们要确认我们在liunx安装的不是1.31.1的docker容器不然在后面的运行中会报错 can not open /etc/sysconfig/docker如果你是…

Jenkins构建 netcore5.0 项目时出现NU3028/NU3037错误的解决方案

我在使用Jenkins自动化部署项目的时候&#xff0c;出现了如下的错误 error NU3028: Package System.IO.Compression 4.3.0 from source https://api.nuget.org/v3/index.json: The repository primary signatures timestamp found a chain building issue: UntrustedRoot: self…

2019长安大学ACM校赛网络同步赛 L XOR

题意 求区间内有多少数x满足x^4x^5x0 1≤l≤r≤1018. 题解 根据异或的性质可以推到 x^4x5x -->x^4xx4x 即x和4x每一位都不同&#xff0c;即x和(x<<2)每一位都不同&#xff0c;就是x中每一位都与他前前一位不同。 那么就很简单了&#xff0c;可以很容易写出数位DP状态f…