php 微信客服信息推送失败 微信重复推送客服消息 40001 45047
/***
* 微信客服发送信息
* 微信客服信息推送失败 微信重复推送客服消息 40001 45047
* 递归提交到微信 直到提交成功
* @param $openid
* @param int $is_repeat 是否递归
* @return bool
*/
function wx_kf_sendh($openid, $is_repeat = 0)
{
$result = M('Reply')->where("is_open=1")->order('listorder desc')->select(); if(!$is_repeat) {
$logarr = M('wx_kf_sendlog')->where("openid='".$openid."'")->order('createtime desc')->find();
if($logarr && $logarr['createtime'] > time()-10) {
return false;
}
$dddata['openid'] = $openid;
$dddata['createtime'] = time();
$dddata['text'] = 0; //1 发送成功 0失败
$dddata['image'] = 0; //1 发送成功 0失败
$dddata['diy'] = 0; //1 发送成功 0失败
$dddata['number'] = 0;
//$dddata['name'] = getVip($openid, 'nickname');
M('wx_kf_sendlog')->add($dddata);
} foreach ($result as $k => $v) { if (empty($v['type'])) {
continue;
} if ($v['type'] == 'text') {
$logarr = M('wx_kf_sendlog')->where("openid='".$openid."'")->order('createtime desc')->find();
if($logarr['text'] == '1') {
continue;
}
$str = str_replace("<br/>", '\n', $v['description']);
$str = str_replace(' ', '\r', $str);
$str = str_replace('href="', "href='", $str);
$str = str_replace('"', "'", $str);
$data = '{
"touser":"' . $openid . '",
"msgtype":"text",
"text":
{
"content":"' . $str . '"
}
}'; //发送信息
$appid = getids('config', 56, 'value');
$appsecret = getids('config', 57, 'value');
$accesstokenarr = getAccessToken($appid, $appsecret);
$access_token = $accesstokenarr['access_token'];
//通过基础消息接口发送的数据是XML格式的,但是调用客服接口发送的数据是json数据格式,更易传输。
$url = "https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token=" . $access_token; $rest = https_request($url, $data);
$jsonsarr = json_decode($rest, true);
if($jsonsarr['errcode'] != '0') { M('wx_kf_sendlog')->where("id=".$logarr['id'])->save(array('text'=>0, 'number'=>$logarr['number']+1,'logtime'=>$logarr['logtime'].'|text:'.date('Y-m-d H:i:s')));
wx_kf_send($openid,1);exit;
} else {
if($logarr['text'] == '0') {
M('wx_kf_sendlog')->where("id=".$logarr['id'])->save(array('text'=>1));
}
} } elseif ($v['type'] == 'image') { $logarr = M('wx_kf_sendlog')->where("openid='".$openid."'")->order('createtime desc')->find();
if($logarr['image'] == '1') {
continue;
} $data = '{
"touser":"' . $openid . '",
"msgtype":"image",
"image":
{
"media_id":"' . $v['media_id'] . '"
}
}'; //发送信息
$appid = getids('config', 56, 'value');
$appsecret = getids('config', 57, 'value');
$accesstokenarr = getAccessToken($appid, $appsecret);
$access_token = $accesstokenarr['access_token'];
//通过基础消息接口发送的数据是XML格式的,但是调用客服接口发送的数据是json数据格式,更易传输。
$url = "https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token=" . $access_token; $rest = https_request($url, $data);
$jsonsarr = json_decode($rest, true);
$logarr = M('wx_kf_sendlog')->where("openid='".$openid."'")->order('createtime desc')->find();
if($jsonsarr['errcode'] != '0') { M('wx_kf_sendlog')->where("id=".$logarr['id'])->save(array('image'=>0, 'number'=>$logarr['number']+1,'logtime'=>$logarr['logtime'].'|image:'.date('Y-m-d H:i:s')));
wx_kf_send($openid,1);exit;
} else {
if($logarr['text'] == '0') {
M('wx_kf_sendlog')->where("id=".$logarr['id'])->save(array('text'=>1));
}
} } elseif ($v['type'] == 'diy') {
$logarr = M('wx_kf_sendlog')->where("openid='".$openid."'")->order('createtime desc')->find();
if($logarr['diy'] == '1') {
continue;
}
$data = '{
"touser":"' . $openid . '",
"msgtype":"image",
"image":
{
"media_id":"' . down_share_img($openid) . '"
}
}'; //发送信息
$appid = getids('config', 56, 'value');
$appsecret = getids('config', 57, 'value');
$accesstokenarr = getAccessToken($appid, $appsecret);
$access_token = $accesstokenarr['access_token'];
//通过基础消息接口发送的数据是XML格式的,但是调用客服接口发送的数据是json数据格式,更易传输。
$url = "https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token=" . $access_token; $rest = https_request($url, $data);
$jsonsarr = json_decode($rest, true);
if($jsonsarr['errcode'] != '0') {
M('wx_kf_sendlog')->where("id=".$logarr['id'])->save(array('text'=>0, 'number'=>$logarr['number']+1,'logtime'=>$logarr['logtime'].'|diy:'.date('Y-m-d H:i:s')));
wx_kf_send($openid,1);exit;
} else {
if($logarr['diy'] == '0') {
M('wx_kf_sendlog')->where("id=".$logarr['id'])->save(array('diy'=>1));
}
} }
}
}
如果本文章已帮助到您!
php 微信客服信息推送失败 微信重复推送客服消息 40001 45047的更多相关文章
- 从苹果apns的feedback服务器获取推送失败的token
在开发自己的苹果推送服务时候,要合理的控制ios设备的Token,而这个Token是由苹果服务器Apns产生的,就是每次app问Apns要Token,由苹果服务器产生的Token会记录到Apns里面, ...
- 与众不同 windows phone (10) - Push Notification(推送通知)之推送 Tile 通知, 推送自定义信息
原文:与众不同 windows phone (10) - Push Notification(推送通知)之推送 Tile 通知, 推送自定义信息 [索引页][源码下载] 与众不同 windows ph ...
- 【Android应用开发】 推送原理解析 极光推送使用详解 (零基础精通推送)
作者 : octopus_truth 转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/45046283 推送技术产生场景 : -- ...
- Android推送服务——百度云推送
一.推送服务简介 消息推送,顾名思义,是由一方主动发起,而另一方与发起方以某一种方式建立连接并接收消息.在Android开发中,这里的发起方我们把它叫做推送服务器(Push Server),接收方叫做 ...
- iOS8自定义推送显示按钮及推送优化
http://www.jianshu.com/p/803bfaae989e iOS8自定义推送显示按钮及推送优化 字数1435 阅读473 评论0 喜欢2 导语 在iOS8中,推送消息不再只是简单地点 ...
- Android高效率编码-第三方SDK详解系列(三)——JPush推送牵扯出来的江湖恩怨,XMPP实现推送,自定义客户端推送
Android高效率编码-第三方SDK详解系列(三)--JPush推送牵扯出来的江湖恩怨,XMPP实现推送,自定义客户端推送 很久没有更新第三方SDK这个系列了,所以更新一下这几天工作中使用到的推送, ...
- PhoneGap 的消息推送插件JPush极光推送
一. 什么是极光推送 极光推送,使得开发者可以即时地向其应用程序的用户推送通知或者消息,与用户保持互动, 从而有效地提高留存率,提升用户体验.平台提供整合了 Android 推送.iOS 推送的统一推 ...
- 百度收录检测并主动推送API(实时 mip推送通用)
简要描述: 百度收录检测并主动推送API(实时) 请求URL: api.bigjiji.com/baiduCheck_123456 调用方式: img标签 参数: 参数名 必选 类型 说明 site ...
- atitit.极光消息推送服务器端开发实现推送 jpush v3. 总结o7p
atitit.极光消息推送服务器端开发实现推送 jpush v3. 总结o7p 1. 推送所设计到底功能1 1.1. 内容压缩1 1.2. 多引擎1 2. reg ,设置appkey and pw ...
随机推荐
- Sharepoint 2013企业内容管理学习笔记(一) 半自动化内容管理
大家好,今天我来与大家分享一个关于sharepoint2013文档管理方面的一个知识,我相信也许早就有人了解并熟知这项技术了,呵呵,众所周知,sharepoint 有一个很亮的功能,什么?没错,就是文 ...
- 某虚拟定位APP从破解到原理分析
工具环境ida7.0iphone 6ios 10.2 0x00:基本情况 1. 该app可以修改模拟手机地理位置(gps.基站.WIFI),拥有全局定位.指定应用定位.模拟扫街等功能,只能在已越狱的I ...
- 【Leetcode】【Easy】Reverse Integer
Reverse digits of an integer. Example1: x = 123, return 321Example2: x = -123, return -321 Have you ...
- 【Leetcode】【Easy】Remove Nth Node From End of List
Given a linked list, remove the nth node from the end of list and return its head. For example, Give ...
- /etc/hosts.allow和/etc/hosts.deny详解
今天遇到一台服务器22端口正常,但是通过ssh连接的问题.排查了防火墙和端口问题,半天没有找出来原因,后来求助大神,终于明白了通过etc目录下hosts.deny和hosts.allow文件可以限制远 ...
- ORA-01795: 列表中的最大表达式数为1000的解决方法
IN中的数据量不能超过1000条. 解决方案:把条件分成多个少于1000的IN即: DELETEFROMT_MM_SECTION_SITE_UPDATEWHERE T.T_MM_SECTION_SL_ ...
- 第二次scrum冲击
1.小组第二次冲刺任务及其完成情况描述. 本次冲刺我们小组经过讨论,实现的使我们爱上长大系统中的失物招领功能,由于在实际的实现中,对于本功能的逐渐深入和了解,渐渐发现这个功能实现起来需要由很多部分组成 ...
- 从产品展示页面谈谈Hybris系列之二: DTO, Converter和Populator
文章作者:张健(Zhang Jonathan) 上一篇文章 从产品展示页面谈谈Hybris的特有概念和设计结构 我们讲解了Hybris一些特有的概念以及大体架构,并且介绍了Facade层里是如何定义D ...
- OAuth 2.0协议在SAP产品中的应用
阮一峰老师曾经在他的博文理解OAuth 2.0里对这个概念有了深入浅出的阐述. http://www.ruanyifeng.com/blog/2014/05/oauth_2_0.html 本文会结合我 ...
- 每天一个linux命令(21):chgrp,chown,chmod
这三个命令都是改变文件属性与权限的,就放一起写了 charp:改变文件所属用户组 chown:改变文件所属者 chmod:改变文件的权限 一个文件对于owner,group ,others有不同的权限 ...