项目要做一个微信客服管理的功能,于是从上礼拜开始就着手开发,首先看微信公众平台开发者文档:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1451025056&token=&lang=zh_CN , 获取客服基本信息,添加客服帐号,设置客服信息,删除客服帐号,这些接口都调好,唯独上传客服头像出了问题。
调用示例(使用curl命令,用FORM表单方式上传一个多媒体文件): curl -F [email protected] "https://api.weixin.qq.com/customservice/kfaccount/uploadheadimg?access_token=ACCESS_TOKEN&kf_account=KFACCOUNT"
一直调试了好多天,都没有成功,一直是 返回"errcode":41005,"errmsg":"media data missing"
查了网上好多资料,后面试了很多才发现,原来跟php 版本是有关的(吐血)。
php5.5已经把通过@加文件路径上传文件的方式给放入到Deprecated中了。php5.6默认是不支持这种方式了,而是使用:'media' => new \CURLFile(realpath($media)) 这种方式。特殊处理:curl_setopt ( $ch, CURLOPT_SAFE_UPLOAD, false);
/**
* 上传客服头像
* @param string $account
* @param string $media
*/
public function uploadheadimg($account, $media)
{
$data = $this->getData('/customservice/kfaccount/uploadheadimg', [
'access_token' => $this->getAccessToken()
], [
'kf_account' => $account,
'media' => new \CURLFile(realpath($media))
]
);
return $data;
}
附上curl方法:
protected function curl($url, $data = null)
{
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
curl_setopt( $curl, CURLOPT_SAFE_UPLOAD, FALSE);
if (! empty($data)) {
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
}
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$output = curl_exec($curl);
curl_close($curl);
return $output;
}
最后是接口上传成功了,但是查看客服列表,竟然客服头像图片没有显示,直接在公众号上传的就能直接显示,还在找原因当中。。。如有看到知道的烦请赐教,谢谢。