Я пытаюсь использовать Sinch Sms Api, однако постоянно получаю сообщение об ошибке: Неверная подпись. Ниже приведен код PHP, который я использую для вызова API, Может ли кто-нибудь помочь мне? Благодарю.
Это штамп времени? Я создаю UTC Time Stamp, используя эту строку кода $ utc_str = gmdate («Y-m-d \ TH: i: s \ Z»);
<?php
$key = "000000-1111-4335-b1c1-11111111";
$secret = "0000000000000/rw==";
$phone_number = "919920283453";
$S_date = date('Y-m-d H:i:s');
$datetime = date("Y-m-d H:i:s", time() - date("Z"));
$message = "Hello";
$from ="";$utc_str = gmdate("Y-m-d\TH:i:s\Z");$data = json_encode(array('Message'=>$message, ));
$content_type = "application/json; charset=UTF-8";
$canonicalized_headers = "x-timestamp:".$utc_str ;
$path = "/v1/sms/".$phone_number;$content_md5 = base64_encode( md5( utf8_encode($data), true ));$string_to_sign =
"POST\n".
$content_md5."\n".
$content_type."\n".
$canonicalized_headers."\n".
$path;
$generator = new SinchTicketGenerator($key, $secret);
$signature = base64_encode(hash_hmac("sha256",
utf8_encode($string_to_sign), $secret, true));
$authorization = "application " . $key . ":" . $signature;
$ch = curl_init('https://messagingapi.sinch.com/v1/sms/' .
$phone_number);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('content-type:
application/json; charset=UTF-8',
'x-timestamp:' .
$utc_str,
'authorization:' .
$authorization));$result = curl_exec($ch);if(curl_errno($ch)) {
echo 'Curl error: '. curl_error($ch);
} else {
echo $result;
}
curl_close($ch);
}
Задача ещё не решена.
Других решений пока нет …