Bonjour,
En fait, je ne crois pas. Les informations fournies à Paypal via l'ancien paypalrecurring sont plus claires (cf. capture). De fait, dans
l'ancien plugin on a ceci :
// Product information (if 1 product > name of the product // else echo "total price")
if($order->cart->order_full_quantity == 1){
$vars["item_name"]=strip_tags($order->cart->products[0]->order_product_name);
}else{
$vars["item_name"]=JText::_('CART_PRODUCT_TOTAL_PRICE');
}
Par ailleurs, on peut remarquer que dans paypal_recurring, vous initialisez la valeur 'cmd' du tableau des variables avec "_cart" dans onAfterOrderConfirm. Mais un peu plus bas cette même valeur est mise à "_xclick-subscriptions" ce qui semble logique puisque c'est ce qu'on veut faire.
Mais la construction des éléments de la commande les champs de type item_name_x / item_number_x semblent réservés à l'affichage du récap du panier (cmd=_cart) selon ces pages :
developer.paypal.com/docs/classic/paypal...ng-payment-variables
. J'ai l'impression qu'il faut faire deux requêtes à paypal, l'une pour le _cart (infos du panier d'achat) et l'autre pour le "_xclick-subscriptions" (simulation du bouton "souscrire un abonnement").
Cela implique probablement de modifier profondément le script. En attendant, on pourrait rétablir le mécanisme de l'ancien plugin (ci-dessus) puisque le plus souvent dans le panier de l'acheteur il n'y a qu'un produit dans le cas d'un abonnement.
D'autre part, je souhaiterais rétablir la fonctionnalité qui permet de limiter la portée d'un abonnement. En effet, la seule façon d'arrêter un abonnement pour le client c'est de le faire via paypal. Avec paypal_recurring, il n'existe pas de possibilité depuis HikaShop (back ou front) de stopper un abonnement. Le fait de forcer la souscription à inactive ne suffit pas.
La variable correspondante de Paypal existe dans l'ancien plugin :
// Number of recurring times, if period = 1 month and srt = 4, so there will be 4 payments
if($method->payment_params->recurring_times != '0'){
$vars["srt"]= (int)$method->payment_params->recurring_times;
}
Bien sûr, idéalement, cela devrait être lié au plan mais ce serait déjà pas mal de pouvoir le spécifier dans les paramètres du plugin de paiement.
Cela semble possible sans "chambouler" toute la logique, non ?
Merci,
Laurent