Bramka SMS - Plus - API

0

Witam wszystkich ponownie po dłuższej przerwie,

Od pewnego czasu pracuję nad projektem systemu opartego na PHP. Nadszedł czas na dodanie funkcji, dzięki której "system" będzie wysyłał powiadomienia SMS. Moja firma ma podpisaną umowę z Plusem dlatego nie mogę próbować z innymi operatorami.

Zgodnie z dokumentacją API przesłaną od opiekuna biznesowego plusa utworzyłem (skopiowałem z dokumentacji) mały kodzik:

$Host = "https://api1.multiinfo.plus.pl/sendsms.aspx";
$ServiceID = "numer_usługi";
$Handler = curl_init();
$URI = $Host . "?login=".$Username."&pasword=".$Password."&serviceId=".$ServiceID."&dest=".$phone."&text=".$text;
                                                                               
curl_setopt($Handler, CURLOPT_URL, $URI);
curl_setopt($Handler, CURLOPT_HEADER, false);
curl_setopt($Handler, CURLOPT_SSLCERT, $Cert);
curl_setopt($Handler, CURLOPT_SSLCERTPASSWD, "hasło_do_klucza");
curl_setopt($Handler, CURLOPT_SSL_VERIFYPEER, false);
$this->Response = curl_exec($Handler);
                if (curl_errno($Handler)) {
                               $Error = curl_error($Handler);
                }
curl_close($Handler);

Gdzie $Cert zawiera lokalizację pliku certyfikatu w formacie *.pem

Po wywołaniu funkcji otrzymuję komunikat błędu:
• Jak nie podam hasła do certyfikatu to mam
error reading X.509 key or certificate file: The request is invalid.
• A jak podam hasło lub podam „puste” hasło to jest
error reading X.509 potentially-encrypted key file: The request is invalid.

Próbowałem również z plikiem *.cer oraz *.p12 jednak rezultat jest taki sam.

Czy macie może pomysł, w którym miejscu popełniłem błąd lub co może być przyczyną problemu?

Pozdrawiam, Mateusz

3

&pasword=?

0
.__. napisał(a):

&pasword=?

Fakt, tutaj mam literówkę, dzięki :)

jednak błąd pojawia się w momencie próby odczytania certyfikatu poprzez curl_setopt($curl, CURLOPT_SSLCERT, 'link');. Żądanie nie jest wysyłane do servera API ze względu na błąd certyfikatu także na tą chwilę sytuacja pozostaje bez zmian :/

0

Niestety nie mam dostępu do konsoli serwera :( Będę wdzięczny za inne sugestie

1

Możesz z php wywołać

shell_exec ( string $cmd ) : string

Powinno zadziałać o ile nie jest to jakiś tani hosting (chodzi mi o komendy z posta up)

0

O, to nawet nie wiedzialem o istnieniu tej funkcji :) hosting jest na nazwa.pl

0

To raczej nie zadziała
na samym początku kodu


ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

do parametrów curl spróbuj dodać

curl_setopt($Handler, CURLOPT_SSL_VERIFYHOST, false);

po curl_exec dodaj

echo openssl_error_string();

@Edit
i poczytaj pozycje zawierające CURLOPT_SSLKEY na
https://www.php.net/manual/en/function.curl-setopt.php

0

Wracam do tematu bo znalazłem przyczynę problemu. Certyfikaty, które były dostępne po wygenerowaniu na stronie Polkomtel były wybrakowane - mimo podanych na początku danych firmy, brakowało ich po wysłaniu wniosku o podpisanie certyfikatu. Mało tego po "naprawieniu" certyfikatu na stronie Polkomtel trzeba było użyć pliku p12 i dowolnym konwerterem zmienić go na pem. I ten pem już wtedy działał z serwisem api.

Mimo wszystko dzięki za pomoc i przepraszam, że tak późno daje znać o rozwiązaniu.

Pozdrawiam

1 użytkowników online, w tym zalogowanych: 0, gości: 1