公众号第三方平台开发 获取 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节点即是我们需要的结果。

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

目录
相关文章
|
6月前
|
缓存 算法 网络协议
公众号JSSDK获取signature签名,史上最全,没有之一
公众号JSSDK获取signature签名,史上最全,没有之一
291 0
|
缓存 Java PHP
解决Hbuilder打包的APP微信支付时无法唤起支付,且提示{“code“:-100,“message“:“[payment微信:-1]General errors“}的问题
解决Hbuilder打包的APP微信支付时无法唤起支付,且提示{“code“:-100,“message“:“[payment微信:-1]General errors“}的问题
|
5月前
|
移动开发 小程序 开发工具
微信支付的类型分析(JSAPI+APP+H5+NATIVE+付款码+合单)
微信支付的类型分析(JSAPI+APP+H5+NATIVE+付款码+合单)
541 1
|
4月前
|
移动开发 JavaScript
thinkPHP5.0开发微信H5页面分享接口signature验证失败,signature与微信 JS 接口签名校验工具返回结果不一致
thinkPHP5.0开发微信H5页面分享接口signature验证失败,signature与微信 JS 接口签名校验工具返回结果不一致
86 0
|
小程序
小程序:official-account公众号关注组件
小程序:official-account公众号关注组件
182 0
如何验证企业微信生成的token是否有效?
如何验证企业微信生成的token是否有效?
107 0
|
安全 JavaScript 数据安全/隐私保护
微信开发获取签名wx.config
微信开发获取签名wx.config
284 0
微信开发获取签名wx.config
某酒店App sign、appcode签名解析(一) 带壳分析 r0tracer
某酒店App sign、appcode签名解析(一) 带壳分析 r0tracer
某酒店App sign、appcode签名解析(一) 带壳分析 r0tracer
|
移动开发 前端开发
实战:第八章:支付宝Native,JSAPI支付与微信Native,JSAPI,MWEB支付实现
实战:第八章:支付宝Native,JSAPI支付与微信Native,JSAPI,MWEB支付实现
106 0
|
Java
如何获取第三方应用授权app_auth_token
一,说明    1.第三方应用文档:[url]https://docs.open.alipay.com/20160728150111277227/intro[/url]     2.作用:代替商户发起相关逻辑请求 二,配置    1.
5172 12