Les méthodes des modules de paiement ne reçoivent pas une adresse, juste un pays.
Du coup, pour connaitre le département auquel il faut livrer, il faut récupérer l'adresse de livraison choisie par le client :
public function getPostage(Country $country)
{
if (null !== $deliveryAddress = AddressQuery::create()->findPk(
$this->getRequest()->getSession()->getOrder()->getChoosenDeliveryAddress()
)) {
$codePostal = $deliveryAddress->getZipcode();
// Le code qui utilise le code postal
...
}
// Le code qui fonctionne avec juste le pays
...
}
Si aucune adresse de livraison n'est définie (deliveryAddress = null), il te faut prévoir un moyen de calculer les frais de port quand même, par exemple en retournant le tarif le moins élevé.