您的位置:首页 > 移动开发 > 微信开发

微信公众开发的准备

2015-08-07 21:21 519 查看
首先,你需要申请一个微信公众平台的账号,个人的话申请的只能是订阅号,设置好自己的信息即可。

对于订阅号来说,有两种编辑模式,第一种就是普通的编辑模式,可以实现的操作如下图所示:



个人感觉就是一些模板,自己改改标题,改改名字之类的,实现的功能有限。

第二种模式是开发者模式,也是作为微信开发者来说需要操作的。进入开发者中心后,



按照要求填写好URL,和token。

这里先简单说明一下这个URL和token:

URL是你开发微信公众平台的那个页面的地址,所以说前提是你还得有一个服务器才行,也就是有一个网站就OK了。(还在现在的云服务很便捷,可以去阿里云买一个域名,一年才十几块,它还自动帮你绑定主机和设置域名解析,非常方便)token呢就是微信开发第三方API接口,需要你自己设置好,过程就是在代码里实现。

申请好阿里云的主机后,输入自己的域名显示的应该是它提前放好的一个页面,你可以用ftp地址进入后删除,放入自己的页面。

例如我用VS2013新建了一个ASP.NET的空网站,并且新建了一个Web窗体页面,并且在.cs页面写好一下代码,让微信公众平台能够验证通过:

using System.Web;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Data;

using System.IO;

using System.Net;

using System.Text;

using System.Xml;

using System.Web.Security;
using System;

public partial class weixin : System.Web.UI.Page
{

    const string Token = "weixin";//你的token

    protected void Page_Load(object sender, EventArgs e)
    {

        string postStr = "";

        if (Request.HttpMethod.ToLower() == "post")
        {

            System.IO.Stream s = System.Web.HttpContext.Current.Request.InputStream;

            byte[] b = new byte[s.Length];

            s.Read(b, 0, (int)s.Length);

            postStr = System.Text.Encoding.UTF8.GetString(b);

            if (!string.IsNullOrEmpty(postStr))
            {

                //ResponseMsg(postStr);

                Response.Write(ResponseMsg(postStr));

                Response.End();

            }

            //WriteLog("postStr:" + postStr);

        }

        else
        {

            Valid();

        }

    }

    /// <summary>

    /// 验证微信签名

    /// </summary>

    /// * 将token、timestamp、nonce三个参数进行字典序排序

    /// * 将三个参数字符串拼接成一个字符串进行sha1加密

    /// * 开发者获得加密后的字符串可与signature对比,标识该请求来源于微信。

    /// <returns></returns>

    private bool CheckSignature()
    {

        string signature = Request.QueryString["signature"].ToString();

        string timestamp = Request.QueryString["timestamp"].ToString();

        string nonce = Request.QueryString["nonce"].ToString();

        string[] ArrTmp = { Token, timestamp, nonce };

        Array.Sort(ArrTmp);     //字典排序

        string tmpStr = string.Join("", ArrTmp);

        tmpStr = FormsAuthentication.HashPasswordForStoringInConfigFile(tmpStr, "SHA1");

        tmpStr = tmpStr.ToLower();

        if (tmpStr == signature)
        {

            return true;

        }

        else
        {

            return false;

        }

    }

    private void Valid()
    {
        try
        {
            string echoStr = Request.QueryString["echoStr"].ToString();
            if (CheckSignature())
            {

                if (!string.IsNullOrEmpty(echoStr))
                {

                    Response.Write(echoStr);

                    Response.End();

                }

            }
        }
        catch
        {

        }
        

        

    }

    /// <summary>

    /// 返回信息结果(微信信息返回)

    /// </summary>

    /// <param name="weixinXML"></param>

    private string  ResponseMsg(string weixinXML)
    {

        ///这里写你的返回信息代码
        return weixinXML = "";

    }

    /// <summary>

    /// unix时间转换为datetime

    /// </summary>

    /// <param name="timeStamp"></param>

    /// <returns></returns>

    private DateTime UnixTimeToTime(string timeStamp)
    {

        DateTime dtStart = TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1));

        long lTime = long.Parse(timeStamp + "0000000");

        TimeSpan toNow = new TimeSpan(lTime);

        return dtStart.Add(toNow);

    }

    /// <summary>

    /// datetime转换为unixtime

    /// </summary>

    /// <param name="time"></param>

    /// <returns></returns>

    private int ConvertDateTimeInt(System.DateTime time)
    {

        System.DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1));

        return (int)(time - startTime).TotalSeconds;

    }

    /// <summary>

    /// 写日志(用于跟踪)

    /// </summary>

    private void WriteLog(string strMemo)
    {

        string filename = Server.MapPath("/logs/log.txt");

        if (!Directory.Exists(Server.MapPath("//logs//")))

            Directory.CreateDirectory("//logs//");

        StreamWriter sr = null;

        try
        {

            if (!File.Exists(filename))
            {

                sr = File.CreateText(filename);

            }

            else
            {

                sr = File.AppendText(filename);

            }

            sr.WriteLine(strMemo);

        }

        catch
        {

        }

        finally
        {

            if (sr != null)

                sr.Close();

        }

    }

}
之后就OK了,可以先试试通过访问自己的域名看看页面是否正常显示,之后再填写好token,提交成功即可。

之后想要开发什么功能就可以在后台的项目文件中具体操作。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: