1、1.1.2申请消息接收接口公众平台消息接口为开发者提供了一种新的消息处理方式。申请消息接收接口步骤如下图开发者可以把公众号设为开发模式,当用户发送消息给相应的公众号时,将跳过平台处理逻辑,直接将消息转发给开发者备案的url地址在页面相应地址点击申请,填写网址url和keyStr,其中keyStr由开发者填写,用作生成签名。keyStr是由数字和字母组成的6-32个字符串。url用来接收平台转发的消息,所提供的url地址必须可访问。且请求时间需在5秒以内,如果超过5秒仍没有返回信息,系统将主动断开连接。提交信息时,平台会校验url地址的有效性,同时开发者也可以通过校验规则检查是否是来自公众平台的
2、请求。url校验流程如下图公众平台用户提交信息后,公众服务器将发送POST请求到填写的URL上,并且带上以下四个参数:参数 描述Sign 加密签名Timestamp 时间戳Nonce 随机数echoStr 随机字符串开发者通过检验sign对请求进行校验(下面有校验方式)。若确认此次POST请求来自公众服务器,请原样返回echostr参数内容,则接入生效,否则接入失败。sign结合了开发者填写的keyStr参数和请求中的timestamp参数、nonce参数以及开发者账号信息。加密/校验流程:将token、timestamp、nonce三个参数进行字典序排序将以上排序后的参数表进行字符串连接,如
3、key1value1key2value2key3value3.keyNvalueN将clientID作为前缀,将clientSecret作为后缀,对该字符串进行SHA-1计算,并转换成大写开发者获得加密后的字符串可与sign对比,标识该请求来源于公众平台1.1.3申请tokentoken是开发者访问公众接口的唯一凭证,任何接口都需要附带token。开发者通过网络令牌直接与公众服务器交互,实现媒体文件上传、媒体文件获取、发送消息等功能,达到开发者与公众服务器交互的目的。调用接口所需要的token必须通过获取凭证接口获取。在使用公众接口前,你需要做以下两步工作:拥有一个公众账号,并获取到clien
4、tID和clientSecret(在公众平台申请内测资格,审核通过后可获得)通过获取凭证接口获取到access_token获取token流程如下图1.1.4调用消息接口 用户发送信息到接入方公众端口号,飞信公众平台透传消息到接入方,接入方回调发送消息接口发送消息群发类消息,每天单个用户仅能接收一次群发类信息,短信群发会统一扣除短信配额互动类消息用户一次上行接入方可以发送5条以内(含5条)消息,超出部分会扣除接入方短信包所有的消息必须是与公众账号存在好友关系消息接口处理流程如下图1.2实施步骤1、注册飞信公众平台用户,网址:2、申请成为开发者,填写接收飞信公众平台数据网址URL及校验信息。3、飞
5、信公众平台分配clientid。4、修改inc/config.inc.php文件中的CLIENTID及SECRET(第2步填写的校验信息)。5、运行gettoken.php文件更新token.txt6、使用飞信帐号与公众帐号发消息,测试是否正常。7、查看log/request_log.txt内容获取useruri、ppid修改sendmessage.php文件。9、运行sendmessage.php测试公众帐号主动发送消息是否正常。9、根据实际情况修改inc/config.inc.php中的DEBUG,true为开启日志记录,false为关闭日志记录。1.3飞信公众平台接口服务器配置信息IP地
6、址:221.176.30.209端口:80路径:/ op /飞信公众平台接口服务器出口IP地址:221.176.30.1、 221.176.30.22接口说明信息传递方式:HTTP POST消息编码:UTF-82.1参数介绍名称备注clientid第三方开发者ID,注册飞信公众平台时系统分配。timestamp时间戳,秒级nonce随机数,10000-99999整数token用于发送消息,需要向飞信公众平台接口申请。同一时间只有一个有效token,token超时后自助失效,需要申请新的token。message收发消息的内容xml。secret用于申请token、校验消息有效性使用,由用户注册
7、飞信公众平台时填写。sign用于申请token、校验消息有效性,根据算法生成。2.2sign生成算法1. 对除clientid以外的所有请求参数进行字典升序排列; 2.将secret、timestamp、nonce排序后的参数表进行字符串连接,如key1value1key2value2key3value3.keyNvalueN;3. 将clientid作为前缀,对该字符串进行SHA-1计算,并转换成16进制编码;4. 转换为全大写形式后即获得sign。PHP参考代码如下:/生成校验飞信公众平台的加密字符串 public function createSign($timestamp,$nonce
8、) $codes = clientid . $clientid; $paramskeystr = $secret;timestamp = $timestamp;nonce = $nonce; ksort($params); while (list ($key, $val) = each($params) $key = strtolower($key); $codes .= ($key . $val); $sign = strtoupper(sha1($codes); return $sign;2.3消息内容xml结构Data version=”1.0”PPID分配的公众号UserURI用户的U
9、RIMsgType消息类型Content消息内容CallID会话编号CseqValue消息顺序号MsgID消息编号ClientType渠道类型PackageID应用编号UserType用户类型/Data2.4获取token接口第三方向飞信公众平台申请。飞信公众平台API需要通过签名来访问,签名的过程是将请求参数串以及密钥根据一定签名算法生成的签名值。token将以消息的形式发送至第三方注册飞信公众平台时的填写的URL上。请求参数:clientid、timestamp、nonce、sign接口反馈:接口状态码token返回参数:clientid、timestamp、nonce、sign、toke
10、n 接口地址:http:/221.176.30.209/op/gettoken.php注:token发送至第三方的接收消息接口,请保存token用于发送消息时使用。2.5发送消息第三方向飞信公众平台发送。参数:clientid、timestamp、nonce、token、message/221.176.30.209/op/get.php2.6接收消息飞信公众平台向第三方发送。当普通飞信用户向公众账号发消息时,飞信公众平台服务器将POST该消息到第三方填写的URL上。clientid、timestamp、nonce、sign、message消息有效性校验:根据sign算法生成sign,新生成的s
11、ign与飞信公众平台POST的sign一致,验证信息有效。token通过此接口接收,请保存token用于发送消息时使用。36、注意事项:请保证HTTP请求数据编码务必为UTF-8格式,URL也务必为UTF-8编码格式。所有信息传递采用HTTP POST3.1接口权限请先确保公众账号已经拥有接口调用权限。默认每个公众帐号都不能超过下面的频率限制。 当超出调用接口频率限制,调用对应接口将会收到如下错误信息:接口调用频率限制:获取token请求:5(次/月)主动上行每个MsgID可以上行5次(用户向公众帐号发送一次消息,可通过接口向用户免费发送5次消息)单条消息超时时间为:30分钟。4常见问题1、D
12、EBUG配置为true时日志文件没有记录,请确认日志文件是否有写权限2、无法发送主动上行消息,请确认token是否正常。3、调试sendmessage.php及sendmessage_m.php报错414,开发测试期间开发者主动上行权限受限制不能发送主动上行。4、如何用手机客户端关注公众帐号,8月25号之后,手机客户端可以关注公众帐号。5、如何主动给用户发消息,可以使用sendmessage.php中的例子发送消息,UserURI通过用户日常聊天时获取(主动给用户发消息需要申请权限请与商务人员联系)。6、客户发送到公众平台的消息是否有提示?客户发送到公众平台的消息有列队,是发送成功的状态,公众平台到第三方开发者服务器,现在的处理方式是,如果连接超时,本条消息就丢失。5接口状态码200操作成功400操作失败414参数不正确415Hash异常416token异常418xml解析失败421用户飞信状态变更422400号不正确423token生成次数超限424msgid 到达上限(最多5次)425token不可用435扣减短信包不成功436短信包无可用余额500未知系统错误 (注:可编辑下载,若有不当之处,请指正,谢谢!)
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1