Sam plik wysyłki, tzn. u mnie to jest adres w kontrolerze.
/* @Route: "/payments/receiver" */
public function receiver(): void
{
$request = $_POST
[]; $payments = $this->service->initializePayments();
$serviceReceiver = new ReceiverService($payments, $this->model);
$serviceReceiver->process($request);
}
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:
$payments = $this->payments;
$payments->addValue('p24_session_id', $formData['session']);
$payments->addValue('p24_description', $description);
$payments->addValue('p24_encoding', 'UTF-8');
...
dopisałem:
$description = $formData['description'];
$encoding = mb_detect_encoding($description);
if (!empty(ConstantConfig
::P24_ENCODING) && ($encoding !== ConstantConfig
::P24_ENCODING)) { $description = mb_convert_encoding($description, ConstantConfig::P24_ENCODING, 'auto');
}
// Odznaczone 'p24_encoding' (nie działa, więc usuwam)
// $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