ASP.NET MVC 接入微信公共平台

ASP.NET MVC 接入微信公共平台

  1. 申请微信公共账号

    既然要接入微信公共平台,微信公共号是必须的(当然如果只是测试的话也可以申请微信公共平台接口测试账号),来这里微信公共平台 申请微信公共号(注:申请微信公共号不能用已绑定微信的邮箱),微信公共平台有自己的官方文档,官方文档有不少资料,可以多看看,开发者模式默认是关闭的,需要配置并启用,如下图:

    URL即你的网站处理微信模块,必须是HTTP://开头的网站,笔者自己之前接入几天一直失败,最终发现是因为自己网站加密了用的是HTTPS,这个需要注意HTTPS网站是不可以的,Token是不会验证成功的,Token是自定义的不少于3个字符,EncodingAESKey会在加密消息时用到。

  2. 编写网站逻辑

    编写微信接口测试代码,创建控制器,在控制器中编写代码,编写一个Action 方法用于微信服务器检验,Token是否配置成功或者接入成功。既然使用MVC,本人比较懒,懒得用Request.QueryStrings["echostr"] 这样的方法来一个一个获取参数,于是创建了一个Model,用来让微信服务器请求时参数自动适配到Model的相应属性,便于访问,便于写代码,在微信公共平台的官方文档中可以看到用到的参数

    于是创建一个这样的Model

    1  public class WeChatRequestModel
    2     {
    3         public string signature { get; set; }
    4         public string timestamp { get; set; }
    5         public string nonce { get; set; }
    6
    7         public string echostr { get; set; }
    8     }

    View Model Code

    接着看官方文档,接下来开始在控制器中编写代码,开始验证

    根据校验流程开始编写代码,也可参考官方给出PHP代码编写相应的 .NET 代码

    下面给出我的示例代码,在接入没成功之前参考许多别人的代码,不一定是最好的,你也可以参考一些别人的代码

    用来让微信服务器访问的Action 方法代码

  3. 配置微信公共平台上的信息

    配置接入服务器,图中的参数都必须配置,Token要与网站代码中的Token保持一致,EncodingAESKey直接随机生成就可以,当然自己写也是可以的,只要你愿意,消息加解密方式,建议开发测试阶段选择明文模式以及兼容模式,正式上线使用后选择安全模式。最后第一项也是最重要的一项,URL,再次强调必须是HTTP网站,HTTPS是验证不成功的,如果是HTTPS能改成HTTP的话要改成HTTP,Url写成刚才我们编写的用于访问的验证的Action的Url地址,即要访问这个控制器时请求的URL地址,如: http://www.example.com/Home/Valid/

 1 using System;
 2 using System.Web.Mvc;
 3 using System.Web.Security;
 4
 5 namespace PrivateSpace.WeChatAPI
 6 {
 7     public class HomeController :Controller
 8     {
 9         /// <summary>
10         /// 定义Token,与微信公共平台上的Token保持一致
11         /// </summary>
12         private const string Token = "PrivateSpace";
13
14         /// <summary>
15         /// 验证签名,检验是否是从微信服务器上发出的请求
16         /// </summary>
17         /// <param name="model">请求参数模型 Model</param>
18         /// <returns>是否验证通过</returns>
19         private bool CheckSignature(Model.FormatModel.WeChatRequestModel model)
20         {
21             string signature, timestamp, nonce, tempStr;
22             //获取请求来的参数
23             signature = model.signature;
24             timestamp = model.timestamp;
25             nonce = model.nonce;
26             //创建数组,将 Token, timestamp, nonce 三个参数加入数组
27             string[] array = { Token, timestamp, nonce };
28             //进行排序
29             Array.Sort(array);
30             //拼接为一个字符串
31             tempStr = String.Join("", array);
32             //对字符串进行 SHA1加密
33             tempStr = FormsAuthentication.HashPasswordForStoringInConfigFile(tempStr, "SHA1").ToLower();
34             //判断signature 是否正确
35             if (tempStr.Equals(signature))
36             {
37                 return true;
38             }
39             else
40             {
41                 return false;
42             }
43         }
44
45
46         public void Valid(Model.FormatModel.WeChatRequestModel model)
47         {
48             //获取请求来的 echostr 参数
49             string echoStr = model.echostr;
50             //通过验证
51             if (CheckSignature(model))
52             {
53                 if (!string.IsNullOrEmpty(echoStr))
54                 {
55                     //将随机生成的 echostr 参数 原样输出
56                     Response.Write(echoStr);
57                     //截止输出流
58                     Response.End();
59                 }
60             }
61         }
62     }
63 }

Smaple

时间: 2025-01-02 17:59:18

ASP.NET MVC 接入微信公共平台的相关文章

Python+django接入微信公共平台无法使用中文

使用Python语言和Django框架接入微信公共平台. 腾讯官方说明平台接入时中文使用的是UTF-8编码,于是,我们将views.py文件设置成了utf-8的编码,即:#coding:utf-8,我们能接收和正常处理微信服务器post过来的中文消息,但是我们没办法return中文回去,手机微信提示"该公共账号暂时无法提供服务,请稍后再试".也就是我们能接收人家的中文,没办法给人家返回中文. 这里大家都想到是Python编码问题,找问题的方向大多是使用decode()和encode()

[原创] ASP.NET WEBAPI 接入微信公众平台 总结,Token验证失败解决办法

首先,请允许我说一句:shit! 因为这个问题不难,但是网上有关 ASP.NET WEBAPI的资料太少.都是PHP等等的. 我也是在看了某位大神的博客后有启发,一点点研究出来的. 来看正题! 1.微信公众平台的接入方法,无非4个参数(signature, timestamp, nonce, echostr)加1个Token(两边对应) 2.Token, timestamp, nonce字典排序后,按照字符串“SHA1”加密.得出一串字符串 tmpStr(转化为小写) 3.然后比对 tmpStr

c#接入微信公众平台

微信公众平台接入方式(asp.net) 第一步:使用vs2012等等建一个web站点 1.1 建立完成后,新建一个接入的页面,以aspx为例 using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Web; using System.Web.Security; using System.Web.UI; using Syst

解读微信公共平台开发

搭建环境 前一段在CSDN上跟了一篇帖子然后不少同学都来添加我的QQ来询问一些关于微信公共平台的搭建和开发问题.其实本人觉得微信公共平台开发的门槛并不高,是大家把它想的太神秘.因为是本博第一篇文章如果写的不好还请大家多多谅解. 跳过微信公共账号的申请和微信公共平台的基本功能,如果这点有需要帮助的可以直接问问自己的小学老师.直奔主题,在主菜单选择“功能->高级功能”然后进入“开发模式”开启开发模式病点击“成为开发者”接口配置信息先空着,可以在这里找到示例代码. 现在到了搭建微信服务器的步骤了,你可

微信公共平台开发(一):服务器配置

转载请注明出处:http://blog.csdn.net/xiaojimanman/article/details/45042549 http://www.llwjy.com/blogdetail/43b9fff3f2b827f4444826aeee756ec7.html 个人博客站已经上线了,网址 www.llwjy.com ~欢迎各位吐槽~ ----------------------------------------------------------------------------

微信开发】【Asp.net MVC】-- 微信分享功能

[微信开发][Asp.net MVC]-- 微信分享功能 2017-01-15 09:09 by stoneniqiu, 12886 阅读, 15 评论, 收藏, 编辑 内嵌在微信中的网页,右上角都会有一个默认的分享功能.如下图所示,第一个为自定义的效果,第二个为默认的效果.实现了自定义的分享链接是不是更让人有点击的欲望?下面讲解下开发的过程. 一.准备,设置js接口安全域名 这需要使用微信的jssdk,先需要在微信公众号后台进行设置:公众号设置-->功能设置-->JS接口安全域名.打开这个页

python获取微信公共平台消息列表和用户头像

转载需注明原文地址:http://blog.csdn.net/btyh17mxy/article/details/25207889 刚写的模拟登陆的方式从获取微信公众平台消息列表和用户头像的库,之后还会继续增加相关功能,github地址https://github.com/btyh17mxy/wxwall #!/usr/bin/env python # coding: UTF-8 import json import hashlib import re import random import

一、微信公众平台的接入微信公众平台的接入

一.微信公众平台的接入微信公众平台的接入 1.官方文档 2.设置公司或者个人服务器网站: 要接入微信,我们要建立个人网站去接收微信数据,并返回相应格式的数据,我们需要建立一个能够让外网访问的网站,并按照官方文档要求建立一个一般处理程序用来接收微信发送的数据(signature,timestamp,nonce,echostr),在服务器上验证之后,返回微信要求的数据(echostr),一般处理程序代码如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18

ios应用接入微信开放平台

前几天试了一下服务端接入微信公众平台,昨天又看了一下APP接入开放平台 开放平台和公众平台的差别 公众平台针对的是公众账号,除了提供管理后台之外.也开放了若干接口,让微信server和开发人员自己的应用系统可以对接 开放平台是微信的总体接入方式.不局限于公众账号(订阅号,服务号).移动APP和web应用也能够通过开放平台.实现与微信对接.能够说,公众平台的API部分,是开放平台的一个子集 开放平台大体上分为3个部分.分别针对移动APP,WEB应用.公众账号的接入 移动APP接入开放平台的作用 眼