skip to Main Content

I just wanna send a simple request to telegram bot APIs my code is:

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api.telegram.org/bot332537240:MY_TOKEN/getUpdates",
  CURLOPT_CUSTOMREQUEST => "POST",
));

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
  echo "cURL Error #:" . $err;
} else {
  echo $response;
}

returns:

cURL Error #:SSL certificate problem: self signed certificate

I don’t want use any ssl. I wont set any webhook for telegram. this is a simple request and I failed to handle this. please help me

4

Answers


  1. telegram webhook only work with ssl. you can simply use cloudflare free ssl.
    but it’s not working for .ir domains.
    you can get update much more easier.

    <?php 
    
    date_default_timezone_set("Europe/Berlin");
    define('BOT_TOKEN', 'yourtoken');
    
    define('API_URL', 'https://api.telegram.org/bot'.BOT_TOKEN.'/');
    //get update
    $content = file_get_contents("php://input");
    
    //json array
    $update = json_decode($content, true);
    //chatid
    $chatID = $update["message"]["chat"]["id"];
    ?>
    
    Login or Signup to reply.
  2. You can use CURLOPT_SSL_VERIFYPEER and set it to false in curl_setopt_array.

    CURLOPT_SSL_VERIFYPEER stop cURL from verifying the peer’s SSL certificate.

    Hope it should help.

    Login or Signup to reply.
  3. if you want playing with methods and get a overall understanding how telegram bot works,just put the url in browser and see the results.

    https://api.telegram.org/bot<token>/METHOD_NAME
    

    for your problem i think you are using really old curl library , get latest cacert file from here and replace it with the old one. if you are using xampp follow this link for more info

    Login or Signup to reply.
  4. I have the same problem and can be solved by copying file cacert.pem into my server and then insert the path of cacert file into my PHP script. In my case i put file cacert into drive C of my web server and then insert this script into my PHP File:

    CURLOPT_CAINFO => “C:cacert.pem”

    So your PHP script should be like this:

    $curl = curl_init();
    
    curl_setopt_array($curl, array(
      CURLOPT_URL => "https://api.telegram.org/bot332537240:MY_TOKEN/getUpdates",
      CURLOPT_CUSTOMREQUEST => "POST",
      CURLOPT_CAINFO => "C:cacert.pem",
    ));
    
    $response = curl_exec($curl);
    $err = curl_error($curl);
    
    curl_close($curl);
    
    if ($err) {
      echo "cURL Error #:" . $err;
    } else {
      echo $response;
    }
    

    You can download file cacert.pem from:

    https://drive.google.com/open?id=1FCLH88MpKNLDXZg3pJUSAZ0BbUbNmBR2

    If you still confuse, you can view my complete tutorial video on my youtube:

    https://youtu.be/UNERvcCz-Hw

    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search