微信二次开发_微信公众号二次开发 - CSDN
  • 微信二次开发!

    2015-06-23 11:19:27
    微信接口开发,从网站发布到编写程式。简单而直接!

           本人第一次写博客,看见许多大神都在写博客,我只是一个很笨的菜鸟程序员,但是我相信,自己有一天总会变的很厉害!那么就从写博客开始吧,我的经验只适合初学者,让他们少走很多歩!前段时间公司让我做一个微信的二次开发,以前从来没有弄过,发现无从下手!下面我从接到这个任务时,自己做的一些事情,我是用C#写!

    1)第一天疯狂的在网上查询资料,也没有看出什么名堂。第二天有点了解了,原来要有一个自己的服务器或者别人的服务器空间,把自己的程序发布上去,就是像访问自己或者别人的网站一样,在有网络的地方情况都能访问。

    2)如何发布一个Asp.net 网址了,首先,我在本地打包好,在把打包好的文件夹拷贝到服务器上去,如果打包了,我百度了很久,看很少有人能够说清楚的,我就自己上图吧:



    目标位置选择自己找的到的位置,然后点击发布就可以了!然后拷贝到服务器上去就可以了!


    3)我虽然做过Asp.net 但是我从来没有自己配置我IIS,发不过网站。发布网站对一个初学者而言是比较痛苦的,各种报错啊,只好自己百度,在此过程中也请以前的同事帮忙过,但是没有解决,自己不知道百度过多少,才找出原因!在这里总结一下:

    1)现在好多项目都是vs2010以上开发,它的框架是.net4.0,而IIS中默认好像只有.net2.0,这时候你要自己添加,怎么添加我就不说,可以百度!

    2)应用程序池中的asp.net v4.0,asp.net v4.0 Classic 没有启动如图:


    3)如果网站是.net4.0,单击右键->管理网站->高级设置->应用池->asp.net v4.0net 

    4)最重要一点可以不容易发现直接上图



    如果把以上这些注意了,应该没有什么问题了,如果有问题自己百度应该可以解决了!这个只是我首先要了解的一个发布网站的过程!

        接下来我就要自己开发微信了,在微信有一个开发管理平台,用来测试开发的,网址为:http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login,自己登陆自己微信

    然后扫描二维码,就可以进入了!在里面就有开发过程要的参数!

    登陆成功后,出现这个界面,以下只是部分页面


     这个里面的URL,填写就是发布网站服务器的网页程序的地址:如:http://205.195.177.32/,微信接口开发规定,网站的端口必须是80.一般在微信开发中处理微信的响应是使用*.ashx一般处理程序就可以了。在发布网站中把这个页面设置为默认启动页!

    可以首先去微信的调试页面试一下:http://mp.weixin.qq.com/debug/

    接下来是写程式了:

      用VS2010或者其他版本建立一个Asp.net 应用网站,删除不用的Default.aspx其他页面,自己单击项目添加一个一般应用程序,*.ashx程序。如果没有接触过,自己可以百度一下,然后去写。我的代码大部分改写前辈们的,这样节少了不少时间。如下直接给代码:

     public class interfaceTest : IHttpHandler
        {
            
            public void ProcessRequest(HttpContext param_context)
            {
               
                string token = ConfigurationManager.AppSettings["WeixinToken"];
                string postString = string.Empty;
                if (HttpContext.Current.Request.HttpMethod.ToUpper() == "POST")
                {
                    
                    using (Stream stream = HttpContext.Current.Request.InputStream)
                    {
                        
                        Byte[] postBytes = new Byte[stream.Length];
                        stream.Read(postBytes, 0, (Int32)stream.Length);
                        postString = Encoding.UTF8.GetString(postBytes);


                        if (!string.IsNullOrEmpty(postString))
                        {
                           
                            HttpContext.Current.Response.ContentEncoding = Encoding.UTF8;
                            Handle(postString);


                        }
                    }


                }
                else
                {
                    Log.WriteLog("1");
                    Valid(token);
                    
                }
             
            }


            /// <summary>
            /// 处理信息并应答
            /// </summary>
            private void Handle(string postStr)
            {
                messageHelp help = new messageHelp();
                help.ReturnMessage(postStr);
                Log.WriteLog("Handle='"+postStr+"'");
               
                
            }


           


            //验证Token
            public static bool CheckSignature(string token)
            {


                string signature = System.Web.HttpContext.Current.Request.QueryString["signature"] == null ? "" : System.Web.HttpContext.Current.Request.QueryString["signature"].Trim();


                string timestamp = System.Web.HttpContext.Current.Request.QueryString["timestamp"] == null ? "" : System.Web.HttpContext.Current.Request.QueryString["timestamp"].Trim();
                string nonce = System.Web.HttpContext.Current.Request.QueryString["nonce"] == null ? "" : System.Web.HttpContext.Current.Request.QueryString["nonce"].Trim();


                string[] arrTmp = { token, timestamp, nonce };
                Array.Sort(arrTmp);
                string tmpStr = string.Join("", arrTmp);
                tmpStr = FormsAuthentication.HashPasswordForStoringInConfigFile(tmpStr, "SHA1");//对该字符串进行sha1加密
                tmpStr = tmpStr.ToLower();//对字符串中的字母部分进行小写转换,非字母字符不作处理
                Log.WriteLog("checkSignature temStr=" + tmpStr);
                Log.WriteLog(" CheckSignature Signature=" + signature);
                return tmpStr == signature; //开发者获得加密后的字符串可与signature对比


            }


            #region 第一次接入时验证


            /// <summary>
            /// 第一次接入时验证
            /// </summary>
            /// <param name="token">用户在公众平台填写的token</param>
            public static void Valid(string token)
            {
                Log.WriteLog("echoStr=" + System.Web.HttpContext.Current.Request.QueryString["echoStr"]);
                if (System.Web.HttpContext.Current.Request.QueryString["echoStr"] == null)
                {
                    System.Web.HttpContext.Current.Response.Write("Null");
                    System.Web.HttpContext.Current.Response.End();
                    return;
                }
                string echoStr = System.Web.HttpContext.Current.Request.QueryString["echoStr"].ToString();
                if (CheckSignature(token))
                {
                    if (!string.IsNullOrEmpty(echoStr))
                    {
                        System.Web.HttpContext.Current.Response.Write(echoStr);
                        System.Web.HttpContext.Current.Response.End();
                        return;
                    }
                }
                else
                {
                    System.Web.HttpContext.Current.Response.Write(System.Guid.NewGuid().ToString());
                    System.Web.HttpContext.Current.Response.End();
                }
            }
            #endregion
            public bool IsReusable
            {
                get
                {
                    return false;
                }
            }
        }


    里面的 string token = ConfigurationManager.AppSettings["WeixinToken"]; 我是把Token 放在了配置文件web.config中了,如果不懂怎么加,自己百度。

    里面的 这个函数用来处理用户发过来的消息,微信公众号做出的回应。在初次写的时候容易报错,建议写日志,记录错误的地方!

    private void Handle(string postStr)
            {
                messageHelp help = new messageHelp();
                help.ReturnMessage(postStr);
                Log.WriteLog("Handle='"+postStr+"'");
            }

    以下是Log日志的类:

      public class Log
        {
            public static  void WriteLog(string text)
            {


                string Path = System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase + "日志";
                try
                {
                    
                            if (Directory.Exists(Path))
                            {
                                String LogText = Path + "\\" + DateTime.Now.ToLongDateString() + ".txt";
                                FileInfo fileinfo = new FileInfo(LogText);
                                if (!fileinfo.Exists)
                                {
                                    FileStream filestream = File.Create(LogText);
                                    filestream.Flush();
                                    filestream.Close();
                                }
                                StreamWriter streamwrite = new StreamWriter(LogText, true, Encoding.GetEncoding("GB2312"));
                                streamwrite.WriteLine("<<["+DateTime.Now.ToLocalTime()+"]>> " +text);
                                streamwrite.Flush();
                                streamwrite.Close();
                            }
                            else
                            {
                                Directory.CreateDirectory(Path);
                                String LogText = Path + "\\" + DateTime.Now.ToLongDateString() + ".txt";
                                FileStream filestream = File.Create(LogText);
                                filestream.Flush();
                                filestream.Close();
                                StreamWriter streamwrite = new StreamWriter(LogText, false, Encoding.GetEncoding("GB2312"));
                                streamwrite.WriteLine("<<["+DateTime.Now.ToLocalTime()+"]>> "+text);
                                streamwrite.Flush();
                                streamwrite.Close();
                            }
                        
                }
                catch (Exception Ts)
                {
                    HttpContext.Current.Response.Write("对发生的错误表示抱歉!请联系:管理员,阐述发生错误时的具体操作过程和错误序号!" + Ts.ToString());
                }
                finally
                {


                }


            }
        }


    接下来讲解messageHelp help = new messageHelp();类,这个类中主要处理用户发过来的消息,接收的消息为XML数据包可以查看网址:http://mp.weixin.qq.com/wiki/10/79502792eef98d6e0c6e1739da387346.html

    以下为代码:

     public class messageHelp
        {
            //返回消息
            public void ReturnMessage(string postStr)
            {
               // string responseContent = "";
                XmlDocument xmldoc = new XmlDocument();
                xmldoc.Load(new System.IO.MemoryStream(System.Text.Encoding.UTF8.GetBytes(postStr)));
                XmlNode MsgType = xmldoc.SelectSingleNode("/xml/MsgType");
                if (MsgType!=null)
                {
                    switch (MsgType.InnerText)
                    {
                        case "event": 
                            EventHandle(xmldoc);  //事件
                            break;
                        case "text":         
                            TextHandle(xmldoc);//文本
                            break;
                        case "image":
                            Log.WriteLog("Image");
                            //responseContent = ImageHandle(xmldoc);//图片
                            ImageHandle(xmldoc);
                            //responseContent = "无法响应!";
                            break;
                        case "voice":
                            //responseContent = VoiceHandle(xmldoc);//接收声音消息处理
                            VoiceHandle(xmldoc);
                            break;
                        case "location":

    //地理位置处理
                            LocationHandle(xmldoc);
                            break;
                            
                        default:
                            break;
                    }
                }
               // return responseContent;
            }

       //接受文本消息
            public void  TextHandle(XmlDocument xmldoc)
            {
                string responseContent = "";
                XmlNode ToUserName = xmldoc.SelectSingleNode("/xml/ToUserName");
                XmlNode FromUserName = xmldoc.SelectSingleNode("/xml/FromUserName");
                XmlNode Content = xmldoc.SelectSingleNode("/xml/Content");
                Log.WriteLog(ToUserName.InnerText);
                Log.WriteLog(FromUserName.InnerText);
                Log.WriteLog(Content.InnerText);
                if (Content != null)
                {
                    if (Content.InnerText.Trim() == "?")
                    {
                        responseContent = string.Format(ReplyType.Message_Text,
                       FromUserName.InnerText,
                       ToUserName.InnerText,
                       DateTime.Now.Ticks,
                       "请问您需要什么帮助");
                    }
                    else if (Content.InnerText == "1")
                    {
                        responseContent = string.Format(ReplyType.Message_Text,
                       FromUserName.InnerText,
                       ToUserName.InnerText,
                       DateTime.Now.Ticks,
                       "哈哈哈");
                    }
                    
                    else
                    {
                        responseContent = string.Format(ReplyType.Message_Text,
                            FromUserName.InnerText,
                            ToUserName.InnerText,
                            DateTime.Now.Ticks,


                            "欢迎
    来到***科技有限公司,您输入的内容为:" + Content.InnerText + "\r\n<a href=\"www.baidu.com">点击进入</a>");
                    }
                }
                //return responseContent;
                HttpContext.Current.Response.ContentEncoding = Encoding.UTF8;


                HttpContext.Current.Response.Write(responseContent);
            }
               
    }

     //回复类型
        public class ReplyType
        {
            /// <summary>
            /// 普通文本消息
            /// </summary>
            public static string Message_Text
            {
                get { return @"<xml>
                                <ToUserName><![CDATA[{0}]]></ToUserName>
                                <FromUserName><![CDATA[{1}]]></FromUserName>
                                <CreateTime>{2}</CreateTime>
                                <MsgType><![CDATA[text]]></MsgType>
                                <Content><![CDATA[{3}]]></Content>
                                </xml>"; }
            }
            /// <summary>
            /// 图文消息主体
            /// </summary>
            public static string Message_News_Main
            {
                get
                {
                    return @"<xml>
                                <ToUserName><![CDATA[{0}]]></ToUserName>
                                <FromUserName><![CDATA[{1}]]></FromUserName>
                                <CreateTime>{2}</CreateTime>
                                <MsgType><![CDATA[news]]></MsgType>
                                <ArticleCount>{3}</ArticleCount>
                                <Articles>
                                {4}
                                </Articles>
                                </xml> ";
                }
            }
            /// <summary>
            /// 图文消息项
            /// </summary>
            public static string Message_News_Item
            {
                get
                {
                    return @"<item>
                                <Title><![CDATA[{0}]]></Title> 
                                <Description><![CDATA[{1}]]></Description>
                                <PicUrl><![CDATA[{2}]]></PicUrl>
                                <Url><![CDATA[{3}]]></Url>
                                </item>";
                }
            }


            public static string Message_Image
            {
                get
                {
                    return @"<xml>
                                <ToUserName><![CDATA[{0}]]></ToUserName>
                                <FromUserName><![CDATA[{1}]]></FromUserName>
                                <CreateTime>{2}</CreateTime>
                                <MsgType><![CDATA[image]]></MsgType>
                                <Image>
                                <MediaId><![CDATA[{3}]]></MediaId>
                                </Image>
                                </xml>";
                }
            }


            public static string Message_Voice
            {
                get
                {
                    return @"<xml>
                        <ToUserName><![CDATA[{0}]]></ToUserName>
                        <FromUserName><![CDATA[{1}]]></FromUserName>
                        <CreateTime>{2}</CreateTime>
                        <MsgType><![CDATA[voice]]></MsgType>
                        <Voice>
                        <MediaId><![CDATA[{3}]]></MediaId>
                        </Voice>
                        </xml>";
                }
            }
        }

    以上就是就可以运行了!

    以上只是一部分,有时间再写!

    展开全文
  • 最新 价值15K的大型微信二次开发框架源码免费供大家开发学习。 功能涵盖现有所有微信开发接口,功能丰富,供各位微信开发的朋友下载学习。 代码已经过调试,在本地可以直接运行,后台登录账号:admin,密码:admin...
  • 微信二次开发

    2018-04-12 22:10:34
    大家好,我是最近才开始学习微信二次开发的小白,怕自己会忘掉就给大家总结一下我的经验。有什么不足之处请告知,感激不尽~~!第一步: 申请一个属于自己的微信公众号 首先登录微信公众平台 ,浏览器中打开网址:...

    大家好,我是最近才开始学习微信二次开发的小白,怕自己会忘掉就给大家总结一下我的经验。有什么不足之处请告知,感激不尽~~!
    第一步:  申请一个属于自己的微信公众号  

        首先登录微信公众平台 ,浏览器中打开网址:http://mp.weixin.qq.com 点击立即注册,如下图

    然后点开立即注册就可以注册我们的微信公众号了。其中邮箱的激活以及公众号类型的选择就不多说了,是个人应该都能看懂,我就说一下需要注意的事项:

        (1):公众号类型的选择一定要慎重!因为这个是不能更改的,类型都分为
                           
                         企业号:微信为企业客户提供的移动应用入口、简化管理流程,提升组织协同动作效率;帮助企业建立员工、上下游供应链与企业IT系统间的连接。适用人群:企业、政府、事业单位或其他组织。
                            服务号:服务号开放的接口比较多,主要针对于企业、以服务功能型为主的账号,功能强大,但不需要过多推送内容,以服务为主,给企业和组织提供更强大的服务与用户管理能力,帮助企业实现全新的公众号服务平台,如招行信用卡、南方航空。很多企业也会选择服务号与订阅号同时建立来满足不同的需求主要用于服务。适用人群:媒体、企业、政府或其他组织。
                            订阅号:主要用于推广。多是一些媒体、自媒体、公司市场、品牌、宣传使用,为媒体和个人提供一种新的信息传播方式,构建与读者之间更好的沟通和管理模式。订阅号还分个人订阅号和企业组织类的订阅号,个人号无法认证,请申请企业类的账号,才能获得更多权限和排名的优化。适用人群:个人、媒体、政府或其他组织。

        (2)用我们微信号注册的时候一定是绑定自己手机号的微信,并且手机号还能用,需要输验证码的,并且这个微信号还得绑定你自己的银行卡,这些条件必须满足,相信我,我为此困惑的好久。
    话不多说,继续。

    第二步:检验公众号的发布
            申请了那么久总得看一下自己的成果才放心吧,这时候就需要从手机上搜索一下微信公众号了,看是否能搜索到。
        
        不过这个时候大多是搜不到的,这时候就需要到我们的微信公众平台找它的二维码了,只要扫一扫关注一下就可以一马平川了!具体步骤,直接上图!

    先讲到这里吧,待我更新!

    展开全文
  • 想必大家都听说过微信二次开发,那么什么是微信二次开发呢?如何进行微信二次开发呢?下面就由艺形艺意工作室创始人黎想将从3W角度为大家详细介绍什么是微信二次开发,如何进行微信二次开发。那么也请大家带着这个...

    近年来,随着微信业务的突飞猛进,微信可谓是开创了中国即时通讯业的又一先河。想必大家都听说过微信二次开发,那么什么是微信二次开发呢?如何进行微信二次开发呢?下面就由艺形艺意工作室创始人黎想将从3W角度为大家详细介绍什么是微信二次开发,如何进行微信二次开发。那么也请大家带着这个问题和我一起看下去!

    因为微信庞大的用户群,间接意义上是企业搭建了一个良好的营销推广平台,所以许多个人、企业都纷纷借助微信开展了属于自己的微信模块业务,最常见的一类便是微商,这也是最基础的一类。

    什么是微信二次开发?

    所谓的微信二次开发,其实就是在微信上面建设自己需要的一些板块,而这些板块是原先并没有的,微信团队留给用户的一块开垦地,也就是微信二次开发。例如大转盘、刮刮乐等这些功能也属于二次开发,微信二次开发是微信营销的营销神器,通过开发一些互动功能,促进客户的粘度,跟客户一对一的交流了解客户最真实的需求。

    为什么要进行微信二次开发?

    如果微信公众号不进行开发,只是用免费的功能每天发布一些广告、新闻、动态长此以往客户潜意识就认为你这打广告没有任何的实力。微信公众号认证后可以加上企业简介、企业动态、产品图片、团队介绍等这些栏目,一:可以向可以展示我们公司的实力,二:可以提高客户对我们的信任度,三:可以和客户进行互动不再是需要你点击1或是2等待系统给你回复了。其次:可以加入微官网、微活动、微服务、微相册、会员系统、留言系统等可以更好的跟客户交流,了解客户的需求以便达成交易。

    微信二次开发的意义何在?

    1、通过微信公众平台的二次开发,将企业品牌展示给微信用户,减少宣传成本,建立企业与消费者、客户的一对一互动和沟通,将消费者接入企业CRM系统,进行促销、推广、宣传、售后等,形成了一种主流的线上线下微信互动营销方式。
    2、再小的个体也有自己品牌,提升企业品牌知名度
    3、顺应时代,积极创新

    微信营销是互联网经济时代企业营销模式的又一次创新,是伴随着微信的火热而兴起的一种新型网络营销模式。微信突破了时间、距离的限制,用户注册微信后,可与周围同样注册的“朋友”形成一种联系,用户订阅自己所需的信息,商家通过提供用户需要的信息,推广自己的产品,从而实现点对点的精准营销。
    微信营销主要体现在商家通过微信公众平台,结合微信会员卡展示商家微官网、微会员、微推送、微支付、微活动,已经形成了一种主流的线上线下微信互动营销方式。

    最后,在和大家分享一下微信二次开发常用功能有哪些?

    (一)微信官网
    1、公司介绍:支持多级分类;
    2、产品展示:产品支持多图显示,手指滑动浏览图片;
    3、新闻资讯:对接微信公众平台消息推送;
    4、联系方式:LBS地图位置标注,点击电话号码直接拨打;
    5、信息推送:以微信官方规定的消息推送为标准

    (二)微信客服
    1、智能客服:实现多个人工客服在线与微信公众平台客户沟通;
    2、LBS位置服务:用户经过微信提供位置,公众平台自动应答离用户最近的地方;
    3、建议/投诉/售后:微信平台内嵌售后服务表单。

    (三)微信商城
    1、在线订购:支持现有商城系统进行对接;
    2、会员系统:支持现有会员系统进行对接;
    3、在线支付:支持在线支付功能,若无需在线支付,则只记录订单信息与流程。

    2018年9月30日,即日起至12月底,用户在韩国、日本、新加坡、泰国、澳大利亚、新西兰等地的微信支付合作门店,再次彰显了微信的未来发展趋势是势不可挡!

    展开全文
  • 微信二次开发接口

    2019-11-08 14:01:48
    安卓微信的api,个人微信开发API协议,微信 ipad sdk,微信ipad协议,微信web版接口api,微信网页版接口,微信电脑版sdk,微信开发sdk,微信开发API,微信协议,微信接口文档sdk,替代微信ipad协议的api接口,网页...

    安卓微信的api,个人微信开发API协议,微信 ipad sdk,微信ipad协议,微信web版接口api,微信网页版接口,微信电脑版sdk,微信开发sdk,微信开发API,微信协议,微信接口文档sdk,替代微信ipad协议的api接口,网页个人微信api分享,微信机器人SDK接口API,个人微信号API接口,微信群API接口

    1、基础消息类型
    1、客户端发送的心跳包HeartBeatReq = 1001; 
    2、消息接收确认回复(接收或拒绝接收)MsgReceivedAck = 1002; 
    3、错误单独提升为一种消息类型Error = 1003; 
    4、通用任务执行结果通知TaskResultNotice = 1025; 
    2、设备客户端授权类消息
    1、设备(手机客户端、客服客户端)获取通信token请求与响应DeviceAuthReq = 1010; 
    设备(手机客户端、客服客户端)获取通信token响应DeviceAuthRsp = 1011;
    2、设备授权后退出(仅用于服务端内部)DeviceExitNotice = 1012; 
    3、账号强制下线通知 AccountForceOfflineNotice = 1013; 
    3、手机客户端上传的通知类消息
    1、手机客户端微信上线通知 WeChatOnlineNotice = 1020; 
    2、手机客户端微信下线通知 WeChatOfflineNotice = 1021; 
    3、微信个人号新增好友通知FriendAddNotice = 1022;
    4、微信个人号移除好友通知FriendDelNotice = 1023; 
    5、微信好友发来聊天消息通知FriendTalkNotice = 1024; 
    6、手机上回复好友的聊天消息通知WeChatTalkToFriendNotice = 1026; 
    7、有好友请求添加好友的通知FriendAddReqeustNotice = 1027; 
    8、手机上发送了朋友圈通知CircleNewPublishNotice = 1031; 
    9、手机上删除朋友圈返回通知CircleDelNotice = 1032; 
    10、手机检测到有人点赞/取消点赞通知CircleLikeNotice = 1033; 
    11、手机检测到有人评论/删除朋友圈通知CircleCommentNotice = 1034; 
    12、消息标记为已读PostMessageReadNotice = 1035; 
    13、群聊新增通知ChatRoomAddNotice = 1037; 
    14、群聊信息变更通知ChatRoomChangedNotice = 1042;
    15、群聊删除通知返回ChatRoomDelNotice = 1041; 
    16、联系人标签新增,修改通知ContactLabelAddNotice = 1038; 
    17、联系人标签删除通知ContactLabelDelNotice = 1044; // 联系人标签删除通知
    18、新增公众号通知BizContactAddNotice = 2038; // 新增公众号通知
    19、手机端推送当前sdk的安装版本通知PostDeviceInfoNotice = 2027; 
    4、服务端、客服客户端发给设备的指令类消息(sdk咨询微信836869520)
    1、给好友发消息任务TalkToFriendTask = 1070; 
    返回聊天执行结果TalkToFriendTaskResultNotice = 1028; 
    2、发送朋友圈任务及结果返回PostSNSNewsTask = 1071; 
    返回发送朋友圈数据结果PostSNSNewsTaskResultNotice = 1073; 
    3、删除朋友圈任务与结果返回DeleteSNSNewsTask = 1074; 
    返回通用任务执行结果
    4、主动添加好友任务及返回结果AddFriendsTask = 1072; 
    返回通用任务执行结果
    5、接受好友请求任务及返回结果AcceptFriendAddRequestTask = 1075; 
    返回通用任务执行结果
    6、群发消息任务WeChatGroupSendTask = 1076; 
    返回通用任务执行结果
    7、执行养号动作命令任务WeChatMaintenanceTask = 1077; 
    返回通用任务执行结果
    8、养号任务停止任务及返回结果PostStopWeChatMaintenanceTask = 1100; 
    返回通用任务执行结果
    9、清粉任务及返回结果PostFriendDetectTask = 1095; 
    返回:每隔一段时间手机端回传检测清粉好友数PostFriendDetectCountNotice = 2028; 
    10、终止清粉任务及返回结果PostStopFriendDetectTask = 1096; 
    返回通用任务执行结果
    11、请求聊天图片或视频消息的详细内容任务与结果返回RequestTalkDetailTask = 1078; 
    返回聊天图片或视频消息的详细内容结果RequestTalkDetailTaskResultNotice = 1029; 
    12、要求手机上传当前微信二维码任务及返回PullWeChatQrCodeTask = 1079; 
    返回手机端微信的二维码PullWeChatQrCodeTaskResultNotice = 1030; 
    13、触发手机推送好友列表任务及结果返回TriggerFriendPushTask = 1080; 
    返回一:手机端推送好友列表(分页,每页100)FriendPushNotice = 2026;
    返回二:手机端推送标签列表
    14、触发手机推送朋友圈列表任务及结果返回TriggerCirclePushTask = 1081; 
    返回手机朋友圈数据(分页,每页20)CirclePushNotice = 2029; 
    15、朋友圈评论删除任务及结果返回CircleCommentDeleteTask = 1082; 
    朋友圈评论删除任务反馈 CircleCommentDeleteTaskResultNotice = 1083; 
    16、朋友圈评论回复任务及结果返回CircleCommentReplyTask = 1084; 
    朋友圈评论回复反馈CircleCommentReplyTaskResultNotice = 1085; 
    17、通知手机将某个聊天窗口置为已读TriggerMessageReadTask = 1086; 
    无返回
    18、消息撤回任务RevokeMessageTask = 1087; 
    返回通用任务执行结果
    19、转发消息任务ForwardMessageTask = 1088;
    返回通用任务执行结果
    20、通知手机推送历史聊天记录任务及返回TriggerHistoryMsgPushTask = 1089; 
    返回历史消息(分页,每页50)HistoryMsgPushNotice = 2033; 
    21、获取群聊二维码任务及结果返回PullChatRoomQrCodeTask = 1090; 
    返回群二维码PullChatRoomQrCodeTaskResultNotice = 1043;
    22、朋友圈点赞任务及结果返回PostMomentsPraiseTask = 1098; 
    返回朋友圈点赞数量PostMomentsPraiseCountNotice = 2030; 
    23、停止朋友圈点赞任务PostStopMomentsPraiseTask = 1099; 
    返回通用任务执行结果
    24、修改联系人备注任务ModifyFriendMemoTask = 1101; 
    返回通用任务执行结果
    25、领取红包或转账收钱任务及返回TakeLuckyMoneyTask = 1200; 
    返回收钱任务执行结果TakeMoneyTaskResultNotice = 1039; 
    26、获取指定好友朋友圈任务及返回PullFriendCircleTask = 1201; 
    返回手机朋友圈数据CirclePushNotice = 2029; 
    27、获取朋友圈的图片任务及返回PullCircleDetailTask = 1202; 
    返回朋友圈图片上传信息CircleDetailNotice = 1040; 
    28、单条朋友圈点赞任务CircleLikeTask = 1203; 
    返回通用任务执行结果
    29、触发手机推送群聊列表任务及结果返回TriggerChatroomPushTask = 1210; 
    返回一:手机端推送群聊列表(分页,每页2个)ChatroomPushNotice = 2031; 
    返回二:群成员(陌生人)信息列表(分页,每页100)ChatRoomMembersNotice = 2034; 
    30、请求具体群聊的详细信息任务RequestChatRoomInfoTask = 1211; 
    返回ChatRoomAddNotice 群聊新增通知
    31、获取联系人详细信息任务及返回
    (不一定是好友,如群聊成员)RequestContactsInfoTask = 1212; 
    返回联系人信息ContactsInfoNotice = 1036; 
    32、群聊管理任务及返回ChatRoomActionTask = 1213; 
    返回通用任务执行结果
    返回群聊通知类返回结果
    33、群内加好友任务AddFriendInChatRoomTask = 1214;
    返回通用任务执行结果
    34、通讯录加好友任务AddFriendFromPhonebookTask = 1215; 
    返回通用任务执行结果
    35、删除好友任务及返回DeleteFriendTask = 1216;  
    返回通用任务执行结果
    微信个人号移除好友通知
    36、发红包任务及返回  
    github地址https://www.wuliaokankan.cn/url301/138.html

    SendLuckyMoneyTask = 1217; 返回:通用任务执行结果,成功ErrMsg=sendId
    37、获取聊天消息的原始内容(主要是xml内容)任务及返回RequestTalkContentTask = 1218; 
    返回聊天消息的原始内容RequestTalkContentTaskResultNotice = 1219; 
    38、转发消息内容任务及返回ForwardMessageByContentTask = 1220; 
    返回通用任务执行结果
    39、群主通过入群申请任务及返回ChatRoomInviteApproveTask = 1221;
    返回通用任务执行结果
    40、设置联系人标签任务及返回ContactLabelTask = 1224; // 设置联系人标签
    返回联系人标签新增,修改通知;
    返回通用任务执行结果
    41、删除联系人标签任务及返回ContactLabelDeleteTask = 1225; // 删除联系人标签
    返回通用任务执行结果
    返回联系人标签删除通知
    42、语音消息转文字命令及返回VoiceTransTextTask = 1226; // 语音消息转文字
    返回:通用任务执行结果,成功ErrMsg=文字内容
    43、查找微信联系人任务及返回FindContactTask = 1227; // 查找微信联系人
    返回查找微信联系人结果
    FindContactTaskResult = 1228; // 查找微信联系人结果
    44、同意加入群聊命令及返回AgreeJoinChatRoomTask = 1229; // 同意加入群聊
    返回通用任务执行结果
    45、清空聊天记录任务及返回ClearAllChatMsgTask= 1230; // 清空聊天记录
    返回通用任务执行结果
    46、聊天界面发送朋友验证任务及返回(别人把你删掉了,你发消息会出现一个发送朋友验证的链接,此处有用到)
    返回通用任务执行结果
    47、获取会话列表任务及返回TriggerConversationPushTask = 1232; // 会话列表推送
    返回聊天会话列表(分页)ConversationPushNotice = 2035; // 会话列表
    48、微信设置(改昵称,头像)任务及返回WechatSettingTask = 1233; // 微信设置:改昵称,头像
    返回通用任务执行结果
    49、获取加好友请求列表任务及返回结果PullFriendAddReqListTask = 1234; //获取加好友请求列表
    返回请求加好友列表FriendAddReqListNotice = 2036; // 加好友请求列表
    50、获取公众号列表任务及结果返回TriggerBizContactPushTask = 1235; // 获取公众号列表
    返回公众号列表BizContactPushNotice = 2037; // 公众号列表推送
    51、获取时间段内的所有聊天消息msgSvrId及结果返回TriggerChatMsgIdsPushTask = 1251;
    52、名片加好友任务及结果返回AddFriendNameCardTask = 1236; // 名片加好友
    返回通用任务执行结果
    53、根据msgSvrId获取聊天消息及结果返回RequestTalkMsgTask = 1252;  // 根据msgSvrId获取聊天消息
    返回RequestTalkMsgTaskResultNotice = 1253;  
    5、服务端通知执行的命令 微信sdk
    1、微信账号登出命令WechatLogoutTask = 1222;
    无返回;微信退出会触发微信离线通知(WeChatOfflineNoticeMessage)
    2、手机操作指令(重启手机等)PhoneActionTask = 1223; // 手机操作指令
    返回:通用任务执行结果,(上传本地文件:ErrMsg=文件url)
    3、通知手机客户端软件升级UpgradeDeviceAppNotice = 1094; 
    无返回
    4、服务端删除设备通知手机端PostDeleteDeviceNotice = 1097; 
    无返回
    安卓微信的api,个人微信开发API协议,微信 ipad sdk,微信ipad协议,微信web版接口api,微信网页版接口,微信电脑版sdk,微信开发sdk,微信开发API,微信协议,微信接口文档sdk,替代微信ipad协议的api接口,网页个人微信api分享,微信机器人SDK接口API,个人微信号API接口,微信群API接口


    展开全文
  • 自学微信二次开发(1)

    2016-03-15 20:12:46
    二次开发微信,首先要成为微信开发者,在微信开发者平台注册,还要注册一个微信公众号,注册过程很简单,唯一的要求就是要绑定银行卡的微信账号扫一下二维码.然后就能注册成功微信公众号了. 在注册微信公众号之后有两...

    在二次开发微信,首先要成为微信开发者,在微信开发者平台注册,还要注册一个微信公众号,注册过程很简单,唯一的要求就是要绑定银行卡的微信账号扫一下二维码.然后就能注册成功微信公众号了.
    在注册微信公众号之后有两种模式,一个是编辑模式,还有一个就是开发者模式.编辑模式其实也是一个后台操作的过程,在编辑模式下基本上一些基本的功能都能实现,像关键字回复,被关注的时候回复,还有订阅号每天能够推送一条信息给关注此微信的人,这些功能都能符合宣传人的功能,但是我们是开发者,怎么能满足于这些了,我们要动态信息,比如像用户发送一个地名回复那个地名的天气等.
    在正式开发的过程中我们首先要搭建好我们的环境,首先我是准备将我的项目上传到百度BAE上面,需要费用,但是每天只要四毛钱,但是我首先还是没有直接将应用上传上去,我是使用一个工具将我自己的ip地址映射到公网上面去的,然后自己打开tomcat,通过映射的地址就能访问到我电脑的应用.
    前面有一个很好用的工具,但是现在好像是没用了,我是用的这个ngrok.exe,这个工具的服务器是在美国所以用起来有点慢,但是我觉得是很是适合我们初学者使用,错误能在MyEclipse控制台打印.便于调错!
    使用方法:
    打开cmd,将目录切到此工具的目录下面
    输入nrgok 端口号(tomcat的端口号)然后回车:
    然后就会显示映射的地址了
    复制http:一直到->前就是你将本地的应用映射到公网的网址了,加上你的项目名,就能访问到应用了
    这就是ngrok
    输入指令
    然后在开启开发者模式首先要这几个步骤:
    第一步:填写服务器配置:
    将映射的地址接上项目名然后加上servlet的访问名字
    第二步:验证服务器地址的有效性
    由于验证是GET方法,所以在servlet中doGet()方法中实现:
    第三步:依据接口文档实现业务逻辑
    验证的具体步骤:
    1.在doGet方法中获取到微信服务器中发过去的数据,有这几个数据:
    signature:微信加密签名,signature结合了开发者填写的token参数和请求中的timestamp参数、nonce参数。
    timestamp:时间戳
    nonce::随机数
    echostr:随机字符串
    2.在request中获取到这几个数据后,创建一个验证的方法传入signature,nonce,timestamp,创建一个token(可以随便写,但是要和微信填写url的时候的token是一样的)
    3.验证方法:
    贴代码吧:

    private static final String TOKEN="weixin";
        public static boolean cheackWeinxi(String signature,String nonce,String timestamp){
            //将数据存到一个数组中
            String[] arr=new String[]{TOKEN,timestamp,nonce};
            //排序
            Arrays.sort(arr);
            //生成字符串
            StringBuffer sbf=new StringBuffer();
            for(int i=0;i<arr.length;i++){
                sbf.append(arr[i]);
            }
            String content=sbf.toString();
            String con=null;
            try {
                MessageDigest md=MessageDigest.getInstance("SHA-1");
                //拼接后额字符串进行sha1
                byte[] digest=md.digest(content.toString().getBytes());
                con=byteTOStr(digest);
            } catch (NoSuchAlgorithmException e) {
                e.printStackTrace();
            }
            return con.equals(signature.toUpperCase());
        }
        private static final char[] HEX_DIGITS = {'0', '1', '2', '3', '4', '5',  
             '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'}; 
        private static String byteTOStr(byte[] arrs){
            String strs="";
            for(int i=0;i<arrs.length;i++){
                strs+=byteToHexStr(arrs[i]);
            }
            return strs;
        }
        /**
         * 将字节转换成十六进制的字符
         * @param by
         * @return
         */
        private static String byteToHexStr(byte by){
            char[] tempArr=new char[2];
            tempArr[0]=HEX_DIGITS[(by>>>4) & 0X0F];
            tempArr[1]=HEX_DIGITS[by & 0X0F];
            String s=new String(tempArr);
            return s;
        }
    
        private static String getFormattedText(byte[] bytes) {  
            int len = bytes.length;  
            StringBuilder buf = new StringBuilder(len * 2);  
            // 把密文转换成十六进制的字符串形式  
            for (int j = 0; j < len; j++) {  
                buf.append(HEX_DIGITS[(bytes[j] >> 4) & 0X0F]);  
                buf.append(HEX_DIGITS[bytes[j] & 0X0F]);  
            }  
            return buf.toString();  
        }  
    
        public static String encode(String str) {  
            if (str == null) {  
                return null;  
            }  
            try {  
                MessageDigest messageDigest = MessageDigest.getInstance("SHA-1");  
                messageDigest.update(str.getBytes());  
                return getFormattedText(messageDigest.digest());  
            } catch (Exception e) {  
                throw new RuntimeException(e);  
            }  
        }  

    在servlet中判断,如果是真则返回echostr,则验证成功,
    然后在微信的后台会提醒你验证成功!
    写这个博客只是让我以后没有事可以看看,不喜勿喷!

    展开全文
  • 这是众多使用微信公众平台的商家企业需要深入思考的问题,微信公众平台自带的很多功能,但难以满足所有企业的不同特定化的需求,所以企业需要通过微信公共平台二次开发来实现更多功能需求,使得微信公众平台更好的为...
  • 微信公众号二次开发

    2020-07-22 23:32:55
    微信二次开发,亲测可用,微信二次开发,亲测可用,微信二次开发,亲测可用,微信二次开发,亲测可用,微信二次开发,亲测可用,微信二次开发,亲测可用,微信二次开发,亲测可用,微信二次开发,亲测可用,微信二次...
  • 微信二次开发sdk

    2019-05-29 15:23:39
    今天给大家介绍如何使用聚播群控sdk(微信二次开发SDK)快速开发一个微信多客服系统!使用此SDK也可以实现群控系统、云控系统、微信scrm客服系统、淘宝客微信发单机器人、导购返利机器人、微信群管理机器人的定制...
  • Java微信二次开发(一) 开发前的准备 本次介绍在微信二次开发之前需要做哪些准备,当然这些准备可能并不是唯一的途径,我仅仅是将自己认为比较方便快捷的方式介绍给大家。 一、首先介绍的是内网穿透工具natapp ...
  • 微信二次开发SDK

    2019-01-09 09:47:27
    微信二次开发SDK 本SDK适用于微信营销软件研发、微信营销手机研发、微信手机群控系统研发、云控系统研发、微信客服系统研发、微信营销系统研发、微客微商营销工具研发等。快速实现微信的二次开发,轻松开发出上述...
  • 因为有点事,不得不暂停微信二次开发的学习,等过了这段时间还会继续的
  • 学习微信二次开发已经有一段时间了,现在我们学习了微信中的关键词自动回复,学习它的都知道不管回复图片、回复图文、音乐、还有视频。这些都属于媒体,上传到微信服务器后都会生成一个MediaID,相当于每个文件的&...
  • 微信二次开发源码案例(C#,PHP,java,Python,c++)语言全,我本人使用的,分享给大家
  • 最新 价值15K的大型微信二次开发框架源码免费供大家开发学习。 功能涵盖现有所有微信开发接口,功能丰富,供各位微信开发的朋友下载学习。 代码已经过调试,在本地可以直接运行,后台登录账号:admin,密码:admin...
  • 微信开发 公众号开发 OAuth2.0 微信二次开发 微信 java 代码,保护微信OAuth2.0授权 微信自定义菜单 微信回复图文消息 微信动态回复内容 微信开发即微信公众平台开发,将企业信息、服务、活动等内容通过微信网页的...
  • MAC下基于java和tomcat的微信二次开发环境配置
  • 本文档基于腾讯公司微信二次开发的相关规范,对微信二次开发的流程、步骤做了相关的说明,方便程序设计和开发人员快速掌握微信公众平台开发技术,便于提高代码的编写效率以及减少出现错误概率。 使用范围 本...
  • 微信平台 二次开发 开源社区 视频演示
  • 微信二次开发基础部分.avi 01-18 Java微信二次开发微信验证.wmv 01-19 Java微信二次开发智能机器人.wmv 03-04-java微信二次开发公开课-微信公众号平台.wmv 03-17_基于java的微信订阅号自动回复接口.wmv 03-18_...
1 2 3 4 5 ... 20
收藏数 91,556
精华内容 36,622
关键字:

微信二次开发