天天看点

微信curl上传客服头像接口遇到的坑返回"errcode":41005,"errmsg":"media data missing"

    项目要做一个微信客服管理的功能,于是从上礼拜开始就着手开发,首先看微信公众平台开发者文档: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;
    }
           
最后是接口上传成功了,但是查看客服列表,竟然客服头像图片没有显示,直接在公众号上传的就能直接显示,还在找原因当中。。。如有看到知道的烦请赐教,谢谢。

继续阅读