微信第三方平台全网发布流程

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_35829542/article/details/52162413
1 发布前阅读

    【消息加解密接入指引】https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=open1419318479&lang=zh_CN
    【全网发布指引】https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=open1419318611&lang=zh_CN


2 加解密

加解密按【消息加解密接入指引】文档操作即可,需注意的是如果是java环境,替换jdk ${java_home}/jre/lib/security/ 下面的local_policy.jar和US_export_policy.jar


3 发布修改流程

    因为是全网发布检测,只要通过一次就行了,而且不能影响正常流程,所以代码加上判断是否是 gh_3c884a361561 发来的事件或消息。

3.1 配置公众号消息与事件接收URL

检测流程前三步都是通过此URL接口接受消息的,如图:
这里写图片描述
3.2 step 1

    模拟粉丝触发专用测试公众号的事件,并推送事件消息到专用测试公众号,第三方平台方开发者需要提取推送XML信息中的event值,并在5秒内立即返回按照下述要求组装的文本消息给粉丝。

    判断是 gh_3c884a361561 发来的事件
    解密收到的消息
    拼装Content: event + “from_callback” (假定event为LOCATION,则Content为: LOCATIONfrom_callback)
    设置文本消息,如:

<xml>
  <ToUserName><![CDATA[ozy4qt0Rsc9YJzR5nEeVAaTHg9DQ]]></ToUserName>
  <FromUserName><![CDATA[gh_3c884a361561]]></FromUserName>
  <MsgType><![CDATA[text]]></MsgType>
  <Content><![CDATA[LOCATIONfrom_callback]]></Content>
  <CreateTime>1470707436932</CreateTime>
</xml>
<!-- 需注意两点,1. 从接收消息中拿到的toUser跟fromUser塞到回复文本消息时需互换;2.回复的文本消息必须需要这五个字段,且MsgType是 text -->

    1
    2
    3
    4
    5
    6
    7
    8

    加密, 其中timestamp跟nonce可以自主生成
    return

3.3 step 2

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

    判断是 gh_3c884a361561 发来的消息且消息包含 TESTCOMPONENT_MSG_TYPE_TEXT
    解密收到的消息
    拼装Content:TESTCOMPONENT_MSG_TYPE_TEXT_callback
    设置消息,加密跟注意事项跟step 1一样,这里不赘述。
    return

3.4 step 3

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

    判断是 gh_3c884a361561 发来的消息且消息包含 QUERY_AUTH_CODE
    解密收到的消息
    根据QUERY_AUTH_CODE获取授权公众号的authorizer_access_token。具体怎么获取可以查看第三方平台接入文档
    查看微信|公众平台开发者文档的客服消息 http://mp.weixin.qq.com/wiki/11/c88c270ae8935291626538f9c64bd123.html
    使用http请求post https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token=authorizer_access_token
    设置请求body:

{
    "touser":"OPENID",
    "msgtype":"text",
    "text":
    {
         "content":"Hello World"
    }
}
# OPENID 替换为: 接受都消息中的 `FromUserName`
# content设置为:$query_auth_code$_from_api(其中$query_auth_code$需要替换成推送过来的query_auth_code)

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10

    return “”, 返回空串

注:第5/6两步建议使用线程异步处理,主线程在获取完authorizer_access_token就直接返回空串。流程控制在5s内完成,否则通不过检测。
3.5 step 4

    模拟推送component_verify_ticket给开发者,开发者需按要求回复(接收到后必须直接返回字符串success)

此步骤不多赘述,具体怎么处理可以查看第三方平台接入文档


4 问题与解决
4.1 消息回复不正确

缺少 导致, 原因是使用对象转xml,这个字段放父类里边了,生成xml时丢了。
4.2 客服消息不成功

不成功主要是处理逻辑时间太长了,解决方法是在上次检测把authorizer_access_token记录下来, 这次检测的时候不走获取这个token的流程,这样节省不少时间。

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值