微信服务器接口配置程序

    要对接微信公众平台的"开发模式",即对接到自己的网站程序,必须在注册成功之后,等待官方审核,审核通过之后,会在后台顶部出现“高级功能”菜单。

    使用“高级功能”>“开发模式”之前,必须有一个已经部署在Internet上,可以用80端口访问的网站(域名或IP访问都可以)。

 

    首次进入“高级功能”后界面如下:

    我们看到默认情况下,“编辑模式”是开启的,要使用“开发模式”,必须先关闭“编辑模式”。

    点击进入编辑模式。如下图:

    点击右上角的滑块,关闭“编辑功能”。

   然后回到“高级功能”,进入“开发模式”,如下图:

    进入开发模式后,我们需要设置与微信服务器通讯的Url,以及只有我们自己知道的Token(千万不可泄露)。

    官方已经提供了一个PHP版本的示例:http://mp.weixin.qq.com/mpres/htmledition/res/wx_sample.zip,你也可以根据官方API的说明用自己的语言编写。

    在Senparc.Weixin.MP的开源项目中,我们也提供了ASP.NET MVC和ASP.NET Web Forms两种可以直接部署的Demo:https://github.com/JeffreySu/WeiXinMPSDK

    在提交的时候,微信服务器会对填写的URL,使用Token进行一次Get方式请求的验证,如果顺利通过,则保存成功,如果不通过,会给出错误信息,并且所填写的信息是无法保存的。

    为了更加直观地演示这个URL对应的程序中,应高包含哪些必要元素,我这里给出Senparc.Weixin.MP的实现方法(我会分别以MVC和WebForms为例):

方法一:使用MVC

    1、建立一个Controller,如WeixinController.cs,引用Senparc.Weixin.MP.dll(using Senparc.Weixin.MP.dll),最新的DLL见开源项目的Senparc.Weixin.MP.BuildOutPut文件夹https://github.com/JeffreySu/WeiXinMPSDK/tree/master/Senparc.Weixin.MP.BuildOutPut

    2、设置一个私有变量(当然你也可以保存在数据库中),如:

?
public readonly string Token = "weixin" ; //与微信公众账号后台的Token设置保持一致,区分大小写。

    3、建立一个名称为Index,用于Get请求的Action,如:

?
/// <summary>
/// 微信后台验证地址(使用Get),微信后台的“接口配置信息”的Url填写如:http://weixin.senparc.com/weixin
/// </summary>
[HttpGet]
[ActionName( "Index" )]
public ActionResult Get( string signature, string timestamp, string nonce, string echostr)
{
     if (CheckSignature.Check(signature, timestamp, nonce, Token))
     {
         return Content(echostr); //返回随机字符串则表示验证通过
     }
     else
     {
         return Content( "failed:" + signature + "," + MP.CheckSignature.GetSignature(timestamp, nonce, Token)+ "。如果您在浏览器中看到这条信息,表明此Url可以填入微信后台。" );
     }
}

  至此,这些代码编译后按照要求部署到网站上,并且在“接口配置信息”中填写http://YourDomain/weixin,Token填写weixin。

    上述代码完整的WeixinController.cs可以看这里

方法二:使用Web Forms

    Web Forms的验证过程和MVC是一样的,只是写法上有点差别,这里直接给出代码(也要using Senparc.Weixin.MP.dll),假设文件名为根目录下weixin.aspx:

    
    
public partial class Weixin : System.Web.UI.Page
     {
         private readonly string Token = "weixin" ; //与微信公众账号后台的Token设置保持一致,区分大小写。
 
         protected void Page_Load( object sender, EventArgs e)
         {
             string signature = Request[ "signature" ];
             string timestamp = Request[ "timestamp" ];
             string nonce = Request[ "nonce" ];
             string echostr = Request[ "echostr" ];
 
             if (Request.HttpMethod == "GET" )
             {
                 //get method - 仅在微信后台填写URL验证时触发
                 if (CheckSignature.Check(signature, timestamp, nonce, Token))
                 {
                     WriteContent(echostr); //返回随机字符串则表示验证通过
                 }
                 else
                 {
                     WriteContent( "failed:" + signature + "," + CheckSignature.GetSignature(timestamp, nonce, Token));
                 }
                
             }
             else
             {
                  //判断Post或其他方式请求
             }
              Response.End();
         }
 
         private void WriteContent( string str)
         {
             Response.Output.Write(str);
         }
}
 
 
  按照上面的代码,在“接口配置信息”中,Url应当填写http://YourDomain/weixin.aspx,Token应当填写weixin。

    上述weixin.aspx.cs完整代码看这里(当然你也可以写成ashx进一步提高效率)。

    

    CheckSignature.Check()方法是Senparc.Weixin.MP SDK中一个验证请求的方法,已经做了封装。这里直接使用是为了简化代码突出重点,感兴趣的朋友可以直接看源代码。

    用以上MVC和Web Forms两种方法的任意一种,已经可以让后台验证通过。但是注意,光有Get的方法,尚不能与微信用户发来的信息通讯,因为通过前面的教程我们知道,微信后台的Url是通过Get方式请求,而微信客户端的请求是由Post方式请求的,关于Post的方法,我会在后面的教程中详细说明。

    并且,在目前的设置状态下,即便你写了Post相关的方法,通过验证之后也并不表示你的服务器已经可以接收到微信服务器的消息了,还有最后一步:手动打开“开发者模式”:

    现在这个微信账号已经成功切换到了“开发者模式”,所有微信客户端发送到该公众账号的消息,都将转发到刚才填写的Url中。

 

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值