Zend_Validate-CreditCard.xml 12 KB

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