Bramka SMS - Plus - API

Bramka SMS - Plus - API
terlecki
  • Rejestracja:prawie 14 lat
  • Ostatnio:ponad 3 lata
  • Postów:36
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:

Kopiuj
$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

.__.
  • Rejestracja:ponad 5 lat
  • Ostatnio:prawie 5 lat
3

&pasword=?

terlecki
  • Rejestracja:prawie 14 lat
  • Ostatnio:ponad 3 lata
  • Postów:36
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 :/

terlecki
  • Rejestracja:prawie 14 lat
  • Ostatnio:ponad 3 lata
  • Postów:36
0

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

hzmzp
  • Rejestracja:ponad 11 lat
  • Ostatnio:2 dni
  • Postów:625
1

Możesz z php wywołać

Kopiuj
shell_exec ( string $cmd ) : string

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

edytowany 1x, ostatnio: hzmzp
terlecki
  • Rejestracja:prawie 14 lat
  • Ostatnio:ponad 3 lata
  • Postów:36
0

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

hzmzp
  • Rejestracja:ponad 11 lat
  • Ostatnio:2 dni
  • Postów:625
0

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

Kopiuj

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

do parametrów curl spróbuj dodać

Kopiuj
curl_setopt($Handler, CURLOPT_SSL_VERIFYHOST, false);

po curl_exec dodaj

Kopiuj
echo openssl_error_string();

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

edytowany 1x, ostatnio: hzmzp
terlecki
  • Rejestracja:prawie 14 lat
  • Ostatnio:ponad 3 lata
  • Postów:36
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

hzmzp
Oznacz temat rozwiązany :D

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.