记一次 微信提交审核的处理_审核

为了让这张图片上显示的所有成功,花了我不少时间呢,其中主要花在了 "返回Api文本消息“那一段及”返回普通 文本消息“,那两部分

之所以会有这两部分的验证,主要是因为勾选了 如果勾选了公众号的消息管理权限集,无论是否勾选了小程序的客服消息管理权限集都会做以下检测。

接下来就是折腾的时间了,说真的文档写的真是不清不楚的,网上找的一些也是讲得不全面,我这边尽我所能的写一回出来,尽可能的仔细,我用的是php 我把这部分的代码也贴出来。

首先在写吧,代码不在我这边,要尽可能写得细,让其他人少走些弯路。

具体审核通过是这三条,截取文档上的说词如下

1、模拟粉丝发送文本消息给专用测试公众号,第三方平台方需根据文本消息的内容进行相应的响应:

1)微信模推送给第三方平台方:文本消息,其中Content字段的内容固定为:TESTCOMPONENT_MSG_TYPE_TEXT

2)第三方平台方立马回应文本消息并最终触达粉丝:Content必须固定为:TESTCOMPONENT_MSG_TYPE_TEXT_callback

2、模拟粉丝发送文本消息给专用测试公众号,第三方平台方需在5秒内返回空串表明暂时不回复,然后再立即使用客服消息接口发送消息回复粉丝

1)微信模推送给第三方平台方:文本消息,其中Content字段的内容固定为: QUERY_AUTH_CODE:$query_auth_code$(query_auth_code会在专用测试公众号自动授权给第三方平台方时,由微信后台推送给开发者)

2)第三方平台方拿到$query_auth_code$的值后,通过接口文档页中的“使用授权码换取公众号的授权信息”API,将$query_auth_code$的值赋值给API所需的参数authorization_code。然后,调用发送客服消息api回复文本消息给粉丝,其中文本消息的content字段设为:$query_auth_code$_from_api(其中$query_auth_code$需要替换成推送过来的query_auth_code)

3、

开发者需按要求回复(接收到后必须直接返回字符串success)。

第一条的实现过程:

因为正常的授权码,在完整的对接过程中是有通过预授权码生成

文档上是这样表述的

步骤4:授权后回调URI,得到授权码(authorization_code)和过期时间

授权流程完成后,授权页会自动跳转进入回调URI,并在URL参数中返回授权码和过期时间(redirect_url?auth_code=xxx&expires_in=600)

所以根据第一步的操作,要回复消息,就要调用发送“客户消息 的接口,

如果要回的话要获取授权码,但是授权码,如何获取,这又是一个问题,这里需要用到 这个url地址在微信开放平台进行设置,

记一次 微信提交审核的处理_文本消_02

也就是微信推送 component_verify_ticket 的地址,假设这个地址为 abc.com;

记一次 微信提交审核的处理_审核_03

就是在测试过程中,微信会往那个地址 abc.com上进行推送 一个  消息,具体内容解码过程就不多写了,解码后的内容有

几类,当推送 ComponentVerifyTicket 解码后的内容为这个

<xml>

<AppId> </AppId>

<CreateTime>1413192605 </CreateTime>

<InfoType> </InfoType>

<ComponentVerifyTicket> </ComponentVerifyTicket>

</xml>

当为授权时的事件为这个内容

<xml>

<AppId>第三方平台appid</AppId>

<CreateTime>1413192760</CreateTime>

<InfoType>authorized</InfoType>

<AuthorizerAppid>公众号appid</AuthorizerAppid>

<AuthorizationCode>授权码(code)</AuthorizationCode>

<AuthorizationCodeExpiredTime>过期时间</AuthorizationCodeExpiredTime>

<PreAuthCode>预授权码</PreAuthCode>

<xml>

具体判断 时 ,以php为例

$xml_tree = new \DOMDocument();

$xml_tree->loadXML($encryptMsg);

$infoType = $xml_tree->getElementsByTagName('InfoType')->item(0)->nodeValue;

$AuthorizerAppid = $xml_tree->getElementsByTagName('AuthorizerAppid')->item(0)->nodeValue;

从而获取 InfoType即可,当为 $InfoType= authorized  并且为 授权的公众号appid为微信的测试公众号时,比如在

记一次 微信提交审核的处理_微信_04

写的 wx570bc396a51b8ff8 时,要把 AuthorizationCode 存下来

$AuthorizationCode = $xml_tree->getElementsByTagName('InfoType')->item(0)->nodeValue; 并且要存缓存,因为这各授权码在下一步操作中很重要,它并不是与 消息与事件接收URL,比如 ”cba.com“ 处在一个http请求当中,所以没办法直接在程序中使用,必须要存下来,在等待微信推送事件往cba.com上用到

记一次 微信提交审核的处理_微信_05

好了到这一步我们终于把 授 权码获取到了

接着就在验证全网接入时,微信会

此时获取接口调用凭证:

记一次 微信提交审核的处理_微信_06

记一次 微信提交审核的处理_认证_07

获取图片中的画红线的值,即是调用任证了,此时cba.com 这个消息事件地址推送消息回复事件,具体格式在解码后为如下 的xml格式

记一次 微信提交审核的处理_审核_08

判断出msytype=text 并且 content='TESTCOMPONENT_MSG_TYPE_TEXT'时,如文档说的回复消息“TESTCOMPONENT_MSG_TYPE_TEXT_callback

具体实现为

记一次 微信提交审核的处理_认证_09

此处的touser就是事件接收到时的fromuser.content的值 为 TESTCOMPONENT_MSG_TYPE_TEXT_callback

这样回复即可,、

第二条

2、模拟粉丝发送文本消息给专用测试公众号,

方法与之前的类似,不同的是获取授权码的方式,此处的授权码是通过消息内容直接推送过来的

记一次 微信提交审核的处理_微信_10

所以获取授 权码以php为例

list(, $QUERY_AUTH_CODE) = explode(':', $content); 如此即可

接着调用上面的方式如法炮制获取调用凭证,在调用

客服接口-发消息接口

用上面的方法

记一次 微信提交审核的处理_认证_09

只是此处的content就改为“授权码_from_api” 如此即可。这时,验证时即可以全部能过了。

模拟推送component_verify_ticket给开发者, 这条没什么可说的,直接在授权事件的地址那边输出success即可了