微信开发ip怎么解决

2017-12-02 07:29:00 weixin_34244102 阅读数 1109

微信公众平台,作为自媒体的旗舰级产品,越来越多的人已经投入它的怀抱。正如它的广告词所说:再小的个体,也有品牌

好吧,闲话不多说,今天要说的是它的IP白名单机制。

查看白名单

修改白名单

 

我们现在安装的大部分都是电信的家庭宽带,它的公网IP是随机的,当然也可以加钱变成固定IP,也可以通过其他软件映射,都可以变成固定IP

我说的这个方案,也算其中一种吧,就是通过WebAPI方式,把某一台机器的公网IP固定,然后访问公众号的程序部署在这上面,最后这些程序再通过WebAPI方式被其他客户端调用

好了,还是上代码吧

//3,需先将封面上传至目标公众号              
//3.1,下载原公众号中封面图片.判断是否存在?不存在,则下载
//注:需判断文件夹是否存在?若不存在,则创建
string folderName = CurrentAppInfo.AppPath + @"\MaterialFile\thumb\";
if (!Directory.Exists(folderName))
{
    Directory.CreateDirectory(folderName);
}
string fileFullName = folderName + sourceThumbMediaId + ".png";
FileInfo fi = new FileInfo(fileFullName);
if (!fi.Exists)
{
    string sourceAccessToken = this.wxpService.GetAccessToken(this.sourceSourceID);
    Stream imageStream = this.wxpService.GetMaterial(sourceAccessToken, sourceThumbMediaId);
    Image image = Image.FromStream(imageStream);
    Bitmap bitmap = new Bitmap(image);

    bitmap.Save(fileFullName);
}

//3.2,再上传至目标公众号
//此处是上传封面图片
string targetAccessToken = this.wxpService.GetAccessToken(this.targetSourceID);
UploadMaterialApiResultModel modelApiResult1 = this.wxpService.UploadMaterialAny(targetAccessToken, new wxpmaterialBillModel()
{
    IsTemp = "0",
    FileFullName = fi.FullName,
    MaterialType = MaterialType.thumb.ToString()
});
string targetThumbMediaId = modelApiResult1.media_id;

//3,加工数据
wxpapiaccountBillModel modelSourceApiAccount = this.listApiAccount.FirstOrDefault(c => c.SourceID == this.sourceSourceID);
wxpapiaccountBillModel modelTargetApiAccount = this.listApiAccount.FirstOrDefault(c => c.SourceID == this.targetSourceID);
content = content.Replace(modelSourceApiAccount.SourceCode, modelTargetApiAccount.SourceCode);
content = content.Replace(modelSourceApiAccount.SourceName, modelTargetApiAccount.SourceName);

//二维码图片可能有多个,分隔符是:分号
//注:目标地址只获取第1个即可
string[] qrcodeUrl1s = modelSourceApiAccount.QRCodeUrlPath.Split(';');
string qrcodeUrl2 = modelTargetApiAccount.QRCodeUrlPath.Split(';')[0];
foreach (string qrcodeUrl1 in qrcodeUrl1s)
{
    content = content.Replace(qrcodeUrl1, qrcodeUrl2);
}

UploadNewsModel modelUpload = new UploadNewsModel()
{
    title = title,
    author = author,
    digest = digest,
    content = content,
    content_source_url = targetSourceUrl,
    show_cover_pic = "0",
    thumb_media_id = targetThumbMediaId
};

//4,上传素材至目标公众号                
UploadMaterialApiResultModel modelResult = this.wxpService.UploadMaterialNews(targetAccessToken, new List<UploadNewsModel>() { modelUpload });

//4.1,需标记源公众号中此素材已转发
wxpmaterialBillModel modelEditToSource = new wxpmaterialBillModel()
{
    SourceID = this.sourceSourceID,
    MaterialCode = this.sourceMaterialCode,
    IsTranspond = "1",
    ActionName = "SetIsTranspond",
};
this.wxpService.UpdateMaterial(new List<wxpmaterialBillModel>() { modelEditToSource });

 

如上图所示,这是实现图文素材从公众号A复制至公众号B里的代码,这种情况下,我每天在家里打开电脑时,都要在IP白名单中重新设置下电脑的公网IP,不然,会提示

 

改成下面的代码就可以轻松解决,我把程序部署到阿里云上,so easy,换个思路,又是一片新的天空。

copymaterialQueryModel copymaterialParamModel = new Base.Models.copymaterialQueryModel()
{
    sourceSourceID = this.sourceSourceID,
    sourceMaterialCode = this.sourceMaterialCode,
    targetSourceID = this.targetSourceID,
    title = title,
    digest = digest,
    author = author,
    targetSourceUrl = targetSourceUrl,
    wxAccessToken = wxAccessToken
};
UploadMaterialApiResultModel modelResult = WebAPIHelper.WebAPIPostData<UploadMaterialApiResultModel>(ControllerName.WXPublicApi, WXPublicApiActionName.CopyMaterial.ToString(), copymaterialParamModel);

 

最后,发布一个彩蛋,做自媒体的可以看看

Navi.Soft31.微信WinForm框架(含下载地址)  

Navi.Soft31.产品.登录器(永久免费)

 

2014-01-30 10:38:46 walkingmanc 阅读数 155812

     本系列文章属作者原创文章,请尊重作者的劳动成果,转载请注明出处:walkingmanc的专栏 , 谢谢!此外,因为为了完成《如何通过第3方平台搭建微信商城》的教程写作,需要有公众号,有愿意提供公众号试用的 可以联系我,QQ:2319482048,感谢了!



1.   申请微信公众号

    我们要进行微信公众平台的开发,第一步当然是要有公众号了。什么?不知道什么是微信公众号,看来你还要先回炉炼炼了,呵呵。通俗的说,我们微信平台就好像是一个大社会,里面有个体人,也有各种组织机构。你自己使用的普通微信号就是个体人,而公众号就是那些组织,这些组织又分为2类:一类是提供各种信息的,称为订阅号;另一种是提供各种服务的,称为服务号。当然,目前个人只能申请到订阅号,只有组织机构,比如公司等才能申请到服务号。

    订阅号和服务号的区别在哪里呢?简单的说,服务号旨在为用户提供服务。你可以用你自己的微信加一下招商银行的微信号看看就知道什么是服务号了。订阅号旨在为用户提供信息和资讯。典型的例子有“骑行西藏”微信号。

    具体来说,服务号:

1、1个月(30天)内仅可以发送1条群发消息。
2、发给订阅用户(粉丝)的消息,会显示在对方的聊天列表中。
3、在发送消息给用户时,用户将收到即时的消息提醒。
4、服务号会在订阅用户(粉丝)的通讯录中。
5、可申请自定义菜单。
 
    而订阅号:
1、每天(24小时内)可以发送1条群发消息。
2、发给订阅用户(粉丝)的消息,将会显示在对方的订阅号文件夹中。
3、在发送消息给订阅用户(粉丝)时,订阅用户不会收到即时消息提醒。
4、在订阅用户(粉丝)的通讯录中,订阅号将被放入订阅号文件夹中。
5、订阅号不支持申请自定义菜单。

 

      通过这个比较大家大致有个直观的印象了吧,简单的说,订阅号主要是为粉丝提供各种资讯和新闻的,功能比较简单;而服务号呢,主要是为粉丝提供各种服务的,可以有自定义菜单。而且更重要的一点就是,服务号可以申请到更多的更高级的平台接口。到这里,大家就应该明白了,我们做微信商城,需要申请的是微信服务号。

     对个人开发者,是申请不到服务号的,不过,腾讯还是考虑到了这一点,特意为我们准备了测试帐号,通过这个帐号,我们可以获得微信服务号的所有功能和接口调用权限。

     好了,废话不多说了,接下来就跟着我一步一步的去申请微信测试帐号吧

 

 

1.     打开申请地址:http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login


图片1

    看到上方的说明了吗?无需公众帐号,快速申请接口测试号,直接体验和测试公众平台所有高级接口。很激动吧。只要你输入手机号和验证码,马上就可以申请成功了,申请成功后如下图:


 

    大家注意观察,这个测试号的有效期是1年,而且分配了微信号和二维码。现在就拿起你的手机微信扫描一下刚刚分配给你的二维码图案吧,你会发现马上就可以关注申请到的这个测试公众号了。



    点击关注后,我们可以在订阅号里面找到这个公众号,大家请注意,虽然放在了订阅号里面,但是该测试号基本上可以调用微信平台所有的高级接口(见“可使用接口类别列表”),所以我们的这个测试号对我们是够用的。

 

 

 

2.微信公众平台开发基本原理

    不知大家注意到没有,我们在第一节中的截图中,有个“网站接口配置”的配置项需要填写,其实这个就是微信平台和我们的网站对接的接口的url地址了。




     我们来看这张图。其中左侧蓝色框内部就是微信平台,右侧红色框内部就是我们自己的网站所在的服务器咯。微信平台和网站服务器之间通过接口调用来通信。当微信用户向我们的公众号发生消息时(具体的消息类型以后介绍),微信后台服务器会判断该消息是否是发给我们申请的公众号,如果是,将该消息转发给我们的公众号并向我们配置的网站接口地址发送一个请求消息,我们的网站接受到消息后,进行处理,并将处理的结果(响应消息)发送给微信平台,经过平台的转发,最后显示到微信用户的聊天框。

      这是一次典型的消息交互的过程,有了这个印象之后,我们就明白了,我们要做的工作的重点在于网站服务器端,也就是说:如何接受微信平台发送过来的请求消息,如何进行处理,最后如何返回处理结果给微信平台(图中绿色部分)。

3.服务器环境准备

    我们要想接受并处理微信平台发送过来的消息,当然得有自己的网站服务器了。

所以,接下来我们就要准备我们的网站服务器环境了。

    很多同学喜欢用百度应用引擎BAE,因为是免费申请而且不需要维护,这一点的确是很方便的,但我这里要说的是,我们在开发程序的时候,还是不建议那样做,为什么呢?因为不利于调试。  正常的步骤应该是在我们本地开发调试,没有任何问题之后再放到真正的服务器上去(例如新浪的SAE, 百度BAE等)。还有一个话题,我们开发我们的网站究竟使用什么语言呢?其实只要可以用来开发网站的语言都可以的,例如:Java、PHP、ASP.NET、Ruby、Python、Note.js等。微信平台和我们的网站交互是通过接口调用来实现的,只要我们的网站能对请求消息进行响应就可以了,使用什么语言都无所谓的。当然,看你最擅长哪门语言就使用哪门语言了,因为现在网站开发这一块php用得越来越多,所以我们就选择php作为我们网站的开发语言。

   语言选好了,下一步就是搭建本地的开发环境了。其实本地开发环境的搭建和普通php网站的开发环境的搭建是一样的,如果你不熟悉,可以自己直接到网上去下载一个WAMP套件,安装一下,然后再下载一个eclipse作为开发的工具就可以了。

   那么重点是什么呢?重点就是微信平台和我们本地服务器之间的通信问题。

我们看下面的图:

 

    微信平台调用我们网站是通过这里配置的网站URL和Token来调用的,所以,我们首先需要为我们本地的服务器申请一个url,让外网能通过这个url访问到我们的本地网站。换句话说,就是要能将我们本地电脑上的网站发布到公网上去,让所有人都能访问。

 

3.1 本地网站到公网域名的映射

     想要将自己本地电脑上运行的网站发布到公网,让所有的人都可以访问看起来是很麻烦的一件事情。因为你首先要有一个域名,然后还要在本地的路由器上配置端口映射,而且还要特别注意防火墙的设置。但是,现在我给大家推荐一个非常好的工具:新花生壳动态域名工具。通过这个工具,你不需要设置路由器的端口映射,也不必管防火墙的设置,甚至连域名都不需要申请,因为这一切,新花生壳都已经帮你解决了。好了,闲话还是少说,以免有广告之嫌。那我们正式开始教大家如何将你自己电脑上运行的网站发布到互联网上去让所有人都可以访问。

1.   首先,你在本地要有一个可以运行的网站,如果没有自己新建一个web项目,然后运行起来。例如:我在eclipse新建了一个java的web项目,只有一个jsp页面,并且在tomcat里面启动运行起来。



2.   自己在浏览器输入:localhost:8089/Demo访问一下,看是否能打开首页。(你的url地址可能与我的不同)

3.   能打开的话,接着从这里:https://console.oray.com/passport/register.html 注册一个花生壳的帐号。在这里:http://hsk.oray.com/download/下载“新花生壳客户端”,安装后使用注册号的帐号登录。



4.   登录后,马上就可以看到花生壳帮我们分配的免费2级域名了,我的是:walkingman123.vicp.cc



5.   点击红圈处的图标进行域名诊断,结果出现“成功”字样则表示域名映射成功了。


6.    回到域名列表页面,右键-》新花生壳管理



7.在弹出页面点击添加映射。我们只需要在自定义应用选项卡里面填写我们的本地网站在内网的ip地址和端口号就可以了(注意勾选“开启外网HTTP80端口”),例如我的:


8.点击确定后,通过花生壳给我们分配的2级域名就可以在互联网上的任何地方访问我们的网站了。这样,我们就把我们本地电脑上的web网站放到了互联网上。

 

3.2 填写微信平台的接口配置信息

    接下来,把我们的2级域名填写到接口url里面(注意带应用名称)

Token 自己随意输入一个字符串(主要用于校验,后面会详细说明),例如:wx123

 

    点击提交。

 

    到这里 我们的本地服务器的环境配置就完成了,下一讲我们开始微信平台公众号的开发。

 


2016-12-08 15:19:30 you18131371836 阅读数 1839

一,为什么要用到ngrok?

       各位肯定都知道,做微信开发,我们的开发服务器需要和微信服务器做交互,我们需要准备一台放置在公网的服务器,能够使得我们的服务器可以正常访问微信服务器,并且微信服务器也需要可以正常访问我们的开发服务器。并且我们做开发时的服务器都是放在内网中的,只能通过内网来访问。然而微信服务器无法和我们的内网服务器做交互,这就导致我们做微信开发在本地调试出现了一定的困难!

     今天就向大家介绍一个非常强大的外网映射工具:ngrok.它可以把你的本地ip(127.0.0.1|localhost)映射成一个公网域名,这样所有人都可以通过这个域名来访问你的项目,这个功能对本地调试,特别是微信公众号开发带来了极大的便利.

示例:
http://localhost:8080/项目名/ -> http://**.ngrok.cc/项目名

提醒:微信接口服务只支持80端口,并不支持其他的端口

,准备开发工具

     1.tomcat

     2.ngrok客户端(可以访问官网进行下载,官网地址是:http://www.ngrok.cc)

三,ngrok版本说明

    

此处要介绍三个ngrok版本:ngrok,tunnel,sunny-ngrok.

第一个版本是国外开发的原生ngrok版本,这个版本将我们的本地ip映射到一个二级域名上,这个域名有两种形式:自定义主机名和系统分配主机名(主机名为最左边的部分,比如我们平时经常看到的www).这个版本有两个缺陷:
1.系统分配的主机名是动态分配的,即每一次开启都会不一样,所以每次访问的时候都要记住不一样的域名,这很蛋疼.
2.这个域名是在国外的,所以访问速度会相当慢

第二个版本是国内基于ngrok开发的一个改良版,由于域名在国内,所以解决了访问慢的问题,但是这个版本现在已经无法使用

第三个版本也是国内开发出的一个版本,可以自定义主机名,还可以自定义域名(前提是你有一条域名),很好的解决了原生ngrok的那两条缺陷.

,环境搭建步骤

         我们这里主要来介绍sunny-ngrok版本的搭建方法;

        1、访问ngrok授权管理系统(http://www.ngrok.cc/login),点击注册,注册帐号。

       

        2,注册一个新的账号,如下如所示:

        

 

         3,注册成功以后点击登录进入ngrok授权管理系统的主界面,然后点击左侧菜单栏中的隧道管理----》开通隧道,进入下面的界面,


          

     进入界面以后提供隧道的两种购买方式,一种是付费的,一种是免费(其实两者的区别就是带宽的不同,如果只是做测试用,10M带宽肯定够用)

     然后点击立即购买;将会出现下面的界面

 

      注意:1.隧道协议选择http协议;

                2.填写隧道名称以及前置域名

                3.把上面本地端口改成127.0.0.1:8080

    然后点击确定添加

    4.确定添加成功后跳转到新的界面下,继续点击左侧菜单中的隧道管理,出现下面的界面,并且要复制隧道id

  


  5.下载ngrok的客户端

     访问下面的网址http://www.ngrok.cc就可以下载客户端,如下图所示:


         下载到本地的D盘中,然后解压,如下图所示:





6.输入上文的隧道id,然后回车。如下图所示:



到此ngrok的环境搭建已经完成,下面就是测试,测试的时候在项目中启动tomcat,用http://127.0.0.1:8080/访问能访问到

同时用http://****.ngrok.cc/也能访问到;


7.最后一步就是把该域名配置到微信公众平台上就ok了,大功告成。。。。。。


2017-07-17 14:41:15 XX_LMY 阅读数 425

上来就概述,这个阶段再提微信开发感觉有点不合时宜,微信开发都开发几年了,市场也差不多清新了,我完全以马后炮的精神讲一件如何开发一个微信公众号--以老板的思维思考:我做出来就行了,管他什么方法。

目标读者:技术、技术管理层、运营人员

不适宜读者:专注于微信接口开发技术大神,致力于研究微信协议的扫地僧

读本篇文章之前先通读一遍开发文档,不要你实现,但是读一遍了解一下基本概念:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1445241432

看完之后我假设你已经懂得了什么事服务器网址、token、秘钥、xml等之类的基础操作。

开发第一个要抉择的使用什么语言。PHP,不解释,我能hold住php,其它的hold不住。

然后呢?然后拿到就要按照微信的接口设计那几个功能?菜单设置?获取用于openid?

不是!!这些功能都有人做好了,任何一个技术兴起一定时间之后必然会出现技术分层,会出现框架、设计理念、具体操作模式等,例如ORM、PDO、Thinkphp、CMS系统等,这些都是为了一个目的:每个人负责一道工序,提高生产率。全球化的技术体现,这是经济学决定的分工细化,扯多了,收!

用什么呢?用微擎!!官网:https://www.we7.cc/,为什么用微擎?因为老板是我老乡啊!必须支持我大虚线的事业。

微擎是一个微信应用生态,用了微擎只要1周你就能拥有一个功能丰富的微信商城,2周你想有几个就有几个,微擎后台能否无线添加公众账号,可以支持各种商业模式,无论是针对外包做还独立为一个公众号做,都可以。之前有幸和微擎老板吃过饭、喝过酒,聊过他的发家史,微擎爆发是在推出了应用模式之后,从此可以看出生态是多么的重要。

关于正版、授权、购买、测试我就不多说了,灰色地带,大家自己抉择。

基本的环境配置:服务器(阿里云1h1g1m就可以),域名(ICP备案成功的),一个微擎账号

登录微擎、下载、在线安装更新。

注意事项:微擎有自己的防盗版机制,注意域名与IP不要变、自己的微擎账户和自己的平台绑定。如果还不会微信问我。

现在我假装你知道什么是微信开发、什么事微擎、如何在微擎上绑定一个微信服务号、如何购买应用。

如果这你都会了,你绝对可以开发微信公众号了,一套正版的微擎加人人商城在加一些常用微擎商业应用预计5W以内没问题,然后买服务器、域名也就是1W一年,你去二三线城市跑商家、一个全功能微信商城卖1W,每年收取10%的服务费,找几个销售,自己做后台配置,一个月能做4单不成问题,第二年光服务费就能收5W,可是根本不需要做什么操作,微擎自己做安全更新,人人商城自己也在做更新,你只需要坐在电脑面前按一下升级就行了。3人一个月做的好净入4万。张哥就在这么干,如果你不知道张哥是谁,看看我写最终系列你就知道了。

是的,微信开发在微擎上就是这个套路,开了两年的外包公司也就是这套路,后几篇我讲一下技术细节,如果下面我讲的技术细节你也懂了,掌握了这么一套开发模式,那差不多微信开发80%的问题都能解决了。

2018-04-13 16:33:04 spt_dream 阅读数 1120

微信对接总结

一、        微信公众平台

概念

微信公众平台是运营者通过公众号为微信用户提供资讯和服务的平台,而公众平台开发接口则是提供服务的基础,开发者在公众平台网站中创建公众号、获取接口权限后,进行开发。主要包括公众号消息会话,公众号内网页

1.    准备工作

1、 申请独立ip(开放80端口)的外网服务器

2、 微信公众号、企业号。

为了方便调试申请口开通开发者测试号(接口测试无限制)

   3、.net语言稳定的微信开发SDK senparc.Weixin

2.    使用场景

系统通过公众号与关注者进行用户微信绑定,与用户互动,(收发消息,通知提醒,信息修改)

3.    注意事项

1, 服务器申请,2核1G,2核2G,4核8G 最终才满足安装vs,安装sql

2, Sdk集成到项目采用webform类型,不用mvc,sdk介绍中的例子主要为mvc,

3, 既然采用sdk要意识到微信官方的接口文档往往就不适用了,要了解sdk的api

4, 要理解微信的参数含义,

token:服务器认证密钥,

appId:开发者id,

AppSecret:开发者密码,

ip白名单:服务器的ip注册,

EncodingAESKey:消息密钥,(消息加密需要)

access_token:获取到的凭证通过开发者账户密码,主动请求微信服务器需要

5, 服务器验证,程序开发的起点,验证前后耽误了两天,1,首先事需要外网开发的80端口服务,2,系统安装部署北京环境3,访问mapping配置地址解析4,(原生)完成get请求解析返回echostr(微信服务器发送的随机数,程序返回则通过)

6, 微信常见功能调用api

1、 用户发送消息接收后回复,微信官方文档称作被动回复功能,sdk封装在messageHandler类中

2、 向用户发消息可以群发,利用客服功能发送,还可以发送模板消息。通知等消息都是模板消息,sdk调用apiTemplateApi.SendTemplateMessage

3、 用户页面跳转用微信文档中提到的页面授权,位置在下面介绍的路径

对应sdk的api为OAuthAPIs.OAuthApi.GetAuthorizeUrl

4、 客服注意菜单点击无法相应进入客服模式,要判断文本,经统计,关键字一般为“你好“,“在吗“,客服介绍: http://www.cnblogs.com/txw1958/p/weixin-multi-customer-service.html

5、 添加客服api:https://api.weixin.qq.com/customservice/kfaccount/add?access_token=ACCESS_TOKEN

 

7, 对接sdk注意事项

1.        首先用mvc模式运行,最开始因为vs2012不能加载nuget最近包管理工具,以致sdk以来不能下载对应版本,后来通过百度,查询到跑起来的话需要降级,就去nuget官网查询所有没引入的以前的降级版。

2.        这样就造成了大量的工作量,而且运行还会对现有微信官方api的调用,封装不匹配。后来领导采用源码编译出最新版本sdk.dll文件,解决了vs版本低,和依赖版本低的问题。程序就跑起来了。

3.        官网例子是在vs2017,.net版本4.5的环境中部署运行的。

4.        还要就是netframwork版本4.0的问题,北京项目从2.0升级到4.0,后来领导果断升到4.5才运行成功

5.        Mvc跑起来与项目集成出现问题,需要运行官网提到的webform项目。这个项目没有例子(给的例子就是错的,但是有实现大体思路),对此,领导结合源码写出了webform并与微信服务器建立联系。注,在新建环节还会有配置运行起来,访问不到aspx页面。这时候要仔细检查配置项目,不行更换文件夹重新建立项目运行访问。

6.        SDK 是一套.dll,要根据需要添加,千万防止调用api路径不通导致功能不通。因为sdk中好多相同名称,传参类似的api比如模板发送,获取accse_token等

8, Nuget工具安装.dll使用

9, 网站配置要注意.net基本配置,版本要匹配,项目路径要对,.dll编译地址要统一

4.    案例介绍

 

5.    技术介绍

 

1、开发者文档:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1445241432

2、Sdk官网:https://sdk.weixin.senparc.com/Document

3、配置 ASP.NET 应用程序的详细信息:http://go.microsoft.com/fwlink/?LinkId=169433

4、.NET 4.5 的 web.config 更改说明:http://go.microsoft.com/fwlink/?LinkId=235367。

 

 

 

二、 微信开放平台

地址:  https://open.weixin.qq.com/

    微信开放平台:面向的是开发者和第三方独立软件开发商。开放平台的文档似乎包含了微信开放平台文档里面的接口。

三、微信小程序

 

 

https://mp.weixin.qq.com/wxopen/waregister?action=step1