VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > Python基础教程 >
  • C#教程之微信公众号对接第三方平台开发(2)

  第二步获取componet_access_token

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
private static ResponseComponentToken GetComponentToken(string appid,string appsecret,string verifyticket)
    {
        
        var urlFormat = "https://api.weixin.qq.com/cgi-bin/component/api_component_token";
        object data = null;
        data = new
        {
            component_appid = appid,
            component_appsecret = appsecret,
            component_verify_ticket = verifyticket
        };
 
 
        return CommonJsonSend.Send<ResponseComponentToken>("", urlFormat, data);
    }

  OK。这里pre_auth_code就不罗列了,可以用程序调,也可以用postman调用。

       到这里,拿到pre_auth_code就可以点击上面的授权地址生成二维码,扫码。授权结束。有点费劲!!!

 

代公众号网页授权

     对接第三方平台后,网页授权还是分为两种方式,静默方式只能拿到openid、需要用户授权的可以拿到更多的用户信息。实现方式相比公众号略有不同:

 

  这里做开发时我用senparc SDK, 参数包括公众号appid、第三方平台appid、第三方平台accesstoken。

1
OAuthAccessTokenResult result = OAuthApi.GetAccessToken(appid, compAppid, compAccessToken, code);

  

代公众号处理消息和事件

       创建第三方平台时填写了消息和事件接收url。第三方平台会把用户和微信互动的消息和事件转发到次url。也就是在这里你可以处理具体的消息和事件,比如关注、取消关注、发送文本消息、图片消息。 这里和公众号处理消息不同的地方在于回复用户的消息全部要加密。加密方式同verify_ticket获取。  

        这里不需要再自己封装互动的消息和事件。直接用senparcSDK的CustomerMessageHandler处理即可。 最后回复用户消息时需要用到加密消息:FinalResponseDocument。可以参考senparcSDK demo。

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
if (Request.HttpMethod.ToLower() == "post")
       {
 
           var postModel = new PostModel()
           {
               Signature = Request.QueryString["signature"],
               Msg_Signature = Request.QueryString["msg_signature"],
               Timestamp = Request.QueryString["timestamp"],
               Nonce = Request.QueryString["nonce"],
               EncodingAESKey = sEncodingAESKey,
               Token = sToken,
               AppId = sAppID
           };
 
 
           var maxRecordCount = 10;
           var messageHandler = new CustomMessageHandler(Request.InputStream, postModel, maxRecordCount);
 
           try
           {
               
               //messageHandler.RequestDocument.Save(
               //    Server.MapPath("~/App_Data/" + DateTime.Now.Ticks + "_Request_" +
               //                   messageHandler.RequestMessage.FromUserName + ".txt"));
 
               messageHandler.Execute();//执行微信处理过程(关键)
 
               
               //messageHandler.ResponseDocument.Save(
               //    Server.MapPath("~/App_Data/" + DateTime.Now.Ticks + "_Response_" +
               //                   messageHandler.ResponseMessage.ToUserName + ".txt"));
 
               Response.Output.Write(messageHandler.FinalResponseDocument.ToString());
               //Response.Write("success");
               return;
           }
           catch (Exception ex)
           {
               LogHelper.Error(ex.Message,ex);
           }
           finally
           {
               Response.End();
           }
 
       }

相关教程