微信小程序客服回复图片之图片素材上传~

PHP 微信小程序客服回复图片之图片素材上传

开场捋一下逻辑:无论小程序客服还是公众号的回复,开发时你会发现当你想要它自动回复图片功能时,则需先将你要回复的图片上传到微信的后台素材库,然后拿到上传成功后给你返回的素材码,然后就需要你去拿着这个素材码去调用接口给用户发送消息了,不多BB,看代码




public $accessToken = 'xaakjajlsdjakjdajkasjdlasjdasda';        // 微信accessToken 	

public $wxUpload   = 'http://api.weixin.qq.com/cgi-bin/media/upload'; //上传素材到微信服务器接口

$filePath =  ./public/wechat_img.png';    //需要上传图片的路径
  
    //上传图片素材
    //解析图片文件名
    public function wxMedia($filePath ,$mediaKey = '')
    {
        $accessToken = $this->getAccessToken();
        $url = $this->wxUpload.'?access_token='.$accessToken.'&type=image';
        if (class_exists ( '\CURLFile' )) {//关键是判断curlfile,官网推荐php5.5或更高的版本使用curlfile来实例文件
            $filedata = array (
                'fieldname' => new \CURLFile ( realpath ( $file_path ), 'image/jpg' )
            );
        } else {
            $filedata = array (
                'fieldname' => '@' . realpath ( $file_path )   
            );
        }
        $result  = $this->upload($url,$filedata,$file_path,$mediaKey);
        return $result;
    }


    //上传素材到微信小程序服务器
    /*
     * $url 上传素材接口
     * $filedata  解析后图片信息
     * $file_path 图片原本路径
     * */
    public  function upload($url, $filedata, $file_path) {
        $curl = curl_init ();
        if (class_exists ( '/CURLFile' )) {//php5.5跟php5.6中的CURLOPT_SAFE_UPLOAD的默认值不同
            curl_setopt ( $curl, CURLOPT_SAFE_UPLOAD, true );
        } else {
            if (defined ( 'CURLOPT_SAFE_UPLOAD' )) {
                curl_setopt ( $curl, CURLOPT_SAFE_UPLOAD, false );
            }
        }
        curl_setopt ( $curl, CURLOPT_URL, $url );
        curl_setopt ( $curl, CURLOPT_SSL_VERIFYPEER, FALSE );
        curl_setopt ( $curl, CURLOPT_SSL_VERIFYHOST, FALSE );
        if (! empty ( $filedata )) {
            curl_setopt ( $curl, CURLOPT_POST, 1 );
            curl_setopt ( $curl, CURLOPT_POSTFIELDS, $filedata );
        }
        curl_setopt ( $curl, CURLOPT_RETURNTRANSFER, 1 );
        $output = curl_exec ( $curl );
        curl_close ( $curl );
        $output = json_decode($output,true);
        if (!isset($output['media_id'])) {
            throw exception(var_export($output, true), 500);
        }
        unlink($file_path);     //此时就已经上传图片素材成功即可删除本地图片或者不删除
        return $output['media_id'];
    }



### 这里贴一段组装回复素材信息的代码
        $fromUsername = $postObj['FromUserName'];   //发送者openid
        $data=array(
            "touser"    => $fromUsername,
            "msgtype"   => "image",
            "image"     => array("media_id"=>$mediaid)   //将刚才获取到的media_id 放入这里面就可以了
        );
        $json = json_encode($data,JSON_UNESCAPED_UNICODE);  //php5.4+   
        $res  = $this->requestApi($json);     //回复的格式建议无需加密,推荐json格式, 在这里吐槽一下微信客服推送的文档,回复XML各种报错-.-
        return $res;

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值