[ZF-10089] Zend_Log
[zend.git] / documentation / manual / fr / module_specs / Zend_Validate-CreditCard.xml
blob6832e198259723923d5b6760ab9286d06cdc6f8f
1 <?xml version="1.0" encoding="UTF-8"?>
2 <!-- EN-Revision: 22183 -->
3 <!-- Reviewed: no -->
4 <sect2 id="zend.validate.set.creditcard">
5     <title>CreditCard</title>
7     <para>
8         <classname>Zend_Validate_CreditCard</classname> permet de valider si une valeur est susceptible
9         de représenter un numéro de carte de crédit.
10     </para>
12     <para>
13         Une carte de crédit contient plein de données, incluant un hologramme, un numéro de compte,
14         un logo, une date d'expiration, un code de sécurité et le nom du détenteur. L'algorithme
15         qui vérifie la combinaison de ces données n'est connu que des entreprises délivrant les cartes
16         et devrait être vérifié lors d'un paiement. Cependant, il est utile de savoir si le numéro de
17         la carte est valable <emphasis>avant</emphasis> d'effectuer de telles vérifications complexes.
18         <classname>Zend_Validate_CreditCard</classname> vérifie simplement que le numéro est bien formé.
19     </para>
21     <para>
22         Dans les cas où vous possederiez un service capable d'effectuer des vérifications complètes,
23         <classname>Zend_Validate_CreditCard</classname> vous permet de passer une fonction de rappel
24         à utiliser si le numéro a été vérifié comme valide. Le retour de la fonction de rappel
25         servira alors de retour général du validateur.
26     </para>
28     <para>
29         Les institutions suivantes sont acceptées:
30     </para>
32     <itemizedlist>
33         <listitem>
34             <para>
35                 <emphasis>American Express</emphasis>
36             </para>
38             <para>
39                 <emphasis>China UnionPay</emphasis>
40             </para>
42             <para>
43                 <emphasis>Diners Club Card Blanche</emphasis>
44             </para>
46             <para>
47                 <emphasis>Diners Club International</emphasis>
48             </para>
50             <para>
51                 <emphasis>Diners Club US &amp; Canada</emphasis>
52             </para>
54             <para>
55                 <emphasis>Discover Card</emphasis>
56             </para>
58             <para>
59                 <emphasis>JCB</emphasis>
60             </para>
62             <para>
63                 <emphasis>Laser</emphasis>
64             </para>
66             <para>
67                 <emphasis>Maestro</emphasis>
68             </para>
70             <para>
71                 <emphasis>MasterCard</emphasis>
72             </para>
74             <para>
75                 <emphasis>Solo</emphasis>
76             </para>
78             <para>
79                 <emphasis>Visa</emphasis>
80             </para>
82             <para>
83                 <emphasis>Visa Electron</emphasis>
84             </para>
85         </listitem>
86     </itemizedlist>
88     <note>
89         <title>Institutions non valides</title>
91         <para>
92             <emphasis>Bankcard</emphasis> et <emphasis>Diners Club
93                 enRoute</emphasis> n'existent plus, elles sont donc considérées non valides.
94         </para>
96         <para>
97             <emphasis>Switch</emphasis> est rattaché à <emphasis>Visa</emphasis> et est donc
98             considérée comme non valide.
99         </para>
100     </note>
102     <sect3 id="zend.validate.set.creditcard.options">
103         <title>Options supportées par  Zend_Validate_CreditCard</title>
105         <para>
106             Les options suivantes sont supportées par
107             <classname>Zend_Validate_CreditCard</classname>&#160;:
108         </para>
110         <itemizedlist>
111             <listitem>
112                 <para>
113                     <emphasis><property>service</property></emphasis>&#160;: une fonction de rappel
114                     vers un service en ligne qui sera utilisé en plus pour la validation.
115                 </para>
116             </listitem>
118             <listitem>
119                 <para>
120                     <emphasis><property>type</property></emphasis>&#160;: le type de carte crédit
121                     qui sera validée. Voir ci-dessous la liste des institutions pour de plus
122                     amples détails.
123                 </para>
124             </listitem>
125         </itemizedlist>
126     </sect3>
128     <sect3 id="zend.validate.set.creditcard.basic">
129         <title>Utilisation classique</title>
131         <para>
132             Il y a plusieurs institutions qui peuvent être validées par
133             <classname>Zend_Validate_CreditCard</classname>. Par défaut, toutes les institutions
134             connues sont acceptées:
135         </para>
137         <programlisting language="php"><![CDATA[
138 $valid = new Zend_Validate_CreditCard();
139 if ($valid->isValid($input)) {
140     // input semble valide
141 } else {
142     // input est invalide
144 ]]></programlisting>
146         <para>
147             L'exemple ci-dessus valide le numéro pour toutes les institutions connues.
148         </para>
149     </sect3>
151     <sect3 id="zend.validate.set.creditcard.institute">
152         <title>Accepter seulement certains types de cartes</title>
154         <para>
155             Il peut arriver que vous ne vouliez valider que certains types de cartes plutôt que
156             toutes les institutions connues. <classname>Zend_Validate_CreditCard</classname> permet
157             ceci.
158         </para>
160         <para>
161             Pour utiliser une limite, spécifiez les institutions accéptées à l'initialisation ou après,
162             grâce à <methodname>setType()</methodname>. Plusieurs arguments sont utilisables.
163         </para>
165         <para>
166             Vous pouvez préciser une seule institution:
167         </para>
169         <programlisting language="php"><![CDATA[
170 $valid = new Zend_Validate_CreditCard(
171     Zend_Validate_CreditCard::AMERICAN_EXPRESS
173 ]]></programlisting>
175         <para>
176             Plusieurs institutions se précisent au moyen d'un tableau:
177         </para>
179         <programlisting language="php"><![CDATA[
180 $valid = new Zend_Validate_CreditCard(array(
181     Zend_Validate_CreditCard::AMERICAN_EXPRESS,
182     Zend_Validate_CreditCard::VISA
184 ]]></programlisting>
186         <para>
187             Et comme pour tout validateur, vous pouvez passer un tableau global ou un objet
188             <classname>Zend_Config</classname>. Dans ce cas, les institutions se précisent au moyen
189             de la clé <property>type</property>:
190         </para>
192         <programlisting language="php"><![CDATA[
193 $valid = new Zend_Validate_CreditCard(array(
194     'type' => array(Zend_Validate_CreditCard::AMERICAN_EXPRESS)
196 ]]></programlisting>
198         <table id="zend.validate.set.creditcard.institute.table">
199             <title>Constante représentant les institutions</title>
200             <tgroup cols="5">
201                 <thead>
202                     <row>
203                         <entry>Institution</entry>
204                         <entry>Constante</entry>
205                     </row>
206                 </thead>
208                 <tbody>
209                     <row>
210                         <entry><emphasis>American Express</emphasis></entry>
211                         <entry><constant>AMERICAN_EXPRESS</constant></entry>
212                     </row>
214                     <row>
215                         <entry><emphasis>China UnionPay</emphasis></entry>
216                         <entry><constant>UNIONPAY</constant></entry>
217                     </row>
219                     <row>
220                         <entry><emphasis>Diners Club Card Blanche</emphasis></entry>
221                         <entry><constant>DINERS_CLUB</constant></entry>
222                     </row>
224                     <row>
225                         <entry><emphasis>Diners Club International</emphasis></entry>
226                         <entry><constant>DINERS_CLUB</constant></entry>
227                     </row>
229                     <row>
230                         <entry><emphasis>Diners Club US &amp; Canada</emphasis></entry>
231                         <entry><constant>DINERS_CLUB_US</constant></entry>
232                     </row>
234                     <row>
235                         <entry><emphasis>Discover Card</emphasis></entry>
236                         <entry><constant>DISCOVER</constant></entry>
237                     </row>
239                     <row>
240                         <entry><emphasis>JCB</emphasis></entry>
241                         <entry><constant>JCB</constant></entry>
242                     </row>
244                     <row>
245                         <entry><emphasis>Laser</emphasis></entry>
246                         <entry><constant>LASER</constant></entry>
247                     </row>
249                     <row>
250                         <entry><emphasis>Maestro</emphasis></entry>
251                         <entry><constant>MAESTRO</constant></entry>
252                     </row>
254                     <row>
255                         <entry><emphasis>MasterCard</emphasis></entry>
256                         <entry><constant>MASTERCARD</constant></entry>
257                     </row>
259                     <row>
260                         <entry><emphasis>Solo</emphasis></entry>
261                         <entry><constant>SOLO</constant></entry>
262                     </row>
264                     <row>
265                         <entry><emphasis>Visa</emphasis></entry>
266                         <entry><constant>VISA</constant></entry>
267                     </row>
269                     <row>
270                         <entry><emphasis>Visa Electron</emphasis></entry>
271                         <entry><constant>VISA</constant></entry>
272                     </row>
273                 </tbody>
274             </tgroup>
275         </table>
277         <para>
278             Vous pouvez aussi configurer les institutions valides après la construction,
279             au moyen des méthodes
280             <methodname>setType()</methodname>, <methodname>addType()</methodname> et
281             <methodname>getType()</methodname>.
282         </para>
284         <programlisting language="php"><![CDATA[
285 $valid = new Zend_Validate_CreditCard();
286 $valid->setType(array(
287     Zend_Validate_CreditCard::AMERICAN_EXPRESS,
288     Zend_Validate_CreditCard::VISA
290 ]]></programlisting>
292         <note>
293             <title>Institution par défaut</title>
295             <para>
296                 Si vous ne précisez pas d'institution à la construction, alors <constant>ALL</constant>
297                 sera utilisée, et donc toutes les institutions seront utilisées.
298             </para>
300             <para>
301                 Dans ce cas, utiliser <methodname>addType()</methodname> ne sert à rien.
302             </para>
303         </note>
304     </sect3>
306     <sect3 id="zend.validate.set.creditcard.servicecheck">
307         <title>Validation par fonction de rappel</title>
309         <para>
310             Comme déja dit, <classname>Zend_Validate_CreditCard</classname> ne valide que le numéro
311             de la carte. Heureusement, certaines institutions proposent des
312             <acronym>API</acronym>s pour valider des numéros de carte de crédit qui ne sont
313             pas publiques. Ces services sont très souvent payants, ainsi cette vérification est par
314             défaut désactivée.
315         </para>
317         <para>
318             Lorsque vous avez accès à de telles <acronym>API</acronym>s, vous pouvez les utiliser
319             comme fonctions additionnelles à <classname>Zend_Validate_CreditCard</classname> et ainsi
320             augmenter la sécurité de la validation.
321         </para>
323         <para>
324             Pour ce faire, vous devez simplement préciser une fonction de rappel qui sera appelée
325             après que la validation "classique" ait réussi. Ceci évite un appel à l'
326             <acronym>API</acronym> avec un numéro de toute façon non valide et augmentera ainsi
327             les performances de la validation et donc de l'application.
328         </para>
330         <para>
331             <methodname>setService()</methodname> et
332             <methodname>getService()</methodname> sont utilisée pour la fonction de rappel.
333             La clé de configuration à utiliser, si vous le souhaitez, est '<property>service</property>'
334             (à la construction). Des détails peuvent être trouvés sur la documentation du validateur<link
335                 linkend="zend.validate.set.callback">Callback</link>.
336         </para>
338         <programlisting language="php"><![CDATA[
339 // Votre classe de service
340 class CcService
342     public function checkOnline($cardnumber, $types)
343     {
344         // Processus de validation ici
345     }
348 // La validation
349 $service = new CcService();
350 $valid   = new Zend_Validate_CreditCard(Zend_Validate_CreditCard::VISA);
351 $valid->setService(array($service, 'checkOnline'));
352 ]]></programlisting>
354         <para>
355             Ici le service sera appelé avec le numéro de carte comme premier paramètre,
356             et les types accéptés comme second.
357         </para>
358     </sect3>
359 </sect2>
360 <!--
361 vim:se ts=4 sw=4 et: