微信第三方平台开发攻略

先从注册说起。

注册微信开放平台账号,进行资质认证。企业需要提交营业执照、公函(个人无法进行资质认证,腾讯认为个人是无法完成一个公众号第三方平台搭建的)。

公众号第三方平台是什么?

– 为公众号提供便捷的服务,基于微信公众号,微信提供的第三方API进行开发,为微信公众号的使用者提供便捷服务。

进行完资质认证后,可以创建公众号第三方平台了,一个账号最多创建5个公众平台。

比较便捷的是,填完第三方平台的资料(地址url, token等信息)后,便是审核通过的状态,也就可以开始调试了。

一步步按照文档来。

1.接收component_verify_ticket

注意,ticket每10分钟微信服务器会像你的地址推送一次。收到后,你要保存好,因为后面要用到。

推送的报文:



 

1413192605 

 

 



你需要保存 ComponentVerifyTicket ,我将他保存到redis, 以 $AppId$_ticket命名。($AppId$为AppId的值)。

处理完后,返回微信服务器 success 即可。

2.根据ticket获取component_access_token

https://api.weixin.qq.com/cgi-bin/component/api_component_token

post 如下数据

{

"component_appid":"appid_value" ,

"component_appsecret": "appsecret_value", 

"component_verify_ticket": "ticket_value" 

}

其中,appid和appsecret在微信开放平台-》管理中心-》平台详情查看(需要扫码)。

返回结果示例:

{

"component_access_token":"61W3mEpU66027wgNZ_MhGHNQDHnFATkDa9-2llqrMBjUwxRSNPbVsMmyD-yq8wZETSoE5NQgecigDrSHkPtIYA", 

"expires_in":7200

}

我将component_access_token保存到redis, 命名为 $APPID$_token.

3.根据component_access_token获取预授权码pre_auth_code

https://api.weixin.qq.com/cgi-bin/component/api_create_preauthcode?component_access_token=xxx

post 如下数据

{

"component_appid":"appid_value" 

}

其中,appid在微信开放平台-》管理中心-》平台详情查看。

返回结果示例:

{

"pre_auth_code":"Cx_Dk6qiBE0Dmx4EmlT3oRfArPvwSQ-oa3NL_fwHM7VI08r52wazoZX2Rhpz1dEw",

"expires_in":3600

}

我将pre_auth_code保存到redis, 命名为 $APPID$_preauth.

注意 1,2,3 都有一定的时效,发布时要做成定时任务。

4.生成授权链接

String url=String.format("https://mp.weixin.qq.com/cgi-bin/componentloginpage?component_appid=%s&pre_auth_code=%s&redirect_uri=%s",

    APPID, RedisUtil.getData(APPID+"_preauth"), "你的平台地址");

    System.out.println(url);

在浏览器中访问,效果如下

用微信扫码后,点确认,完成授权。

【小结一下】

以上步骤完成后,要完成发布前的验证。

进入微信开放平台,管理中心,点全网发布,会自动进入检测。

检测完成,全部成功后,可以提交审核。

检测包含自动回复,api的检查。

其中自动回复必须为加密模式。先接收加密的消息,然后返回加密的回复内容。

需要注意的是,加密、解密所用的 token ,aeskey是你在创建第三方平台填写的,appid是创建后可以查看。

5.自动化检测

在全网发布前,需要进行自动化检测(点全网发布开始)

自动化检测的账号(自动授权的公众号信息)

  1. (1)appid: wx570bc396a51b8ff8

  2. (2)Username: gh_3c884a361561

其中appid即你所填地址的$APPID$, 你可以捕获这个字段来判断是否来自自动化测试。

5.1 event事件模拟

当接收到来自 wx570bc396a51b8ff8 的事件消息时,一律回复 普通文本信息,信息内容event + “from_callback”(假定event为LOCATION,则Content为: LOCATIONfrom_callback)

5.2 固定文本消息应答

微信推送固定文本信息TESTCOMPONENT_MSG_TYPE_TEXT 到第三方平台地址 ,此时你需要回复固定的文本消息TESTCOMPONENT_MSG_TYPE_TEXT_callback作为应答。

if(msg.equals("TESTCOMPONENT_MSG_TYPE_TEXT")){

                    if(appid.equals("wx570bc396a51b8ff8")){

。。 。处理

} }

5.3 固定文本不应答,API检测

微信会推送一段以QUERY_AUTH_CODE:开头的文本信息,此时需要回复 success .(也就是不做应答)

然后调用客服API, 发送文本信息 ,文本内容为 $query_auth_code$_from_api。其中 $query_auth_code$ 是微信推送文本中除了 QUERY_AUTH_CODE:的内容。

示例代码如下:

if(msg.startsWith("QUERY_AUTH_CODE")){

                    if(appid.equals("wx570bc396a51b8ff8")){

                    String auth=msg.replace("QUERY_AUTH_CODE:", "");

                    System.out.println("AUTH:"+auth);

                this.responseOutText("success", response);

                // 调授权换取

                Compement.getAuthAc("", auth, request.getParameter("openid"));

                // 调客服

                return null;

    }

    }

5.4 ticket接收

微信模拟每10分钟的ticket推送,直接回复success 即可。

至此完成发布前的自动化检测准备工作,可以继续完善你的第三方平台,然后择期全网发布。

【全文完】

(原创文章,转载请注明出处)

0%