Bonjour @delphine59 et @laetitia13,
Effectivement, PrestaShop 8.0.4, comme ses prédécesseurs, n'offre pas de configuration directe dans l'interface d'administration pour restreindre les modes de paiement en fonction du transporteur ou du groupe de clients. Les options de restriction sont limitées aux pays et devises dans Paiement -> Préférences.
Pour une solution propre et sans modifier les fichiers du cœur, vous devrez créer un petit module personnalisé qui implémente le hook hookPaymentOptions. Ce hook est appelé avant l'affichage des options de paiement et vous permet de manipuler la liste des paiements disponibles.
Voici un exemple de logique à intégrer dans la méthode hookPaymentOptions de votre module (ou dans un override si vous préférez, mais un module est plus maintenable) :
// Dans votre fichier mymodule.php (méthode hookPaymentOptions)
public function hookPaymentOptions($params)
{
$paymentOptions = $params['payment_options'];
$cart = $params['cart'];
$customerGroup = (int)Context::getContext()->customer->id_default_group;
if ($cart->id_carrier == 8 || $customerGroup == 3) { // ID transporteur 8 ou groupe 3
foreach ($paymentOptions as $key => $option) {
if ($option->getModuleName() === 'ps_cashondelivery') {
unset($paymentOptions[$key]);
Dans cet exemple :
$cart->id_carrier == 8 : remplacez 8 par l'ID de votre transporteur (ex: InPost Paczkomat). Vous pouvez trouver cet ID dans Livraison -> Transporteurs en éditant le transporteur et en regardant l'URL (id_carrier=X).
$customerGroup == 3 : remplacez 3 par l'ID de votre groupe de clients (ex: Groupe Professionnel). Vous trouverez ces IDs dans Paramètres de la boutique -> Clients -> Groupes.
'ps_cashondelivery' : est le nom technique du module de paiement à la livraison. Vous pouvez le trouver dans Modules -> Gestionnaire de modules en cherchant le module et en regardant son répertoire.
N'oubliez pas d'installer et d'activer votre module après l'avoir créé.