1.
decrypted.toString(CryptoJS.enc.Utf8)
2. ты портишь данные, либо не в нужной последовательности их преобразуешь.
3. Разные алгоритмы, надо уточнять по какому шифруется в js и в php
Потому как шифрование и дешифрование работает вот так:
let message = `{"store_id":20553036,"access_token":"secret_a9TmTJfRt3gyvxjJ9UwYjs9VQip3F7rp","public_token":"public_QQ99gUwVGdvKuZbLLyNZzDsvXF5iF3gh","view_mode":"PAGE","lang":"ru"}`;
let secret = `zcKf1Zt0UsO43S46Un3pxIgs91R1xMGs`;
const ciphertext = CryptoJS.AES.encrypt(message , secret).toString();
const bytes = CryptoJS.AES.decrypt(ciphertext, secret);
const originalText = bytes.toString(CryptoJS.enc.Utf8);
console.log(ciphertext);
console.log(originalText);
$message = '{"store_id":20553036,"access_token":"secret_a9TmTJfRt3gyvxjJ9UwYjs9VQip3F7rp","public_token":"public_QQ99gUwVGdvKuZbLLyNZzDsvXF5iF3gh","view_mode":"PAGE","lang":"ru"}';
$secret = "zcKf1Zt0UsO43S46Un3pxIgs91R1xMGs";
$ciphertext = openssl_encrypt($message, "aes-128-cbc", $secret);
$originalText = openssl_decrypt($ciphertext, "aes-128-cbc", $secret);
echo $ciphertext . PHP_EOL;
echo $originalText;