Deploy Ladill Mini / deploy (push) Successful in 23s
Staff-facing counter register at pos.ladill.com with catalog cart, cash and MoMo/card checkout via Ladill Pay, CRM timeline/import, invoice prefill, and Merchant catalog import. Co-authored-by: Cursor <cursoragent@cursor.com>
35 lines
851 B
PHP
35 lines
851 B
PHP
<?php
|
|
|
|
namespace App\Support;
|
|
|
|
final class CrmPrefillCodec
|
|
{
|
|
public static function encode(array $payload): string
|
|
{
|
|
return rtrim(strtr(base64_encode(json_encode($payload, JSON_THROW_ON_ERROR)), '+/', '-_'), '=');
|
|
}
|
|
|
|
/** @return array<string, mixed>|null */
|
|
public static function decode(?string $token): ?array
|
|
{
|
|
if (! is_string($token) || $token === '') {
|
|
return null;
|
|
}
|
|
|
|
$padded = $token.str_repeat('=', (4 - strlen($token) % 4) % 4);
|
|
$json = base64_decode(strtr($padded, '-_', '+/'), true);
|
|
|
|
if ($json === false) {
|
|
return null;
|
|
}
|
|
|
|
try {
|
|
$data = json_decode($json, true, 512, JSON_THROW_ON_ERROR);
|
|
} catch (\JsonException) {
|
|
return null;
|
|
}
|
|
|
|
return is_array($data) ? $data : null;
|
|
}
|
|
}
|