Module de paiement permettant la gestion des abonnements et paiements récurrents via la plateforme Ciklik.
| Composant | Versions supportées |
|---|---|
| PrestaShop | 1.7.7 - 9.x |
| PHP | 7.2, 7.3, 7.4, 8.0, 8.1, 8.2, 8.3, 8.4 |
- Télécharger le zip correspondant à votre version PHP depuis les GitHub Releases
- Dans le back-office PrestaShop, aller dans Modules > Gestionnaire de modules
- Cliquer sur Installer un module et sélectionner le fichier zip
- Configurer le module avec votre token API Ciklik
Pour n'afficher que le paiement Ciklik quand le panier contient un abonnement, ouvrir le fichier themes/{theme}/templates/checkout/_partials/steps/payment.tpl et ajouter le code suivant au-dessus de {foreach from=$module_options item="option"} :
{assign var="ciklikOption" value=null}
{foreach from=$payment_options item="module_options"}
{if isset($module_options[0]) && $module_options[0].module_name == 'ciklik'}
{assign var="ciklikOption" value=$module_options}
{break}
{/if}
{/foreach}
{if $ciklikOption !== null}
{assign var="payment_options" value=[$ciklikOption]}
{/if}Pour gérer et personnaliser l'affichage des options d'abonnement sur la page d'un produit, il est nécessaire de surcharger le fichier ProductController.php.
Créer le fichier /override/controllers/front/ProductController.php avec le contenu suivant :
class ProductController extends ProductControllerCore
{
protected function assignAttributesGroups($product_for_template = null)
{
parent::assignAttributesGroups($product_for_template);
/**
* Ciklik START
*/
$this->context->smarty->assign([
'ciklik' => array_merge([
'enabled' => false,
'selected' => false,
], isset($product_for_template['ciklik']) ? $product_for_template['ciklik'] : []),
]);
/*
* Ciklik END
*/
}
}Les variables créées via le hook actionGetProductPropertiesBefore sont ensuite accessibles dans le fichier {theme}/templates/catalog/_partials/product-variants.tpl dans l'objet ciklik :
$ciklik = [
'enabled' => true|false, // le module Ciklik est actif
'selected' => true|false, // l'achat par abonnement a été sélectionné
'id_product' => int,
'current_id_product_attribute' => int,
'subscription_price' => float,
'reference_id_product_attribute' => int,
'subscription_reference_price' => float,
'format_id_attribute' => int,
'frequency_id_attribute' => int
];Important : Le module Ciklik doit être en 1ère position d'exécution dans le hook actionGetProductPropertiesBefore.
- Dans l'admin du module, activer l'option Déléguer l'affichage des options
- Dans le fichier de thème
{theme}/templates/catalog/_partials/product-variants.tpl, ajouter :
<input type="checkbox" name="ciklik" value="1" {if $ciklik.selected} checked="checked"{/if}>Dans « Mes abonnements », un abonnement livré en point relais propose « Changer de point relais » à la place de « Changer l'adresse », dès qu'un relais peut être proposé au client (recherche par adresse chez le transporteur, ou relais déjà utilisés lors de commandes passées). La fonction est active dès la mise à jour du module, sans réglage. Les recherches de relais sont limitées à 20 par client et 1000 par boutique et par heure.
- Un client connecté dont un renouvellement a été refusé voit le montant dû et un bouton « Régler ce paiement » au panier et dans le moyen de paiement Ciklik (si son panier contient un abonnement), et dans « Mes abonnements ». L'avertissement ne bloque pas la commande.
- Le bouton passe par le module, qui vérifie l'abonnement du client puis redirige vers le lien de reprise Ciklik : ce lien n'est jamais écrit dans la page. Actif dès la mise à jour, sans réglage ; l'appel à l'API est limité à 2 secondes et une erreur n'affiche rien.
- Au panier, l'avertissement passe par le hook
displayShoppingCartFooter, présent dans les thèmes classic (PrestaShop 1.7 à 9.2) et hummingbird (PrestaShop 8.x et 9.x).
- Une commande payée par prélèvement bancaire PayPal, pas encore encaissé, est créée dans l'état « En attente de paiement (Ciklik) », créé par le module. Ciklik la passe à l'état payé configuré à l'encaissement, ou à « Erreur de paiement » en cas de refus (requête
ciklik/gateway/payments, même authentification que les autres). - La confirmation et le détail de commande indiquent au client que le paiement est en cours de confirmation. Gabarits
displayPaymentReturn.tpletdisplayOrderDetail.tpl, surchargeables par le thème.
- Guide de mise à jour : voir UPGRADE.md
- Support : support@ciklik.co
Academic Free License (AFL 3.0)