Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Kodowanie znaków w Przelewy24
Malinaa
post
Post #1





Grupa: Zarejestrowani
Postów: 578
Pomógł: 6
Dołączył: 21.07.2008

Ostrzeżenie: (0%)
-----


Napisałem Apkę zintegrowaną z systemem płatności Przelewy24 jak już myślałem, że wszystko śmiga pojawił się problem z kodowaniem znaków.
Po dokonaniu transakcji, przechodzę do w panelu -> transakcje i w polu opis zamiast polskich liter z ogonkami są znaczki.

Kod funkcjonuje na dokumentacji P24 w wersji 3.2.
Dodaję: $payments->addValue('p24_encoding', 'UTF-8') i nic nie pomaga.
No nie i zakręciło mi się w głowie, kto wie co tu nie gra?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
Salvation
post
Post #2





Grupa: Zarejestrowani
Postów: 408
Pomógł: 74
Dołączył: 15.07.2014

Ostrzeżenie: (0%)
-----


A sam plik wysyłki w jakim kodowaniu zapisałeś? UTF-8 (bez BOM)?
Go to the top of the page
+Quote Post
Malinaa
post
Post #3





Grupa: Zarejestrowani
Postów: 578
Pomógł: 6
Dołączył: 21.07.2008

Ostrzeżenie: (0%)
-----


Sam plik wysyłki, tzn. u mnie to jest adres w kontrolerze.

  1. /* @Route: "/payments/receiver" */
  2. public function receiver(): void
  3. {
  4. $request = $_POST (IMG:style_emoticons/default/questionmark.gif) [];
  5. $payments = $this->service->initializePayments();
  6. $serviceReceiver = new ReceiverService($payments, $this->model);
  7. $serviceReceiver->process($request);
  8. }


a cała akcja dzieje się w ->process() i już sprawdzałem plik kontrolera i serwisu, gdzie jest process()
Notepad++ pokazuje UTF-8 czyli bez BOM, poza tym edytor Visual Studio Code robi dobrze kodowanie.
Przelewy24 niestety nie tak dobrze... i zostaje chyba kopać w kodzie, a raczej napisać do wsparcia.

Zleciał dzionek na szukaniu drobiazgu i nadal coś nie pasuje, napisałem więc do wsparcia i otrzymałem m.in. info, że domyślne kodowanie to 'ISO-8859-2', zakładałem, że 'UTF-8'.
No to już wiem co można zrobić, aby mieć polskie znaki diakrytyczne. Pozostaje jednak pytanie po co jest parametr 'p24_encoding' - system kodowania przesyłanych znaków?

Kod był taki:
  1. $payments = $this->payments;
  2.  
  3. $payments->addValue('p24_session_id', $formData['session']);
  4. $payments->addValue('p24_description', $description);
  5. $payments->addValue('p24_encoding', 'UTF-8');
  6. ...

dopisałem:
  1. $description = $formData['description'];
  2. $encoding = mb_detect_encoding($description);
  3.  
  4. if (!empty(ConstantConfig::P24_ENCODING) && ($encoding !== ConstantConfig::P24_ENCODING)) {
  5. $description = mb_convert_encoding($description, ConstantConfig::P24_ENCODING, 'auto');
  6. }
  7.  
  8. // Odznaczone 'p24_encoding' (nie działa, więc usuwam)
  9. // $payments->addValue('p24_encoding', 'UTF-8');

gdzie P24_ENCODING = 'ISO-8859-2' i śmiga.

Tylko dupy nie urywa, bo nadal nie wiem po co jest 'p24_encoding' i muszę wykonać mb_convert_encoding().
Problem rozwiązany, tylko pozostało wrażenie sprytnej małej rybki, a wolałbym wcielić się w rolę Rekina (IMG:style_emoticons/default/smile.gif)

Ten post edytował Malinaa 8.09.2024, 10:58:50
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 26.12.2025 - 15:04