Recommended PrestShop Version

Thanks for choosing Agile.
For customers using our Agile Multiple Seller module and its accessry modules, we highly recommend to use PrestaShop 1.6x or 1.7.5 or lower. PrestaShop has made some changes in versions higher than 1.7.6 that makes it possible or very difficult to implement some of features via hooks, or override, since required hooks or override is not available.

Sept. 05, 2019

Guide d’intégration de module paiement

Intégration et mode de collecte de paiement

Avant de nous présenter l’intégration de module de paiement, nous devons comprendre ce qui est mode de paiement Collection dans Agile vendeur multiples modul. Lorsque vous utilisez vendeur multiples Agile et ses modules accessoires comme votre solution de marché en ligne, vous devez intégrer/personnaliser votre module de paiement en agile environnement multiple de vendeur. Il dépend du mode de collecte de paiement de votre vendeur multiples Agile vous utilisez, les exigences du module de paiement sont un peu différent.

Magasin recueille paiement

Vous n’avez pas besoin d’intégrer ou de personnaliser votre module de paiement, vous pouvez utiliser des modules de paiement 3e parti pour ce mode de paiement Collection. Mais le module de paiement doit être suivre suivant étapes au processus de paiement et de créer des ordres
= > Paiement proess première (l’ensemble panier)
= > Puis créer des commandes par appel valiateOrder() de PaymentModule classe ou sa substitution

Vendeur perçoit le paiement
 

Vous devrez intégrer votre module de paiement .

Vendeur et magasin de percevoir le paiement 

Vous devez intégrer /personnaliser le module de paiement.


Conditions de 3ème module de paiement parti pour pouvoir s’intégrer avec module de Agile vendeur multiples.

Paiement A. processus au sein du magasin
Le module de paiement doit terminer le processus de paiement au sein de la PrestaShop sans rediriger les utilisateurs vers site de passerelle de paiement pour autoriser le paiement. Ce type de module de paiement utilise habituellement le paiement passerelle API ou au service web pour envoyer le paiement de l’acheteur info à la passerelle de paiement et retourner le résultat de paiement au côté serveur, l’acheteur n’a pas à être redirigé vers le site Web de la société paiement pour autoriser le paiement. Modules de paiement de carte de crédit plus utilisent de cette façon.

B. les ordres de paiement traitez tout d’abord avant de créer
Le module de paiement doit traiter le paiement avant la création des ordres. C’est seulement quand paiement traité avec succès, puis appelez PaymentModule -> validateOrder() pour créer l’ordre. Le validateOrder() pourrait être la méthode de substitution de module de paiement.

MESURES pour intégrer votre module 3 de la partie avec plusieurs vendeur - vendeur multiples Agile 3.2.0.1 ou au-dessus
S’il vous plaît se concentrent les lignes de code en bleu - code d’intégration.

1. définir le mode de collecte du paiement à l’appui
Ajouter ligne suivante à votre classe de module de paiement pour définir quel mode de collecte du paiement module vous soutiendra

classe AgilePaypalParallel étend PaymentModule
{
public static $PaymentCollectionMode = array ()
1 = > vrai ///seller recueille paiement - paiements de l’acheteur se séparera en compte des vendeurs
, 2 = > ///both vrai magasin et vendeur percevoir le paiement - paiement de l’acheteur se séparera en compte store(commission) et vendeurs
, 3 = > vrai ///store recueille paiement des acheteurs
   );
   ................
}

2. contrôle de disponibilité paiement module.
Ajouter suivant les lignes de code au début de la méthode hookDisplayPayment() pour contrôler les disponibilités de module

Si ce module de paiement ne supporte pas de courant multiple vendeur paiement collection mode, puis retour false - n’apparaissent pas
$paymode = (int)Configuration::get('AGILE_MS_PAYMENT_MODE') ;
if(module::IsInstalled('agilemultipleseller') & & ! self :: $PaymentCollectionMode [$paymode]) retourne la valeur false ;


3. inscrire un crochet pour informer plusieurs module de vendeur d’intégrer
Méthode d’installation à l’intérieur de votre module, ajoutez une ligne pour vous inscrire crochet actionAgilePaymentModuleIntegrate informer agile plusieurs module de vendeur d’intégrer ce module de paiement.


public void uninstall()
{
if(!parent::Uninstall()) return false ;
Si ( ! parent :: install()
OU ! $this -> registerHook('actionAgilePaymentModuleIntegrate')
OU ! Configuration :: updateValue ('AGILE_PAYPALPL_BUSINESS', '[email protected]')
OU ! Configuration :: updateValue ('AGILE_PAYPALPL_SANDBOX', 1)
OU ! $this -> registerHook('displayPayment')
OU ! $this -> registerHook('displayPaymentReturn')
) retournent false ;
    .............

}

4. préparer la méthode crochet pour renvoyer les informations d’intégration requis
Créer suivant méthode dans votre classe de base de module de paiement, donc il sera appelé par plusieurs module de vendeur pour récupérer l’intégration des informations connexes.

public void hookActionAgilePaymentModuleIntegrate($params)
{
retour de tableau)
« nom » = > $this -> nom,
« desc » = > $this -> displayName,
« mode » = > self :: $PaymentCollectionMode,
« elinks » = > array ()
tableau)
« label » = > $this -> l ('autoriser Stripe Connection')
, « url » = > « https://connect.stripe.com/oauth/authorize »
, « tooltip » = > $this -> l ('cliquez ici pour autoriser ou re-votre compte Stripe pour se connecter avec cette plateforme')
             ),
      ),

« info1 » = > array (« label » = > $this -> l ('API Login ID'), « is_unique » = > 1, « is_readonly » = > 0, « tooltip » = > $this -> l ('explication pour les champs')),
« info2 » = > array (« label » = > $this -> l ('Transaction Key'), « is_unique » = > 1, « is_readonly » = > 1, « tooltip » = > $this -> l ('explication pour les champs')),
« info3 » = > array ('label' = > ' N/a', 'is_unique' = > 0,'is_readonly' = > 0, "tooltip" = > ''),

« info4 » = > array ('label' = > ' N/a', 'is_unique' = > 0,'is_readonly' = > 0, "tooltip" = > ''),
« info5 » = > array ('label' = > ' N/a', 'is_unique' = > 0,'is_readonly' = > 0, "tooltip" = > ''),
« info6 » = > array ('label' = > ' N/a', 'is_unique' = > 0,'is_readonly' = > 0, "tooltip" = > ''),
« info7 » = > array ('label' = > ' N/a', 'is_unique' = > 0,'is_readonly' = > 0, "tooltip" = > ''),
« info8 » = > array ('label' = > ' N/a', 'is_unique' = > 0,'is_readonly' = > 0, "info-bulle' = > ''),
    );
}

seller payment setting screen - integrated module

Dans au-dessus de la méthode de crochet, vous fournirez à la suite d’informations d’agile plusieurs module de vendeur.
-nom du module (nom interne)
-description du module (nom d’affichage du module)
-mode de paiement disponible collecte votre module soutiendra
-informations de paiement que le vendeur doit fournir pour percevoir le paiement des acheteurs par le biais de ce module. Général, les champs de configuration de vos modules. Maximium 8 champs sont disponibles pour utilisation. Le nombre de champs requis dépendre de votre module de paiement.

La plupart des cas, les champs d’information punis pour magasin principal est différent de vendeurs, mais parfois, ce sont les mêmes. Par exemple, Authorize.NET Agile module aura suite 2 champs tel que défini dans code de l’exemple ci-dessus.
-API Log ID
-Transaction clé

Vous devez définir l’étiquette du champ et de spécifier si le domaine appartient à des domaines devant être validés quand un vendeur ajoutant de nouvelles infos de paiement uniques. Le module utilisera les champs d’is_unique valeur 1 pour vérifier si les informations de paiement sont la même chose avec les autres vendeurs afin d’éviter les doubles emplois.

Remarque
S’il vous plaît garder le code comme ça, modifier la valeur uniquement pour que l’étiquette sera en mesure de prendre en charge plusieurs langues et vous serez capable de traduire le nom de champ en différentes langues à l’onglet Transactions back-office - localisations-

5. Préparez le validateur de champ info paiement (facultatif)
Chaque vendeur devra saisir les informations de paiement pour la réception du paiement des acheteurs (ou du magasin). Vous mai besoin de valider chaque champ que le vendeur saisit des données valides. Par exemple, si c’est un module de Paypal, vous voudrez valider le premier champ « info1 » que le vendeur est entré est une adresse email valide.

Voici un exemple de validateur dans votre module de paiement

public void validatePaymentInfoFields($paymentinfo)
{
$errors = array() ;
   
if(Empty($PaymentInfo)) $errors [] = $this -> l ('informations de paiement non valide") ;

$info1 = (is_array($paymentinfo) ? $paymentinfo [« info1 »] : $paymentinfo -> info1) ;
if ( !. Validate::isemail($info1)) $errors [] = $this -> nom. ":" . $this -> l ('Paypl Email Address'). $this -> l ('n’est pas valide.') ;

retour $errors ;
}


6. processus de paiement et validateOrder() - création de commande
Pour intégrer votre module de paiement, votre module de paiement doit suivre les étapes standard de PrestaShop extraction et traitement procédure relie au paiement de la commande. Voici le processus qui est lié au paiement de la commande.

== > Info A. récupérer paiement == > B. Effectuez paiement == > C. ValidateOrder(Create Order data)

Récupérer des données de paiement

Vous devrez appeler méthode du module Agiile Mulltiple vendeur de recevoir les données de paiement.

$payments = AgileMultipleSeller::get_payment_info_from_cart() ;

Le module retournera un tableau avec les informations de paiement basées sur le mode de collecte du paiement. Chaque élément du tableau contiendra suivant renseignements.

-$id_seller en tant que clé du tableau
-"courrier électronique » : bénéficiaire (vendeur) email adresse (vendeur ou magasin), par exemple, [email protected]
-« montant » : le montant du bénéficiaire doit recevoir, par exemple, 230,00 $
-« commission » : la commission du vendeur de payer ou le magasin pour recevoir

Remarque
: le montant est dans shopping panier de devises, vous devez convertir votre devise spécifié de module de paiement avant l’envoi de paiement getway.

Voici l’exemple de code pour afficher les données de paiement pour votre module de paiement.

$payments = AgileMultipleSeller::get_payment_info_from_cart() ;
foreach ($payments $id_seller = > $payment)
{
... code de traitement des paiements
}

$this -> validateOrder(...)
 

Le code de traitement de paiement sera différent pour les modules de paiement différents. Nous partirons pour vous afin de déterminer comment mettre en œuvre le paiement. Nous partirons aussi à la gestion pour pouvoir gérer des erreurs de paiement. Par exemple, s’il y a plusieurs vendeur dans un panier, vous aurez besoin de gérer si certains paiement du vendeur a échoué. Quelque crédit panier paiement supporte 2 étapes - autoriser le paiement tout d’abord, puis saisir le montant pour terminer un paiement, nous vous suggérons de vous autorisez tous les vendeurs paiement tout d’abord, puis validateOrder(), puis appelez « capturent » pour finaliser les paiements.

Remarque:

Selon la passerelle de paiement, vous devrez informations de paiement du vendeur comme informations d’identification de l’API au lieu de votre magasin si le bénéficiaire du paiement est vendeur. Vous pouvez utiliser code suivant pour recevoir le paiement du vendeur informations (telles que les informations d’identification de l’API) pour votre module de paiement.

include_once (_PS_ROOT_DIR_. "/ modules/agilemultipleseller/AgileSellerPaymentInfo.php ») ;
$paymentinfo = AgileSellerPaymentInfo::getForSellerByModuleName ($this -> nom, $id_seller) ;




Amusez-vous avec l’intégration.