實際案例: 接口接入驗證 (程式碼)

同樣的

本案例也是採用大名鼎鼎的 Senparc 微信開發套件

廢話不多說,具體程式碼如下

using ShouJia.BO;
using ShouJia.Common;
using ShouJia.Debugger;
using ShouJia.Facades;
using ShouJia.Framework;
using Senparc.Weixin.MP;
using System;
using System.Data;
using System.Data.Common;
using System.IO;
using System.Security;
using System.Security.Cryptography;
using System.Text;
using System.Web;

namespace ShouJia.VXinWeb
{
    /// <summary>
    /// WxAuth 的摘要描述
    /// </summary>
    public class WxAuth : IHttpHandler
    {
        private string Token = string.Empty;
        private int GarageID;

        public void ProcessRequest(HttpContext c)
        {

            GarageID = int.Parse(CommonHelper.RequestParam("GarageID"));
            WebLogs.Debug( "API Auth Get GarageID", GarageID.ToString() );

            Token = WeixinBehaviors.GetApiAuthToken(GarageID);
            WebLogs.Debug( "API Auth Get Token", Token );

            string signature = CommonHelper.RequestParam("signature");
            WebLogs.Debug( "API Auth Get signature", signature );

            string timestamp = CommonHelper.RequestParam("timestamp");
            WebLogs.Debug( "API Auth Get timestamp", timestamp );

            string nonce = CommonHelper.RequestParam("nonce");
            WebLogs.Debug( "API Auth Get nonce", nonce );

            string echostr = CommonHelper.RequestParam("echostr");
            WebLogs.Debug( "API Auth Get echostr", echostr );

            if ( HttpContext.Current.Request.HttpMethod.ToUpper() == "GET" )
            {
                // get method - 仅在微信后台填写URL验证时触发
                if ( CheckSignature.Check( signature, timestamp, nonce, Token ) )
                {
                    WriteContent(echostr); //返回随机字符串则表示验证通过
                }
                else
                {
                    WriteContent("failed:" + signature + "," + CheckSignature.GetSignature(timestamp, nonce, Token) + "。如果你在浏览器中看到这句话,说明此地址可以被作为微信公众账号后台的Url,请注意保持Token一致。");
                }

                HttpContext.Current.Response.End();
            }
            else
            {
                // post method - 当有用户想公众账号发送消息时触发
                if ( !CheckSignature.Check( signature, timestamp, nonce, Token ) )
                {
                    WriteContent("参数错误!");
                    return;
                }

                using (Stream s = HttpContext.Current.Request.InputStream)
                {
                    Byte[] postBytes = new Byte[s.Length];
                    s.Read(postBytes, 0, (Int32)s.Length);
                    string postStr = Encoding.UTF8.GetString(postBytes);
                    var h = new Tools.CustomMessageHandler();
                    h.ResponseXmlData(postStr);
                }
            }
        }

        private void WriteContent(string output_str)
        {
            HttpContext.Current.Response.Write(output_str);
        }

        public bool IsReusable
        {
            get
            {
                return false;
            }
        }
    }
}
时间: 2024-08-05 03:25:21

實際案例: 接口接入驗證 (程式碼)的相关文章

實際案例: 接口接入驗證 (公眾號設定)

一.登入官方的微信公眾號平台 二.進入設定頁面 三.進入服務器配置 四.填寫握修改配置信息 補充說明: 1.URL:就是做轉接的網址,實際執行驗證的程式碼寫在這裡. 2.Token:本質就是一個字串,內容可以隨便輸入,長度在 3 ~ 32 個字元之間,只要後續呼叫時所輸入的 token 和這裡設定的一致即可.講究一點的,可以試試用 Visual Studio 的 GUID 產生器,或者用 SQL Server 的 NewID() 函式產生 32 個字元的字串. 3.EncodingAESKey:

實際案例: 獲取臨時票証 (JsApi Ticket)

專案中選用大名鼎鼎的 Senparc 微信開發套件 獲取臨時票證處理常式的程式碼 (GetgVXinInfo.ashx) using Senparc.Weixin; using Senparc.Weixin.MP; using Senparc.Weixin.MP.Entities; using Senparc.Weixin.MP.CommonAPIs; using ShouJia.BO; using ShouJia.Facades; using ShouJia.Debugger; using S

使用 Regular Expression 驗證密碼複雜度

以前我都沒想過可以用 Regular Expressions 驗證複雜格式的密碼,原來可以用 Regular Expression 中的群組建構式達成這個目的,例如說密碼的條件是這樣: 至少有一個數字 至少有一個小寫英文字母 至少有一個大寫英文字母 字串長度在 6 ~ 30 個字母之間 那麼你的 Regular Expression 可以長這樣: ^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{6,30}$ 在這段 Regular Expression 的語法中值得注意的就是 

實際案例: 已知要獲取臨時票証 (JsApi Ticket) 才能調用的接口

需獲取票証才能調用的接口,簡單列示如下: 一.基礎類 1. wx.checkJsApi (當前客戶端是否支持指定JS) 二.分享類 1.wx.onMenuShareTimeline (分享到朋友圈)2.wx.onMenuShareAppMessage (分享給好友)3.wx.onMenuShareQQ (分享到QQ)4.wx.onMenuShareWeibo (分享到微博)5.wx.onMenuShareQZone (分享到QQ空間) 三.圖片類1.wx.chooseImage (相冊選圖)2.

微信SDK开发——接口接入

园子里面很多关于微信接口开发的文章,Github也一堆的开源代码. 官方文档地址:http://mp.weixin.qq.com/wiki/home/index.html 接下来主要以代码为主,接口说明自己去看文档 验证接入需要一个80端口的外网服务器地址,在填写地址,Token信息之后,程序会验证接入 验证会像就扣地址通过GET的方式发送几个数据: signature,timestamp, nonce, echostr(该参数仅仅在验证接入时候会带上) 接下来就是你服务端接口验证签名的可用性了

實戰案例 - 微信開發重點摘要之用戶唯一識別碼與網頁存取授權碼 (2)

在取得用戶同意授權碼之後,就可以接著拿 openid 和 access token. openid 筆者稱之為用戶唯一識別碼,access code 則是網頁存取授權碼.從騰訊的公眾平台開發文件可以知道,openid 是跟著用戶走的,每個用戶都有自己的識別碼,這個識別碼也是開發者在寫程式的過程中,區分微信用戶的途徑:而 access code 則有類似鑰匙的作用,有了這個和 openid 就能獲取用戶資訊,要取得用戶識別碼和網頁存取授權碼,最關鍵的地方在這個網址: https://api.wei

淘宝API学习之道:淘宝TOP之API接口接入教程

作为一个中小型网站开发者,淘宝API的开放大大缩短了网站的开发周期和运作效率,面对海量的数据,开发者只要仔细阅读开发文档,熟悉相应的接口,就可以把数据导入自己的网站,这样就不必望洋兴叹了. 目前淘宝TOP的API接口正日益完善,但相应的接口和开发文档还不是很全,经过了3天的仔细研究,今晚上终于把淘宝API的调用弄明白了.不是很完善,文中如有瑕疵,还望批评指正,好,闲话到此为止,请看正文.本文是在测试环境下调用的淘宝API,虽然没有正式上线,但可以作为初学者对开发流程的一个入门. 首先登陆http

驗證碼

<title>驗證碼</title> <script type="text/javascript"> //点击切换验证码 function f_refreshtype() { var Image1 = document.getElementById("img"); if (Image1 != null) { Image1.src = Image1.src + "?"; } } </script>&l

實戰案例 - 微信平台之微信商城重點摘要(1)

只要是牽涉到公眾平台,並需要取得用戶信息的相關操作,不外乎兩大要素:openid 和 access_code.然而,在取得 openid 和 access_code 之前,還有一個很重要的敲門磚,就是 code,筆者稱之為「用戶同意授權碼」,其作用在識別用戶是否同意微信應用發起的「用戶公開訊息調用請求」.也就是說,當微信應用需要獲取用戶的公開資訊時,會先向用戶發起一個授權同意頁面,若用戶點擊同意,就會以網址列傳參的方式給應用端返回 code,若用戶不同意授權,就不帶上 code.而這一段在實作上