Home  >  Article  >  WeChat Applet  >  Mini Program Example: Implementation code for mini program customer service to send picture information

Mini Program Example: Implementation code for mini program customer service to send picture information

不言
不言Original
2018-08-21 17:19:365035browse

This article brings you an example of a mini program: the implementation code for sending picture information to the mini program customer service. It has certain reference value. Friends in need can refer to it. I hope it will be helpful to you.

   /**
     * 发送客服消息接口
     */
    public function actionCustomService()
    {
        $data = file_get_contents('php://input');        
        $data = json_decode($data,true);        
        $qrcode_url = Yii::$app->params['gzh_qrcode'];        
        $openId = $data['FromUserName'];        
        $access_token = self::getAccessToken();        
        $url = 'https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token='.$access_token;        
        $appid = Yii::$app->params['miniAppid'];        
        $media_id = self::getRedis("wx_material:$appid", 'media_id');        
        if (!$media_id) {            
        $material = self::uploadImg($qrcode_url,$access_token);            
        if ($material) {                
        $redis = Yii::$app->redis;                
        $redis->hmset("wx_material:$appid", 'type', $material['type'], 'media_id', $material['media_id'], 'created_at', $material['created_at']);                
        $redis->expire("wx_material:$appid", 7200);
            }            
            $media_id = $material['media_id'];
        }        
        $data1 = [
                'touser' => $openId,            
                'msgtype' => 'image',            
                'image' => [
                       'media_id' => $media_id,
            ],
        ];        
        $data1 = json_encode($data1,JSON_UNESCAPED_UNICODE);       
        $result = self::https_request($url,$data1);        
        echo 'success';
    }
   //上传素材到微信
    public static function uploadImg($img,$access_token)
    {
        $url = 'https://api.weixin.qq.com/cgi-bin/media/upload?access_token='.$access_token.'&type=image';        
        $fileName = time() . '.jpg';        
        $source = file_get_contents($img);
        file_put_contents('./images/material/'.$fileName,$source);        
        if (class_exists('\CURLFile')) {            
        $josn = array('media' => new \CURLFile(realpath("images/material/" . $fileName)));
        } else {            
        $josn = array('media' => '@' . realpath("images/material/" . $fileName));
        }
        unlink('./images/material/'.$fileName);        
        $result = self::curl_post($url,$josn);        
        $result = json_decode($result,true);        
        return $result;
    }

The following are general codes

    //获取access_token
    public static function getAccessToken()
    {
        $appid = Yii::$app->params['miniAppid'];        
        $appsecret = Yii::$app->params['miniSecret'];        
        $url = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid='.$appid.'&secret='.$appsecret;        
        $result = self::httpGet($url);        
        $access_token = json_decode($result,true)['access_token'];        
        return $access_token;
    }
    //get方法获取内容
    private static function httpGet($url)
    {
        $curl = curl_init();
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($curl, CURLOPT_TIMEOUT, 500);
        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 2);
        curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 2);
        curl_setopt($curl, CURLOPT_URL, $url);        
        $res = curl_exec($curl);
        curl_close($curl);        
        return $res;
    }
    //http请求
    public static function https_request($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);        
        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;
    }

Related recommendations:

Solution to authorized photo album in mini program (with code)

WeChat Mini Program Example: Code Implementation of Click Events and Long Press Events

The above is the detailed content of Mini Program Example: Implementation code for mini program customer service to send picture information. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn