C#微信公众号接口开发之从零开发(一) 接入微信公众平台

微信公众平台接入:其实很简单,把两个参数(地址和token)填入微信公众平台后台,暂时选择明文模式 ,其中token自己定义。微信服务器会根据后台填写的地址访问,并且带上对于的参数 如 url+&signature=0dab3e6f983b6bdccfdbe3ceca01526f1522748a&timestamp=1436257899&nonce=1868246535&echostr=echostr 根据参数用微信文档中指定的方法加密检验是否来自微信然后返回随机数echostr(当然你可以直接返回随机数,好处是简单,但是这样非微信服务器也可以访问你的服务器)

此处的方法是:新建一个一般处理程序(我的做法是有伪静态处理,不生成伪静态地址也可以)代码如下 token自定义,token类似密码,如果泄露和微信的密钥一样可以修改。因为接入非常简单这里就不多写,可以直接看代码。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.SessionState;
using System.Web.Security;

namespace sohovan.com.wxdemo
{
    /// <summary>
    /// API 的摘要说明
    /// </summary>
    public class API : IHttpHandler, IRequiresSessionState
    {

        public void ProcessRequest(HttpContext context)
        {
            context.Response.ContentType = "text/plain";
            if (context.Request.HttpMethod.ToLower() == "post")
            {
                //回复消息的时候也需要验证消息,这个很多开发者没有注意这个,存在安全隐患
                //微信中 谁都可以获取信息 所以 关系不大 对于普通用户 但是对于某些涉及到验证信息的开发非常有必要
                if (CheckSignature())
                {
                    //接收消息
                }
                else
                {
                    HttpContext.Current.Response.Write("消息并非来自微信");
                    HttpContext.Current.Response.End();
                }
            }
            else
            {
                CheckWechat();
            }
        }

        #region 验证微信签名
        /// <summary>
        /// 返回随机数表示验证成功
        /// </summary>
        private void CheckWechat()
        {
            if (string.IsNullOrEmpty(HttpContext.Current.Request.QueryString["echoStr"]))
            {
                HttpContext.Current.Response.Write("消息并非来自微信");
                HttpContext.Current.Response.End();
            }
            string echoStr = HttpContext.Current.Request.QueryString["echoStr"];
            if (CheckSignature())
            {
                HttpContext.Current.Response.Write(echoStr);
                HttpContext.Current.Response.End();
            }
        }

        /// <summary>
        /// 验证微信签名
        /// </summary>
        /// <returns></returns>
        /// * 将token、timestamp、nonce三个参数进行字典序排序
        /// * 将三个参数字符串拼接成一个字符串进行sha1加密
        /// * 开发者获得加密后的字符串可与signature对比,标识该请求来源于微信。
        private bool CheckSignature()
        {
            string access_token = "mytoken";

            string signature = HttpContext.Current.Request.QueryString["signature"].ToString();
            string timestamp = HttpContext.Current.Request.QueryString["timestamp"].ToString();
            string nonce = HttpContext.Current.Request.QueryString["nonce"].ToString();
            string[] ArrTmp = { access_token, timestamp, nonce };
            Array.Sort(ArrTmp);     //字典排序
            string tmpStr = string.Join("", ArrTmp);
            tmpStr = FormsAuthentication.HashPasswordForStoringInConfigFile(tmpStr, "SHA1");

            if (tmpStr.ToLower() == signature)
            {
                return true;
            }
            else
            {
                return false;
            }
        }
        #endregion

        public bool IsReusable
        {
            get
            {
                return false;
            }
        }
    }
}

微信开发群

时间: 2024-10-20 07:24:56

C#微信公众号接口开发之从零开发(一) 接入微信公众平台的相关文章

微信公众号接口类(PHP版本)

[项目需求] 通过微信提供的接口,实现微信公众号与后端的应用程序数据交互.消息响应等功能. [项目疑难点] 理解接口工作方式,统一接口API,响应速度.安全性等 [代码举例] WeixinApi.class.php  微信公众号接口基类 [php] view plain copy <?php /** * 微信API 公用方法 * * PHP version 5 * * @category    Lib * @package     COM * @subpackage  GZNC * @autho

C#/ASP.NET MVC微信公众号接口开发之从零开发(二) 接收微信消息并且解析XML(附源码)

文章导读: C#微信公众号接口开发之从零开发(一) 接入微信公众平台 微信接入之后,微信通过我们接入的地址进行通信,其中的原理是微信用户发送消息给微信公众账号,微信服务器将消息以xml的形式发送到我们的绑定的地址上,通过解析XML数据,获取到微信用户发送的消息,让根据微信消息(文本:关键字,图片,语音等等)回复XML格式的数据给微信服务器,微信服务器再将接收到的消息返回给用户微信. 我们所需要做的:接收消息和返回消息 一.创建实体类 首先看文档http://mp.weixin.qq.com/wi

C#/ASP.NET MVC微信公众号接口开发之从零开发(三)回复消息 (附源码)

C#/ASP.NET MVC微信接口开发文章目录: 1.C#/ASP.NET MVC微信公众号接口开发之从零开发(一) 接入微信公众平台 2.C#/ASP.NET MVC微信公众号接口开发之从零开发(二) 接收微信消息并且解析XML(附源码) 一.拼凑回复的XML字符串 微信被动回复的形式有一下六种: 1 回复文本消息 2 回复图片消息 3 回复语音消息 4 回复视频消息 5 回复音乐消息 6 回复图文消息 分别对应不同的XML形式,这里以文本消息和图文为例,读者举一反三其他的类似,不再赘述:

天纵智能开发平台与微信公众号接口指南

前言:利用天纵智能开发平台可以非常方便地与最新的微信公众号进行接入,开发者不必研究复杂啰嗦的微信接口规则,只需在天纵智能开发平台上配置一下业务逻辑即可完成开发. 下面介绍一下天纵智能开发平台中使用微信的操作过程和几个常用使用场合. ==微信接口申请和认证== 一.申请微信公众号 进入微信官网https://mp.weixin.qq.com  注册并申请微信公众号,为了能实现更多功能,请申请为"服务号"类型,并进行认证. 根据官网说明一步一步填写资料,上传证明文件,然后即可完成申请和认证

C#微信公众号接口开发,灵活利用网页授权、带参数二维码、模板消息,提升用户体验之完成用户绑定个人微信及验证码获取

一.前言 当下微信公众号几乎已经是每个公司必备的,但是大部分微信公众账号用户体验都欠佳,特别是涉及到用户绑定等,需要用户进行复杂的操作才可以和网站绑定,或者很多公司直接不绑定,而是每次都让用户填写账号密码.作为微信接口开发人员我们知道网页授权可以用作微信网页用作安全登录,带参数二维码的使用用作记录用户来源,模板消息用作购物消费等消息的通知,但是很少看到有综合利用这些高级接口做出体验比较好的公众账号,这里分享一些我开发的用户绑定和验证码的一些心得.所需要的接口有基础的回复.网页授权.带参数二维码.

微信公众号接口添加菜单时错误(errcode":40017 invalid button type)

POST提交时总是报错: {"errcode":40017,"errmsg":"invalid button type"} 最后查出来是由于数据中有中文引起的 解决: data = {"button":[ {"name": u"会员服务", "sub_button":[ {"type":"click","name&qu

微信公众号接口相关操作

<?php /** * 微信公众号接口相关操作 */ class WeChat { private $_appid; private $_appsecret; private $_token; public function __construct($_appid,$_appsecret,$_token) { $this->_appid=$_appid; $this->_appsecret=$_appsecret; $this->_token=$_token; } //获得微信通信

微信个人号接口

本API是一套商业的的微信个人号 接口,它能监测微信中的各种事件,并辅助微信执行各种操作,提供了客户与微信个人号对接的能力,技术上来讲是一款基于MAC/IPAD协议开放性API.杜绝封号,追封,批量封等封号问题,支持多种微信方式接入. 你可以 通过API 实现 个性化微信功能 (例:营销系统.机器人小助手.客服系统等),用来自动管理微信消息, 在线测试  https://documenter.getpostman.com/view/1268847/SzKQxKf5?version=latest#

如何玩转小程序+公众号?手把手教你JeeWx小程序CMS与公众号关联

随着微信小程序新功能.新入口的不断更新,小程序的商业价值逐步增强,特别是小程序与公众号的深度融合,已经让小程序成为各行业新的营销渠道.Jeewx平台专注小程序的开发,逐步完善小程序生态圈,通过简单操作即可实现公众号拥有小程序能力.下面给大家介绍一下如何将jeewx小程序CMS关联公众号. 第一步:打开微信公众号后台https://mp.weixin.qq.com/,找到 "小程序-小程序管理"菜单,点击后,右侧有 "关联小程序",点击进入.(目前微信已开放所有的公众

微信公众号接口深入剖析与应用——多接口集合应用与重用技术开发(图文导航)

前几天有几个朋友叫我出一个关于公众号发送位置导航的教程,迫于时间压力才今天开始写写,我先说说思想 吧,首先我们知道微信发送位置可以朋友与朋友之间直接发送,但是在一个公司或者企业下,一个公众号下面可 能有很多个关注用户,那就涉及到了给陌生人发送位置的情况,我们知道微信给陌生人是发送不了信息的,需要 通过验证才行,那就涉及到了本篇要讲的第一个避开验证的方法 方法一:通过公众号转发位置给非好友的陌生人,绕过好友验证,点击导航 可能有人就会问,在48小时内如果用户未与公众号交互,信息就会发送失败,这就是