update
This commit is contained in:
@@ -485,6 +485,15 @@ final class ApaczkaShipmentService implements ShipmentProviderInterface
|
||||
}
|
||||
}
|
||||
|
||||
// Apaczka API: receiver.street limit 30 znakow. Dla uslug punktowych street to etykieta
|
||||
// punktu — obcinamy bezpiecznie. Dla uslug kurierskich rzucamy wyjatek, zeby operator
|
||||
// skrocil adres recznie (auto-truncate mogloby uciac numer domu/mieszkania).
|
||||
if ($receiverPointId !== '') {
|
||||
$street = $this->truncateStreetForPoint($street);
|
||||
} else {
|
||||
$this->assertStreetWithinCourierLimit($street);
|
||||
}
|
||||
|
||||
if ($name === '' || $street === '' || $city === '' || $postalCode === '' || $countryCode === '') {
|
||||
throw new ShipmentException('Brak wymaganych danych adresowych odbiorcy.');
|
||||
}
|
||||
@@ -519,6 +528,39 @@ final class ApaczkaShipmentService implements ShipmentProviderInterface
|
||||
return $receiver;
|
||||
}
|
||||
|
||||
/**
|
||||
* Apaczka API: receiver.street limit 30 znakow.
|
||||
* Dla uslug punktowych (ORLEN/Paczkomat) street to etykieta punktu — obcinamy bezpiecznie.
|
||||
*/
|
||||
private function truncateStreetForPoint(string $street): string
|
||||
{
|
||||
$street = trim($street);
|
||||
if (mb_strlen($street, 'UTF-8') <= 30) {
|
||||
return $street;
|
||||
}
|
||||
|
||||
return rtrim(mb_substr($street, 0, 30, 'UTF-8'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Apaczka API: receiver.street limit 30 znakow.
|
||||
* Dla uslug kurierskich NIE obcinamy — ryzyko utraty numeru domu/mieszkania.
|
||||
*/
|
||||
private function assertStreetWithinCourierLimit(string $street): void
|
||||
{
|
||||
$length = mb_strlen($street, 'UTF-8');
|
||||
if ($length <= 30) {
|
||||
return;
|
||||
}
|
||||
|
||||
throw new ShipmentException(sprintf(
|
||||
'Ulica odbiorcy przekracza 30 znakow (limit API Apaczka dla uslug kurierskich). '
|
||||
. 'Skroc adres recznie przed utworzeniem przesylki. Obecna wartosc: %d znakow: "%s"',
|
||||
$length,
|
||||
$street
|
||||
));
|
||||
}
|
||||
|
||||
/**
|
||||
* @param array<string, mixed> $address
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user