Comment définir les étapes du tunnel d’achat dans la solution SAP Hybris Commerce?

Sur un site marchand, généralement, l’utilisateur va choisir un ou plusieurs produits qu’il va placer dans son panier. Puis quand il est prêt à passer sa commande, il entre dans un processus qui s’appelle le tunnel d’achat.

Généralement, celui-ci se compose de plusieurs étapes, les plus communes étant :

  1. Adresse, pour la saisie des informations de facturation et de livraison.
  2. Livraison, pour la sélection du transporteur
  3. Paiement, pour la sélection du moyen de paiement et effectuer la transaction.

Mais il peut y avoir d’autres étapes comme par exemple, une étape pour sélectionner des garanties particulières ou afficher des informations etc.
Il est fréquent de personnaliser le tunnel d’achat lors de la mise en place d’un site e-commerce.
Voici comment personnaliser le tunnel avec la suite SAP Hybris Commerce qui utilise Spring avec une configuration XML.

 

Définition du tunnel (Checkout)

<!---Default checkout group-->
	<alias name="defaultMultiStepCheckoutGroup" alias="defaultCheckoutGroup" />
	<bean id="defaultMultiStepCheckoutGroup"  class="de.hybris.platform.acceleratorstorefrontcommons.checkout.steps.CheckoutGroup">
		<property name="groupId"  value="defaultGroup"/>
		<property name="checkoutStepMap">
			<map merge="true">
				<entry key="multi" value-ref="defaultMultiStepCheckout"/>
				<entry key="delivery-address" value-ref="deliveryAddressCheckoutStep"/>
				<entry key="delivery-method" value-ref="deliveryMethodCheckoutStep"/>
				<entry key="pickup-location" value-ref="pickupLocationCheckoutStep"/>
				<entry key="payment-method" value-ref="paymentMethodCheckoutStep"/>
				<entry key="summary" value-ref="summaryCheckoutStep"/>
			</map>
		</property>
		<property name="validationResultsMap">
			<map merge="true">
				<entry key="FAILED" value-ref="REDIRECT_TO_CART"/>
				<entry key="REDIRECT_TO_DELIVERY_ADDRESS" value-ref="REDIRECT_TO_DELIVERY_ADDRESS"/>
				<entry key="REDIRECT_TO_PICKUP_LOCATION" value-ref="REDIRECT_TO_PICKUP_LOCATION"/>
				<entry key="REDIRECT_TO_CART" value-ref="REDIRECT_TO_CART"/>
				<entry key="REDIRECT_TO_PAYMENT_METHOD" value-ref="REDIRECT_TO_PAYMENT_METHOD"/>
				<entry key="REDIRECT_TO_DELIVERY_METHOD" value-ref="REDIRECT_TO_DELIVERY_METHOD"/>
			</map>
		</property>
		<property name="checkoutProgressBar">
			<map merge="true">
				<entry key="1" value-ref="deliveryAddressCheckoutStep"/>
				<entry key="2" value-ref="deliveryMethodCheckoutStep"/>
				<entry key="3" value-ref="paymentMethodCheckoutStep"/>
				<entry key="4" value-ref="defaultSummaryCheckoutStep"/>
			</map>
		</property>
	</bean>
Checkout flow - xml

 

Ici le checkoutGroup va contenir un "groupId" unique qui va être lié à notre magasin (BaseStore). Il y a ensuite un mappage entre les différentes étapes du checkout et les références des Spring beans associées.
On peut aussi noter le mappage entre les statuts de résultats de validation des étapes et les redirections associées.

Les étapes

Chaque étape du tunnel va contenir l’information de redirection vers l’étape précédente, courante et suivante. L’étape va aussi avoir une référence vers le validateur qui devra être utilisé lorsqu’on arrive sur l’étape.

Par exemple, à l’étape de livraison il faut impérativement qu’il y ai une adresse de livraison qui soit renseignée.

<alias name="defaultDeliveryMethodCheckoutStep" alias="deliveryMethodCheckoutStep" />
	<bean id="defaultDeliveryMethodCheckoutStep"  parent="checkoutStep">
		<property name="checkoutGroup" ref="defaultCheckoutGroup"/>
		<property name="checkoutStepValidator" ref="deliveryMethodCheckoutValidator"/>
		<property name="transitions">
			<map merge="true">
				<entry key="previous" value-ref="REDIRECT_TO_DELIVERY_ADDRESS"/>
				<entry key="current" value-ref="REDIRECT_TO_DELIVERY_METHOD"/>
				<entry key="next" value-ref="REDIRECT_TO_PAYMENT_METHOD"/>
			</map>
		</property>
	</bean>
checkoutStep - xml

La validation

Généralement, la méthode enterStep du CheckoutController est annoté avec @PreValidateStep. Par AOP et avec cette annotation, le validateur associé à cette étape est appelé. Si la validation est réussie, alors il poursuit avec les méthodes enterStep sinon il redirige l’utilisateur vers le lien récupéré par le mappage ValidationresultsMap.

La barre de progression

Hybris permet si on le souhaite d’afficher une barre de progression qui indique l’étape courante dans le tunnel, comme on peut le voir dans le nœud de la propiété checkoutProgressBar du checkoutFlow.

Conclusion

Il est très simple de personnaliser le tunnel d’achat simplement en modifiant la configuration xml associé. Ici l’exemple présenté est simple mais il est possible de faire des processus plus complexes.

Ressources:

https://www.hybris.com/fr/

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Captcha *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.