| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362 |
- <?xml version="1.0" encoding="UTF-8"?>
- <!-- EN-Revision: 24249 -->
- <!-- Reviewed: no -->
- <sect2 id="zend.validate.set.creditcard">
- <title>CreditCard</title>
- <para>
- <classname>Zend_Validate_CreditCard</classname> permet de valider si une valeur est susceptible
- de représenter un numéro de carte de crédit.
- </para>
- <para>
- Une carte de crédit contient plein de données, incluant un hologramme, un numéro de compte,
- un logo, une date d'expiration, un code de sécurité et le nom du détenteur. L'algorithme
- qui vérifie la combinaison de ces données n'est connu que des entreprises délivrant les cartes
- et devrait être vérifié lors d'un paiement. Cependant, il est utile de savoir si le numéro de
- la carte est valable <emphasis>avant</emphasis> d'effectuer de telles vérifications complexes.
- <classname>Zend_Validate_CreditCard</classname> vérifie simplement que le numéro est bien formé.
- </para>
- <para>
- Dans les cas où vous possederiez un service capable d'effectuer des vérifications complètes,
- <classname>Zend_Validate_CreditCard</classname> vous permet de passer une fonction de rappel
- à utiliser si le numéro a été vérifié comme valide. Le retour de la fonction de rappel
- servira alors de retour général du validateur.
- </para>
- <para>
- Les institutions suivantes sont acceptées:
- </para>
- <itemizedlist>
- <listitem>
- <para>
- <emphasis>American Express</emphasis>
- </para>
- <para>
- <emphasis>China UnionPay</emphasis>
- </para>
- <para>
- <emphasis>Diners Club Card Blanche</emphasis>
- </para>
- <para>
- <emphasis>Diners Club International</emphasis>
- </para>
- <para>
- <emphasis>Diners Club US & Canada</emphasis>
- </para>
- <para>
- <emphasis>Discover Card</emphasis>
- </para>
- <para>
- <emphasis>JCB</emphasis>
- </para>
- <para>
- <emphasis>Laser</emphasis>
- </para>
- <para>
- <emphasis>Maestro</emphasis>
- </para>
- <para>
- <emphasis>MasterCard</emphasis>
- </para>
- <para>
- <emphasis>Solo</emphasis>
- </para>
- <para>
- <emphasis>Visa</emphasis>
- </para>
- <para>
- <emphasis>Visa Electron</emphasis>
- </para>
- </listitem>
- </itemizedlist>
- <note>
- <title>Institutions non valides</title>
- <para>
- <emphasis>Bankcard</emphasis> et <emphasis>Diners Club
- enRoute</emphasis> n'existent plus, elles sont donc considérées non valides.
- </para>
- <para>
- <emphasis>Switch</emphasis> est rattaché à <emphasis>Visa</emphasis> et est donc
- considérée comme non valide.
- </para>
- </note>
- <sect3 id="zend.validate.set.creditcard.options">
- <title>Options supportées par Zend_Validate_CreditCard</title>
- <para>
- Les options suivantes sont supportées par
- <classname>Zend_Validate_CreditCard</classname> :
- </para>
- <itemizedlist>
- <listitem>
- <para>
- <emphasis><property>service</property></emphasis> : une fonction de rappel
- vers un service en ligne qui sera utilisé en plus pour la validation.
- </para>
- </listitem>
- <listitem>
- <para>
- <emphasis><property>type</property></emphasis> : le type de carte crédit
- qui sera validée. Voir ci-dessous la liste des institutions pour de plus
- amples détails.
- </para>
- </listitem>
- </itemizedlist>
- </sect3>
- <sect3 id="zend.validate.set.creditcard.basic">
- <title>Utilisation classique</title>
- <para>
- Il y a plusieurs institutions qui peuvent être validées par
- <classname>Zend_Validate_CreditCard</classname>. Par défaut, toutes les institutions
- connues sont acceptées:
- </para>
- <programlisting language="php"><![CDATA[
- $valid = new Zend_Validate_CreditCard();
- if ($valid->isValid($input)) {
- // input semble valide
- } else {
- // input est invalide
- }
- ]]></programlisting>
- <para>
- L'exemple ci-dessus valide le numéro pour toutes les institutions connues.
- </para>
- </sect3>
- <sect3 id="zend.validate.set.creditcard.institute">
- <title>Accepter seulement certains types de cartes</title>
- <para>
- Il peut arriver que vous ne vouliez valider que certains types de cartes plutôt que
- toutes les institutions connues. <classname>Zend_Validate_CreditCard</classname> permet
- ceci.
- </para>
- <para>
- Pour utiliser une limite, spécifiez les institutions accéptées à l'initialisation ou après,
- grâce à <methodname>setType()</methodname>. Plusieurs arguments sont utilisables.
- </para>
- <para>
- Vous pouvez préciser une seule institution:
- </para>
- <programlisting language="php"><![CDATA[
- $valid = new Zend_Validate_CreditCard(
- Zend_Validate_CreditCard::AMERICAN_EXPRESS
- );
- ]]></programlisting>
- <para>
- Plusieurs institutions se précisent au moyen d'un tableau:
- </para>
- <programlisting language="php"><![CDATA[
- $valid = new Zend_Validate_CreditCard(array(
- Zend_Validate_CreditCard::AMERICAN_EXPRESS,
- Zend_Validate_CreditCard::VISA
- ));
- ]]></programlisting>
- <para>
- Et comme pour tout validateur, vous pouvez passer un tableau global ou un objet
- <classname>Zend_Config</classname>. Dans ce cas, les institutions se précisent au moyen
- de la clé <property>type</property>:
- </para>
- <programlisting language="php"><![CDATA[
- $valid = new Zend_Validate_CreditCard(array(
- 'type' => array(Zend_Validate_CreditCard::AMERICAN_EXPRESS)
- ));
- ]]></programlisting>
- <table id="zend.validate.set.creditcard.institute.table">
- <title>Constante représentant les institutions</title>
- <tgroup cols="5">
- <thead>
- <row>
- <entry>Institution</entry>
- <entry>Constante</entry>
- </row>
- </thead>
- <tbody>
- <row>
- <entry><emphasis>American Express</emphasis></entry>
- <entry><constant>AMERICAN_EXPRESS</constant></entry>
- </row>
- <row>
- <entry><emphasis>China UnionPay</emphasis></entry>
- <entry><constant>UNIONPAY</constant></entry>
- </row>
- <row>
- <entry><emphasis>Diners Club Card Blanche</emphasis></entry>
- <entry><constant>DINERS_CLUB</constant></entry>
- </row>
- <row>
- <entry><emphasis>Diners Club International</emphasis></entry>
- <entry><constant>DINERS_CLUB</constant></entry>
- </row>
- <row>
- <entry><emphasis>Diners Club US & Canada</emphasis></entry>
- <entry><constant>DINERS_CLUB_US</constant></entry>
- </row>
- <row>
- <entry><emphasis>Discover Card</emphasis></entry>
- <entry><constant>DISCOVER</constant></entry>
- </row>
- <row>
- <entry><emphasis>JCB</emphasis></entry>
- <entry><constant>JCB</constant></entry>
- </row>
- <row>
- <entry><emphasis>Laser</emphasis></entry>
- <entry><constant>LASER</constant></entry>
- </row>
- <row>
- <entry><emphasis>Maestro</emphasis></entry>
- <entry><constant>MAESTRO</constant></entry>
- </row>
- <row>
- <entry><emphasis>MasterCard</emphasis></entry>
- <entry><constant>MASTERCARD</constant></entry>
- </row>
- <row>
- <entry><emphasis>Solo</emphasis></entry>
- <entry><constant>SOLO</constant></entry>
- </row>
- <row>
- <entry><emphasis>Visa</emphasis></entry>
- <entry><constant>VISA</constant></entry>
- </row>
- <row>
- <entry><emphasis>Visa Electron</emphasis></entry>
- <entry><constant>VISA</constant></entry>
- </row>
- </tbody>
- </tgroup>
- </table>
- <para>
- Vous pouvez aussi configurer les institutions valides après la construction,
- au moyen des méthodes
- <methodname>setType()</methodname>, <methodname>addType()</methodname> et
- <methodname>getType()</methodname>.
- </para>
- <programlisting language="php"><![CDATA[
- $valid = new Zend_Validate_CreditCard();
- $valid->setType(array(
- Zend_Validate_CreditCard::AMERICAN_EXPRESS,
- Zend_Validate_CreditCard::VISA
- ));
- ]]></programlisting>
- <note>
- <title>Institution par défaut</title>
- <para>
- Si vous ne précisez pas d'institution à la construction, alors <constant>ALL</constant>
- sera utilisée, et donc toutes les institutions seront utilisées.
- </para>
- <para>
- Dans ce cas, utiliser <methodname>addType()</methodname> ne sert à rien.
- </para>
- </note>
- </sect3>
- <sect3 id="zend.validate.set.creditcard.servicecheck">
- <title>Validation par fonction de rappel</title>
- <para>
- Comme déja dit, <classname>Zend_Validate_CreditCard</classname> ne valide que le numéro
- de la carte. Heureusement, certaines institutions proposent des
- <acronym>API</acronym>s pour valider des numéros de carte de crédit qui ne sont
- pas publiques. Ces services sont très souvent payants, ainsi cette vérification est par
- défaut désactivée.
- </para>
- <para>
- Lorsque vous avez accès à de telles <acronym>API</acronym>s, vous pouvez les utiliser
- comme fonctions additionnelles à <classname>Zend_Validate_CreditCard</classname> et ainsi
- augmenter la sécurité de la validation.
- </para>
- <para>
- Pour ce faire, vous devez simplement préciser une fonction de rappel qui sera appelée
- après que la validation "classique" ait réussi. Ceci évite un appel à l'
- <acronym>API</acronym> avec un numéro de toute façon non valide et augmentera ainsi
- les performances de la validation et donc de l'application.
- </para>
- <para>
- <methodname>setService()</methodname> et
- <methodname>getService()</methodname> sont utilisée pour la fonction de rappel.
- La clé de configuration à utiliser, si vous le souhaitez, est '<property>service</property>'
- (à la construction). Des détails peuvent être trouvés sur la documentation du validateur<link
- linkend="zend.validate.set.callback">Callback</link>.
- </para>
- <programlisting language="php"><![CDATA[
- // Votre classe de service
- class CcService
- {
- public function checkOnline($cardnumber, $types)
- {
- // Processus de validation ici
- }
- }
- // La validation
- $service = new CcService();
- $valid = new Zend_Validate_CreditCard(Zend_Validate_CreditCard::VISA);
- $valid->setService(array($service, 'checkOnline'));
- ]]></programlisting>
- <para>
- Ici le service sera appelé avec le numéro de carte comme premier paramètre,
- et les types accéptés comme second.
- </para>
- </sect3>
- </sect2>
- <!--
- vim:se ts=4 sw=4 et:
- -->
|