公众号第三方平台开发 获取 component_verify_ticket

简介:

8、推送component_verify_ticket协议

在公众号第三方平台创建审核通过后,微信服务器会向其“授权事件接收URL”每隔10分钟定时推送component_verify_ticket。第三方平台方在收到ticket推送后也需进行解密(详细请见【消息加解密接入指引】),接收到后必须直接返回字符串success。

上面是微信API里的原话,在回调页面做了下日志记录:

            string post = "";
            string get = "";
            for (int i = 0; i < Request.Form.Count; i++)
            {
                post += Request.Form.Keys[i] + "=" + Request.Form[i] + " ";
            }
            for (int i = 0; i < Request.QueryString.Count; i++)
            {
                get += Request.QueryString.Keys[i] + "=" + Request.QueryString[i] + " ";
            }</span>
但是,日志记录的Post和Get参数,都没内容 component_verify_ticket 相关的内容。

后面经过一番查询,原来是要这样才能获取到微信推送的内容:

            byte[] data = Request.BinaryRead(Request.TotalBytes);
           string postData = Encoding.Default.GetString(data);


            //公众号第三方平台的appid
            string appId = ConfigurationManager.AppSettings["WeixinAppID"];
            //第三方平台申请时填写的接收消息的校验token
            string token = ConfigurationManager.AppSettings["WeixinToken"];
            //第三方平台申请时填写的接收消息的加密symmetric_key
            string encodingAesKey = ConfigurationManager.AppSettings["WeixinEncodingAESKey"];
            string sMsg = "";//解密后的内容
            var msg = new WXBizMsgCrypt(token, encodingAesKey, appId);
            int ret = msg.DecryptMsg(
                Request.QueryString[" msg_signature "],
                Request.QueryString["timestamp"],
                Request.QueryString["nonce"],
                postData,
                ref sMsg);
            AppService.LogService.Log("回调参数", "构造参数:" +
                                              " appId:" + appId +
                                              " token:" + token +
                                              " encodingAesKey:" + encodingAesKey + " 解密参数:" +
                                              " signature:" + Request.QueryString["signature"] +
                                              " msg_signature:" + Request.QueryString["msg_signature"] +
                                              " timestamp:" + Request.QueryString["timestamp"] +
                                              " nonce:" + Request.QueryString["nonce"] +
                                              " postData:" + postData
                );

            AppService.LogService.Log("解密结果", ret + " " + sMsg);

解密后得到的结果大概是这样:

<xml>
<AppId>
    <![CDATA[wx34b5f92cdbb24fe4]]>
</AppId>
<CreateTime>1436066428</CreateTime>
<InfoType>
    <![CDATA[component_verify_ticket]]>
</InfoType>
<ComponentVerifyTicket>
    <![CDATA[ticket@@@SfS2Ck4oxPhL0LRSJH5v9Pr68vjeDfWWPx9SzIWzm6PeKGeEoszohQ-5-EBm4RajI7AKlzIz1Kj1ghPg0t199w]]>
</ComponentVerifyTicket>
</xml>

ComponentVerifyTicket节点即是我们需要的结果。

希望遇到同样问题的童鞋不用走弯路。

目录
相关文章
|
关系型数据库 MySQL Linux
centos7.0环境下安装MySql_8.0.12
centos7.0环境下安装MySql_8.0.12
|
4月前
|
JSON 监控 API
1688 电商 API 接口,批发采购数据轻松掌握
本文介绍了1688 API在批发采购中的应用,涵盖API功能、接入步骤、Python调用示例及实际业务场景,助力企业实现数据驱动的高效采购管理。
461 1
|
10月前
|
供应链 数据挖掘 API
1688app 商品详情接口系列(1688API)
1688作为国内知名批发采购平台,提供了一系列商品详情接口(API),助力企业和开发者获取商品基础、价格、库存及供应商信息。通过Python示例代码展示如何调用这些接口,应用场景涵盖采购决策辅助、数据分析与市场调研、电商平台整合及供应链管理系统的优化,为企业和采购商提供有力的数据支持,提升业务效率和竞争力。
369 15
|
9月前
|
搜索推荐 数据挖掘 API
亚马逊详情 API 接口的开发、应用与收益
亚马逊详情API接口是亚马逊开放平台提供的强大工具,允许开发者编程获取商品的详细信息,如标题、价格、描述等。通过注册账号、申请权限并调用API,开发者可构建比价工具、推荐系统和数据分析工具等应用,提升用户体验与运营效率,创造新商业模式。本文详细介绍其开发流程、应用场景及潜在收益,并附代码示例。
340 6
|
机器学习/深度学习 数据可视化 JavaScript
Plotly可视化介绍
Plotly可视化介绍
442 0
|
开发者
10 公众号开发 - 关注/取消关注事件
10 公众号开发 - 关注/取消关注事件
233 0
|
存储 人工智能 算法
数据安全与隐私保护在人工智能时代的挑战与应对
随着人工智能技术的快速发展,数据安全和隐私保护问题日益凸显。本文将探讨在人工智能时代下,数据安全面临的挑战以及如何有效应对,为保护用户数据和维护信息安全提供新思路。
1881 13
|
Linux 网络安全 虚拟化
|
SQL 存储 大数据
手把手教你大数据离线综合实战 ETL+Hive+Mysql+Spark
手把手教你大数据离线综合实战 ETL+Hive+Mysql+Spark
496 0
|
SQL Oracle 关系型数据库
导出Oracle数据库sqlplus命令行查询的结果到文件
导出Oracle数据库sqlplus命令行查询的结果到文件
1323 0