View Javadoc
1   /*
2    *
3    *  * Copyright (c) 2002-2017, Mairie de Paris
4    *  * All rights reserved.
5    *  *
6    *  * Redistribution and use in source and binary forms, with or without
7    *  * modification, are permitted provided that the following conditions
8    *  * are met:
9    *  *
10   *  *  1. Redistributions of source code must retain the above copyright notice
11   *  *     and the following disclaimer.
12   *  *
13   *  *  2. Redistributions in binary form must reproduce the above copyright notice
14   *  *     and the following disclaimer in the documentation and/or other materials
15   *  *     provided with the distribution.
16   *  *
17   *  *  3. Neither the name of 'Mairie de Paris' nor 'Lutece' nor the names of its
18   *  *     contributors may be used to endorse or promote products derived from
19   *  *     this software without specific prior written permission.
20   *  *
21   *  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
22   *  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23   *  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
24   *  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE
25   *  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
26   *  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
27   *  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
28   *  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
29   *  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
30   *  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
31   *  * POSSIBILITY OF SUCH DAMAGE.
32   *  *
33   *  * License 1.0
34   *
35   */
36  
37  package fr.paris.lutece.plugins.tipi.business;
38  
39  import java.math.BigDecimal;
40  import java.util.Calendar;
41  
42  import fr.paris.lutece.portal.service.util.AppPropertiesService;
43  import fr.paris.tipi.generated.CreerPaiementSecuriseRequest;
44  import fr.paris.vdp.tipi.create.url.enumeration.PaymentType;
45  
46  /**
47   * Cette classe permet de mapper les donnees issues de l'application dans la request du webservice.
48   */
49  public final class TipiRequestFactory
50  {
51      private static final String     X                = "X";
52      private static final String     W                = "W";
53      private static final String     REFERENCE_CLIENT = "tipi.numcli";
54      private static final String     TIPI_OBJET       = "tipi.objet";
55      private static final String     URL_NOTIF        = "tipi.urlnotif";
56      private static final String     URL_REDIRECT     = "tipi.urlredirect";
57      private static final String     PAYMENT_TYPE     = "tipi.saisie";
58      private static final BigDecimal CENT             = new BigDecimal( "100" );
59  
60      private TipiRequestFactory( )
61      {
62      }
63  
64      /**
65       * Creation de la requete envoyee au webservice.
66       *
67       * @param email
68       *            mail de l'usager
69       * @param refDet
70       *            identifiant
71       * @param amount
72       *            montant de la transaction en euros
73       *
74       * @return la requete pour le webservice
75       */
76      public static final CreerPaiementSecuriseRequest createRequest( String email, String refDet, BigDecimal amount )
77      {
78          CreerPaiementSecuriseRequest request = new CreerPaiementSecuriseRequest( );
79          Calendar calendar = Calendar.getInstance( );
80  
81          request.setMel( email );
82  
83          // Passage de Euros en Centimes
84          request.setMontant( String.valueOf( Integer.valueOf( amount.multiply( CENT ).intValueExact( ) ) ) );
85          request.setRefdet( refDet );
86          request.setNumcli( AppPropertiesService.getProperty( REFERENCE_CLIENT ) );
87          request.setUrlnotif( AppPropertiesService.getProperty( URL_NOTIF ) );
88          request.setUrlredirect( AppPropertiesService.getProperty( URL_REDIRECT ) );
89          request.setExer( String.valueOf( calendar.get( Calendar.YEAR ) ) );
90          request.setObjet( AppPropertiesService.getProperty( TIPI_OBJET ) );
91  
92          String saisie = AppPropertiesService.getProperty( PAYMENT_TYPE );
93  
94          if ( W.equalsIgnoreCase( saisie ) )
95          {
96              request.setSaisie( PaymentType.PRODUCTION_WS.getStringValues( ) );
97          } else if ( X.equalsIgnoreCase( saisie ) )
98          {
99              request.setSaisie( PaymentType.ACTIVATION.getStringValues( ) );
100         } else
101         {
102             request.setSaisie( PaymentType.TEST.getStringValues( ) );
103         }
104 
105         return request;
106     }
107 
108 }