不自重者,取辱。不自长者,取祸。不自满者,受益。不自足者,博闻。
关于微信公众平台Private API 进入全屏
line

一直在用Weixin PHP Private API实现一些很有用的功能,但今天突然发现这个功能挂掉了,仔细看了一下https://mp.weixin.qq.com/cgi-bin/singlesend  接口的返回内容:{"base_resp":{"ret":10706,"err_msg":"customer block"}},返回错误码10706,第一反应肯定是微信官方接口又调整参数了,顾不上去管这个错误码的原因,直接登录微信公众平台后台,给自己发一个消息,抓个包分析了一下!果然,是该接口的参数都被规范了一下,之前这个接口中,部分参数为Get,部分为Post,现在都是Post的了(指的是:token和t参数)。修改后:

public function send($id, $content) {
    $post = array();
    $post['tofakeid'] = $id;
    $post['type'] = 1;
    $post['content'] = $content;
    $post['ajax'] = 1;
    $post['token'] = $this->webToken;
    $post['t'] = "ajax-response";
    $url = "https://mp.weixin.qq.com/cgi-bin/singlesend";
    $re = $this->httpClient->post($url, $post, $this->cookie);
    return json_decode($re['body']);
}

部署后再测试了一遍,运行完美!返回:{"base_resp":{"ret":0,"err_msg":"ok"}}

顺便把整个Weixin-PHP-Private-API重构了一下,有需要的,可以跟我说一声,单发;当然,在Github上还有大牛整理的更完整的版本,可以去获取,获取之前看看最后更新时间。


以下内容于2013-11-30日更新


的确,根据这两天的情况看来,返回10706错误码的问题,应该跟接口参数有调整没太大关系,而是微信公众平台会验证当前账号是否在24小时内于公众平台有信息交互行为!这个24小时的障碍,很恶心,会导致这个private api的稳定性减弱。

所以,目前为了保证这个singlesend接口能正常提供服务,只好每天早上主动给自己的微信公众平台账号发送一条消息,以实现24小时内与微信公众平台保持连接状态!

这两天没时间,过些天再看看能否通过定时任务模拟主动发送信息给微信公众平台,以解决24小时限制。


以下内容于2014-04-09日更新


这两天发现blog的留言无法被及时通过微信公众平台推送,今天总算抽出来点儿时间看了一看。看到发送消息的接口返回{"base_resp":{"ret":-3,"err_msg":"invalid session"}},一看便知是请求不合法,必然是cookie或者webToken出问题了,问题应该就定位到模拟登陆的地方了,果然,通过微信公众平台后台登陆抓包看了一下,login接口的返回值格式发生了变化,更改一下即可!目前Private API已升级!

/**
 * 登录后从结果中解析出webToken
 * @param  [String] $loginRet
 * @return [Boolen]
 */
private function getWebToken($loginRet) {
    $loginRet = json_decode($loginRet, true);
    $msg = $loginRet["redirect_url"];
    $msgArr = explode("&token=", $msg);
    if(count($msgArr) != 2) {
        return false;
    } else {
        $this->webToken = $msgArr[1];
        file_put_contents($this->webTokenPath, $this->webToken);
        return true;
    }
}


以下内容于2014-04-15日更新


介于好多网友都需要这个API,那就放出来吧。weixin-php-private-sdk.zip

趣店(原趣分期)技术学院
重点关注技术架构、服务化、优秀工具、自动化平台、开发全流程一体化解决方案、新人培养、工程师进阶之道等方面
这里环境优雅、氛围年轻、主要是福利还多,还等什么?我们敞开技术的大门,欢迎各种工程师加入!

评论区域

line
  • Alien 2014-08-10 11:39:23 回复
    回复 凌小锋 : 这个错误是哪儿来的?如何操作会出来这个错误呢?
  • Alien 2014-08-10 11:36:51 回复
    回复 sky : Windows下用Fiddler,Mac下用Charles Proxy
    sky said:
    你好。你一般用什么抓包工具的?
  • sky 2014-08-04 17:12:00 回复
    你好。你一般用什么抓包工具的?
  • 凌小锋 2014-06-27 20:00:27 回复
    这个错误是怎么回事?Errnoerror:14077458:SSL routines:SSL23_GET_SERVER_HELLO:reason(1112)
  • Alien 2014-04-15 13:09:17 回复
    回复 dong : 对的,限制都是一样
    dong said:
    回复 Alien : 那这个api跟微信的客服接口没有什么区别了就是说
  • dong 2014-04-15 13:08:13 回复
    回复 Alien : 那这个api跟微信的客服接口没有什么区别了就是说
    Alien said:
    回复 dong : 现在是48小时限制
  • Alien 2014-04-15 13:06:52 回复
    回复 dong : 现在是48小时限制
    dong said:
    回复 Alien : 那目前这个最新的api也有24小时限制吗?
  • dong 2014-04-15 13:05:57 回复
    回复 Alien : 那目前这个最新的api也有24小时限制吗?
    Alien said:
    回复 dong : 文章中已开放源代码,请自行下载,遇到问题请第一时间反馈给我,我会尽快更新。
  • Alien 2014-04-15 12:51:51 回复
    回复 dong : 文章中已开放源代码,请自行下载,遇到问题请第一时间反馈给我,我会尽快更新。
    dong said:
    求api,谢谢~
  • dong 2014-04-15 11:44:52 回复
    求api,谢谢~
  • Alien 2013-11-30 15:55:19 回复
    回复 tony : 恩,应该是这样子的,微信搞得还挺恶的。。。
    tony said:
    不是参数调整引起的10706错误,应该是微信调整了规则,也需要在24小时有互动才能回复了。
  • tony 2013-11-28 23:07:11 回复
    不是参数调整引起的10706错误,应该是微信调整了规则,也需要在24小时有互动才能回复了。
  • Alien 2013-11-27 19:11:56 回复
    回复 linghucong : 我单独Mail给你吧
    linghucong said:
    求Weixin-PHP-Private-API,谢谢
  • Alien 2013-11-27 19:11:14 回复
    回复 linghucong : 最近好像微信公众平台接口经常在变动的样子,有点不太稳定。
    linghucong said:
    求Weixin-PHP-Private-API,谢谢
  • linghucong 2013-11-25 14:49:29 回复
    求Weixin-PHP-Private-API,谢谢