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…

HubbleDotNet使用备忘

Word格式下载转载于:https://www.cnblogs.com/wdfrog/archive/2011/07/30/2121817.html

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

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

数据结构之中缀表达式实现计算器

栈还是用的上一篇的数组模拟栈,并在此之上增加了 判断是否是一个运算符的方法 获取运算符的优先级方法 计算结果方法 查看栈顶元素的方法 四个方法,具体代码如下: package com.ebiz.stack;/*** author YHj* create 2019-07-20 14:20* 数组模拟栈*/public class ArrayStack {pri…

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

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

com 名字对象(3)使用IMoniker

一.名字对象比较 Hash和IsEqual方法 IMoniker* moniker2NULL; CreateFileMoniker(OLESTR("F:\\test.xlsx"),&moniker2); DWORD dw; moniker2->Hash(&dw); IMoniker* moniker3NULL; CreateFileMoniker(OLESTR("F:\\test2.xlsx"),&moniker3);…

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

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

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

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

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

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

[html] html中在span标签里面可以放那些标签?

[html] html中在span标签里面可以放那些标签&#xff1f; 都可以&#xff0c;但原则上不要。个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。欢迎大家一起讨论 主目录 与歌谣一起通关前端面试题

得到WebService应用程序的路径

[WebMethod] public string ShowWebServicePhysicalPath() { string strpathSystem.Web.HttpContext.Current.Request.PhysicalPath; return strpath.Substring(0,strpath.LastIndexOf("\")); }转载于:https://www.cnblogs.com/lanbaoming/archive/2…

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

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

云服务器个人入门主机对比和分析

最近阿里云的云服务器快到期了&#xff0c;看看了市场上的各大云主机&#xff0c;然后进行了整理和对比希望对初次买云主机的用户有帮助 阿里云 学生主机腾讯云 学生主机百度云 学生主机华为云金山云滴滴云 DC2云服务器品牌类型CPU内存带宽硬盘价格所需用户阿…

[html] const nums1 = [1, 2, 2, 1], nums2 = [2] 交集是什么?

[html] const nums1 [1, 2, 2, 1], nums2 [2] 交集是什么&#xff1f; let a [1, 2, 2, 1]; let b [2]; let aSet new Set(a); let bSet new Set(b);let intersection Array.from(new Set(a.filter(v > bSet.has(v)))) console.log(intersection); // [2]个人简介 …

数据结构之栈实现中缀转后缀并计算结果

一.中缀变后缀过程分析 给定一个中缀,最后变为后缀的过程其实并不算复杂,下面分析一下过程: 1. 首先面对一个中缀表达式,我们需要两个栈,一个用来存放运算符,即符号栈 operatorstack,一个用来存放数字,运算符,即数字栈 numStack 2. 开始扫描中缀表达式 3.遇到操作数时,我们直接…

TreeView 小技巧

1、在把treeview的check事件给封了之后&#xff0c;在双击的情况下仍然会选中。这个要通过处理消息来解决。 解决&#xff1a; 在调用的时候将这个事件给过滤掉 if (e.Node.ForeColor Color.Gray) e.Cancel true; 自定义treeview中加入以下方法 protected ove…

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

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

PHPRedis教程之geo

前言 支持 GEO 系列命令的 Redis 版本从 3.2.0 起开始才可以使用&#xff0c;所以之前版本就不要想了。 函数列表 geoadd - 将指定的地理空间项&#xff08;纬度&#xff0c;经度&#xff0c;名称&#xff09;添加到指定的键&#xff0c; 数据作为有序集存储在 Redis 中。 GEOA…

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

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