小程式客服訊息

Liuboxx1發表於2018-08-20
   /**
     * 傳送客服訊息介面
     */
    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;
    }

下面的都是通用程式碼

    //獲取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;
    }

相關文章