Ce module permet d'interagir avec le service TIPI dans un workflow Lutece.
Pour cela, il contient :
Voici un cinématique type applicable avec ce module :
Ce module ne peut pas deviner certaines données essentielles au paiement TIPI :
Ce module fournit une tâche de workflow abstraite que vous devez étendre pour fournir les données : fr.paris.lutece.plugins.workflow.modules.tipi.service.task.AbstractTipiProviderTask. Vous devez alors implémenter les méthodes suivantes :
Voici un exemple d'implémentation :
public class MyTipiProviderTask extends AbstractTipiProviderTask { @Inject public MyTipiProviderTask( IResourceHistoryService resourceHistoryService, ITipiService tipiService, ITipiRefDetHistoryService tipiRefDetHistoryService ) { super( resourceHistoryService, tipiService, tipiRefDetHistoryService ); } /** * {@inheritDoc} */ @Override public String getTitle( Locale local ) { return I18nService.getLocalizedString( MESSAGE_TASK_TITLE, local ); } /** * {@inheritDoc} */ @Override protected String provideRefDet( ResourceHistory resourceHistory ) { return DatastoreService.getDataValue( DSKEY_REFDET, StringUtils.EMPTY ); } /** * {@inheritDoc} */ @Override protected int provideAmount( ResourceHistory resourceHistory ) { return NumberUtils.toInt( DatastoreService.getDataValue( DSKEY_AMOUNT, StringUtils.EMPTY ), 0 ); } /** * {@inheritDoc} */ @Override protected String provideEmail( ResourceHistory resourceHistory ) { return DatastoreService.getDataValue( DSKEY_EMAIL, StringUtils.EMPTY ); } }
Vous pouvez bien sûr redéfinir les méthodes classiques des tâches de workflow, pour ajouter une configuration à la tâche par exemple.
Vous devez ensuite déclarer votre tâche dans le contexte Spring, comme toute autre tâche de workflow :
<bean id="workflow-tipimymodule.myTipiProviderTask" class="fr.paris.lutece.plugins.workflow.modules.tipimymodule.service.task.myTipiProviderTask" scope="prototype" /> <bean id="workflow-tipimymodule.myTipiProviderTypeTask" class="fr.paris.lutece.plugins.workflowcore.business.task.TaskType" p:key="myTipiProviderTypeTask" p:titleI18nKey="module.workflow.tipimymodule.task_my_provider_title" p:beanName="workflow-tipimymodule.myTipiProviderTask" p:taskForAutomaticAction="true" />
Le fichier de configuration du module se trouve dans : WEB-INF/conf/plugins/workflow-tipi.properties.
Surcharger ce fichier pour y indiquer votre configuration (numéro client, objet, etc.).
Tâches de workflow
Pour pouvoir interagir avec le service TIPI dans le workflow Lutece, il faut utiliser 3 tâches de workflow dans l'action permettant de demander à l'usager de payer sa dette sur le service TIPI.
Note : Les 3 tâches peuvent être utilisées dans une action automatique. Cela permet de déclencher la procédure de paiement de manière automatique.
Note : Si votre workflow contient plusieurs actions permettant de demander à l'usager de payer sa dette (action de relance par exemple), il faut que les 3 tâches soient dans toutes les actions. Les états utilisés après la notification du service TIPI sont ceux de la dernière action déclenchée.
Tâche de workflow fournissant les données TIPI à partir d'un objet métier
La première tâche nécessaire est votre tâche fournissant les données TIPI à partir de votre objet métier. Voir la section Création d'une tâche de workflow fournissant les données TIPI à partir d'un objet métier pour implémenter cette tâche.
Tâche de workflow de configuration des états après paiement
La deuxième tâche nécessaire est la tâche nommée Tache de configuration de TIPI. Elle doit être configurée pour déterminer sur quel état de workflow sera positionné votre ressource métier lorsque :
Tâche de workflow de notification
La troisième tâche nécessaire est la tâche nommée Notifier un usager (guichet, mail et/ou SMS). Ce module expose un signet ${tipi_url!} permettant d'insérer l'URL de traitement de paiements. Vous pouvez ajouter ce signet dans l'attribut href de la balise a pour ajouter un lien cliquable dans la notification :
<a href="${tipi_url!}">Lien de paiement</a>
Pour que ce signet soit disponible, il faut cocher les signets supplémentaires TIPI dans la configuration avancée.
Voir le module-workflow-notifygru pour plus de détails.
Démon de mise à jour des paiements
Ce démon récupère tous les paiements qui ont été initialisés par l'usager (clic sur le lien présent dans la notification) mais dont le résultat n'a pas été fourni par le service TIPI. Ce cas peut arriver s'il y a eu un problème réseau par exemple. Pour tous ces paiements, le démon interroge le service TIPI afin de les mettre à jour dans Lutece.
Par défaut, ce démon n'est pas activé. Si vous décidez de l'activer, Il est conseillé de soit le désactiver après la mise à jour des paiements, soit le laisser activé mais avec un intervalle de 24h minimum, afin de laisser le temps au service TIPI de notifier le module pour les transactions en cours. Mettre un intervalle trop court risquerait d'interférer avec le mécanisme nominal du service TIPI.
Exécuter une action après le paiement
Après la notification par le service TIPI du résultat de la transaction, il est possible d'exécuter automatiquement une action de workflow.
Note : L'explication ci-dessous se base sur une transaction acceptée, mais le même principe peut être appliqué sur une transaction refusée ou abandonnée.
Lorsque le service TIPI notifie ce module d'une transaction acceptée, le traitement appelle la première action automatique du workflow dont l'état initial est l'état défini dans la configuration de la tâche Tache de configuration de TIPI pour un paiement accepté.
Par conséquent, pour exécuter automatiquement une action du workflow après la notification du service TIPI :
Voici un exemple :
Etats du workflow. L'état Paiement accepté n'est utilisé que pour exécuter l'action automatique après notification par le service TIPI.
Actions du workflow.
L'action Payer contient les 3 tâches de workflow nécessaires au paiement de la dette. La tâche Tache de configuration de TIPI est configurée pour pointer sur l'état Paiement accepté lorsque le paiement est accepté.
L'action Notifier paiement accepté est une action automatique. C'est cette action qui sera exécutée automatiquement après notification d'un paiement accepté par le service TIPI. Elle contient les tâches souhaitées. Par exemple, on peut notifier l'usager que son paiement a été accepté :
Lien dans la notification
Lorsque l'usager clique sur le lien présent dans la notification, il est renvoyé vers le service TIPI uniquement si le paiement ne s'est pas déjà effectué avec succès. Dans le cas où le paiement s'est déjà effectué avec succès, un message d'information s'affiche pour avertir l'usager qu'il ne peut pas payer une deuxième fois.