PageRenderTime 53ms CodeModel.GetById 26ms RepoModel.GetById 0ms app.codeStats 0ms

/htdocs/paybox/lib/paybox.lib.php

https://bitbucket.org/speedealing/speedealing
PHP | 313 lines | 195 code | 31 blank | 87 comment | 36 complexity | 75989cf8dca89edd1713247c4fc9b3fa MD5 | raw file
Possible License(s): LGPL-3.0, LGPL-2.1, GPL-3.0, MIT
  1. <?php
  2. /* Copyright (C) 2008-2009 Laurent Destailleur <eldy@users.sourceforge.net>
  3. * Copyright (C) 2005-2007 Regis Houssin <regis.houssin@capnetworks.com>
  4. *
  5. * This program is free software; you can redistribute it and/or modify
  6. * it under the terms of the GNU General Public License as published by
  7. * the Free Software Foundation; either version 3 of the License, or
  8. * (at your option) any later version.
  9. *
  10. * This program is distributed in the hope that it will be useful,
  11. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  12. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  13. * GNU General Public License for more details.
  14. *
  15. * You should have received a copy of the GNU General Public License
  16. * along with this program. If not, see <http://www.gnu.org/licenses/>.
  17. */
  18. /**
  19. * \file htdocs/paybox/lib/paybox.lib.php
  20. * \ingroup paybox
  21. * \brief Library for common paybox functions
  22. */
  23. /**
  24. * Show header
  25. *
  26. * @param string $title Title of page
  27. * @param string $head Head string to add int head section
  28. * @return void
  29. */
  30. function llxHeaderPaybox($title, $head = "")
  31. {
  32. global $user, $conf, $langs;
  33. header("Content-type: text/html; charset=".$conf->file->character_set_client);
  34. print '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">';
  35. //print '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" http://www.w3.org/TR/1999/REC-html401-19991224/strict.dtd>';
  36. print "\n";
  37. print "<html>\n";
  38. print "<head>\n";
  39. print '<meta name="robots" content="noindex,nofollow">'."\n";
  40. print '<meta name="keywords" content="dolibarr,payment,online">'."\n";
  41. print '<meta name="description" content="Welcome on Dolibarr online payment form">'."\n";
  42. print "<title>".$title."</title>\n";
  43. if ($head) print $head."\n";
  44. if (! empty($conf->global->PAYBOX_CSS_URL)) print '<link rel="stylesheet" type="text/css" href="'.$conf->global->PAYBOX_CSS_URL.'?lang='.$langs->defaultlang.'">'."\n";
  45. else
  46. {
  47. print '<link rel="stylesheet" type="text/css" href="'.DOL_URL_ROOT.$conf->css.'?lang='.$langs->defaultlang.'">'."\n";
  48. print '<style type="text/css">';
  49. print '.CTableRow1 { margin: 1px; padding: 3px; font: 12px verdana,arial; background: #e6E6eE; color: #000000; -moz-border-radius-topleft:6px; -moz-border-radius-topright:6px; -moz-border-radius-bottomleft:6px; -moz-border-radius-bottomright:6px;}';
  50. print '.CTableRow2 { margin: 1px; padding: 3px; font: 12px verdana,arial; background: #FFFFFF; color: #000000; -moz-border-radius-topleft:6px; -moz-border-radius-topright:6px; -moz-border-radius-bottomleft:6px; -moz-border-radius-bottomright:6px;}';
  51. print '</style>';
  52. }
  53. print "</head>\n";
  54. print '<body style="margin: 20px;">'."\n";
  55. }
  56. /**
  57. * Show footer
  58. *
  59. * @return void
  60. */
  61. function llxFooterPayBox()
  62. {
  63. print "</body>\n";
  64. print "</html>\n";
  65. }
  66. /**
  67. * Create a redirect form to paybox form
  68. *
  69. * @param int $PRICE Price
  70. * @param string $CURRENCY Currency
  71. * @param string $EMAIL EMail
  72. * @param string $urlok Url to go back if payment is OK
  73. * @param string $urlko Url to go back if payment is KO
  74. * @param string $TAG Tag
  75. * @return int 1 if OK, -1 if ERROR
  76. */
  77. function print_paybox_redirect($PRICE,$CURRENCY,$EMAIL,$urlok,$urlko,$TAG)
  78. {
  79. global $conf, $langs, $db;
  80. dol_syslog("Paybox.lib::print_paybox_redirect", LOG_DEBUG);
  81. // Clean parameters
  82. $PBX_IDENTIFIANT="2"; // Identifiant pour v2 test
  83. if (! empty($conf->global->PAYBOX_PBX_IDENTIFIANT)) $PBX_IDENTIFIANT=$conf->global->PAYBOX_PBX_IDENTIFIANT;
  84. $IBS_SITE="1999888"; // Site test
  85. if (! empty($conf->global->PAYBOX_IBS_SITE)) $IBS_SITE=$conf->global->PAYBOX_IBS_SITE;
  86. $IBS_RANG="99"; // Rang test
  87. if (! empty($conf->global->PAYBOX_IBS_RANG)) $IBS_RANG=$conf->global->PAYBOX_IBS_RANG;
  88. $IBS_DEVISE="840"; // Currency (Dollar US by default)
  89. if ($CURRENCY == 'EUR') $IBS_DEVISE="978";
  90. if ($CURRENCY == 'USD') $IBS_DEVISE="840";
  91. $URLPAYBOX="";
  92. if ($conf->global->PAYBOX_CGI_URL_V1) $URLPAYBOX=$conf->global->PAYBOX_CGI_URL_V1;
  93. if ($conf->global->PAYBOX_CGI_URL_V2) $URLPAYBOX=$conf->global->PAYBOX_CGI_URL_V2;
  94. if (empty($IBS_DEVISE))
  95. {
  96. dol_print_error('',"Paybox setup param PAYBOX_IBS_DEVISE not defined");
  97. return -1;
  98. }
  99. if (empty($URLPAYBOX))
  100. {
  101. dol_print_error('',"Paybox setup param PAYBOX_CGI_URL_V1 and PAYBOX_CGI_URL_V2 undefined");
  102. return -1;
  103. }
  104. if (empty($IBS_SITE))
  105. {
  106. dol_print_error('',"Paybox setup param PAYBOX_IBS_SITE not defined");
  107. return -1;
  108. }
  109. if (empty($IBS_RANG))
  110. {
  111. dol_print_error('',"Paybox setup param PAYBOX_IBS_RANG not defined");
  112. return -1;
  113. }
  114. // Definition des parametres vente produit pour paybox
  115. $IBS_CMD=$TAG;
  116. $IBS_TOTAL=$PRICE*100; // En centimes
  117. $IBS_MODE=1; // Mode formulaire
  118. $IBS_PORTEUR=$EMAIL;
  119. $IBS_RETOUR="montant:M;ref:R;auto:A;trans:T"; // Format des parametres du get de validation en reponse (url a definir sous paybox)
  120. //$IBS_TXT="<center><b>".$langsiso->trans("YouWillBeRedirectedOnPayBox")."</b><br><i>".$langsiso->trans("PleaseBePatient")."...</i><br></center>";
  121. $IBS_TXT=' '; // Use a space
  122. $IBS_BOUTPI=$langs->trans("Wait");
  123. //$IBS_BOUTPI='';
  124. $IBS_EFFECTUE=$urlok;
  125. $IBS_ANNULE=$urlko;
  126. $IBS_REFUSE=$urlko;
  127. $IBS_BKGD="#FFFFFF";
  128. $IBS_WAIT="2000";
  129. $IBS_LANG="GBR"; // By default GBR=english (FRA, GBR, ESP, ITA et DEU...)
  130. if (preg_match('/^FR/i',$langs->defaultlang)) $IBS_LANG="FRA";
  131. if (preg_match('/^ES/i',$langs->defaultlang)) $IBS_LANG="ESP";
  132. if (preg_match('/^IT/i',$langs->defaultlang)) $IBS_LANG="ITA";
  133. if (preg_match('/^DE/i',$langs->defaultlang)) $IBS_LANG="DEU";
  134. if (preg_match('/^NL/i',$langs->defaultlang)) $IBS_LANG="NLD";
  135. if (preg_match('/^SE/i',$langs->defaultlang)) $IBS_LANG="SWE";
  136. $IBS_OUTPUT='E';
  137. $PBX_SOURCE='HTML';
  138. $PBX_TYPEPAIEMENT='CARTE';
  139. dol_syslog("Soumission Paybox", LOG_DEBUG);
  140. dol_syslog("IBS_MODE: $IBS_MODE", LOG_DEBUG);
  141. dol_syslog("IBS_SITE: $IBS_SITE", LOG_DEBUG);
  142. dol_syslog("IBS_RANG: $IBS_RANG", LOG_DEBUG);
  143. dol_syslog("IBS_TOTAL: $IBS_TOTAL", LOG_DEBUG);
  144. dol_syslog("IBS_DEVISE: $IBS_DEVISE", LOG_DEBUG);
  145. dol_syslog("IBS_CMD: $IBS_CMD", LOG_DEBUG);
  146. dol_syslog("IBS_PORTEUR: $IBS_PORTEUR", LOG_DEBUG);
  147. dol_syslog("IBS_RETOUR: $IBS_RETOUR", LOG_DEBUG);
  148. dol_syslog("IBS_EFFECTUE: $IBS_EFFECTUE", LOG_DEBUG);
  149. dol_syslog("IBS_ANNULE: $IBS_ANNULE", LOG_DEBUG);
  150. dol_syslog("IBS_REFUSE: $IBS_REFUSE", LOG_DEBUG);
  151. dol_syslog("IBS_BKGD: $IBS_BKGD", LOG_DEBUG);
  152. dol_syslog("IBS_WAIT: $IBS_WAIT", LOG_DEBUG);
  153. dol_syslog("IBS_LANG: $IBS_LANG", LOG_DEBUG);
  154. dol_syslog("IBS_OUTPUT: $IBS_OUTPUT", LOG_DEBUG);
  155. dol_syslog("PBX_IDENTIFIANT: $PBX_IDENTIFIANT", LOG_DEBUG);
  156. dol_syslog("PBX_SOURCE: $PBX_SOURCE", LOG_DEBUG);
  157. dol_syslog("PBX_TYPEPAIEMENT: $PBX_TYPEPAIEMENT", LOG_DEBUG);
  158. header("Content-type: text/html; charset=".$conf->file->character_set_client);
  159. print '<html>'."\n";
  160. print '<head>'."\n";
  161. print "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=".$conf->file->character_set_client."\">\n";
  162. print '</head>'."\n";
  163. print '<body>'."\n";
  164. print "\n";
  165. // Formulaire pour module Paybox
  166. print '<form action="'.$URLPAYBOX.'" NAME="Submit" method="POST">'."\n";
  167. // For Paybox V1 (IBS_xxx)
  168. /*
  169. print '<!-- Param for Paybox v1 -->'."\n";
  170. print '<input type="hidden" name="IBS_MODE" value="'.$IBS_MODE.'">'."\n";
  171. print '<input type="hidden" name="IBS_SITE" value="'.$IBS_SITE.'">'."\n";
  172. print '<input type="hidden" name="IBS_RANG" value="'.$IBS_RANG.'">'."\n";
  173. print '<input type="hidden" name="IBS_TOTAL" value="'.$IBS_TOTAL.'">'."\n";
  174. print '<input type="hidden" name="IBS_DEVISE" value="'.$IBS_DEVISE.'">'."\n";
  175. print '<input type="hidden" name="IBS_CMD" value="'.$IBS_CMD.'">'."\n";
  176. print '<input type="hidden" name="IBS_PORTEUR" value="'.$IBS_PORTEUR.'">'."\n";
  177. print '<input type="hidden" name="IBS_RETOUR" value="'.$IBS_RETOUR.'">'."\n";
  178. print '<input type="hidden" name="IBS_EFFECTUE" value="'.$IBS_EFFECTUE.'">'."\n";
  179. print '<input type="hidden" name="IBS_ANNULE" value="'.$IBS_ANNULE.'">'."\n";
  180. print '<input type="hidden" name="IBS_REFUSE" value="'.$IBS_REFUSE.'">'."\n";
  181. print '<input type="hidden" name="IBS_TXT" value="'.$IBS_TXT.'">'."\n";
  182. print '<input type="hidden" name="IBS_BKGD" value="'.$IBS_BKGD.'">'."\n";
  183. print '<input type="hidden" name="IBS_WAIT" value="'.$IBS_WAIT.'">'."\n";
  184. print '<input type="hidden" name="IBS_LANG" value="'.$IBS_LANG.'">'."\n";
  185. print '<input type="hidden" name="IBS_OUTPUT" value="'.$IBS_OUTPUT.'">'."\n";
  186. */
  187. // For Paybox V2 (PBX_xxx)
  188. print '<!-- Param for Paybox v2 -->'."\n";
  189. print '<input type="hidden" name="PBX_IDENTIFIANT" value="'.$PBX_IDENTIFIANT.'">'."\n";
  190. print '<input type="hidden" name="PBX_MODE" value="'.$IBS_MODE.'">'."\n";
  191. print '<input type="hidden" name="PBX_SITE" value="'.$IBS_SITE.'">'."\n";
  192. print '<input type="hidden" name="PBX_RANG" value="'.$IBS_RANG.'">'."\n";
  193. print '<input type="hidden" name="PBX_TOTAL" value="'.$IBS_TOTAL.'">'."\n";
  194. print '<input type="hidden" name="PBX_DEVISE" value="'.$IBS_DEVISE.'">'."\n";
  195. print '<input type="hidden" name="PBX_CMD" value="'.$IBS_CMD.'">'."\n";
  196. print '<input type="hidden" name="PBX_PORTEUR" value="'.$IBS_PORTEUR.'">'."\n";
  197. print '<input type="hidden" name="PBX_RETOUR" value="'.$IBS_RETOUR.'">'."\n";
  198. print '<input type="hidden" name="PBX_EFFECTUE" value="'.$IBS_EFFECTUE.'">'."\n";
  199. print '<input type="hidden" name="PBX_ANNULE" value="'.$IBS_ANNULE.'">'."\n";
  200. print '<input type="hidden" name="PBX_REFUSE" value="'.$IBS_REFUSE.'">'."\n";
  201. print '<input type="hidden" name="PBX_TXT" value="'.$IBS_TXT.'">'."\n";
  202. print '<input type="hidden" name="PBX_BKGD" value="'.$IBS_BKGD.'">'."\n";
  203. print '<input type="hidden" name="PBX_WAIT" value="'.$IBS_WAIT.'">'."\n";
  204. print '<input type="hidden" name="PBX_LANGUE" value="'.$IBS_LANG.'">'."\n";
  205. print '<input type="hidden" name="PBX_OUTPUT" value="'.$IBS_OUTPUT.'">'."\n";
  206. print '<input type="hidden" name="PBX_SOURCE" value="'.$PBX_SOURCE.'">'."\n";
  207. print '<input type="hidden" name="PBX_TYPEPAIEMENT" value="'.$PBX_TYPEPAIEMENT.'">'."\n";
  208. print '</form>'."\n";
  209. // Formulaire pour module Paybox v2 (PBX_xxx)
  210. print "\n";
  211. print '<script type="text/javascript" language="javascript">'."\n";
  212. print ' document.Submit.submit();'."\n";
  213. print '</script>'."\n";
  214. print "\n";
  215. print '</body></html>'."\n";
  216. print "\n";
  217. return;
  218. }
  219. /**
  220. * Show footer of company in HTML pages
  221. *
  222. * @param Societe $fromcompany Third party
  223. * @param Translate $langs Output language
  224. * @return void
  225. */
  226. function html_print_paybox_footer($fromcompany,$langs)
  227. {
  228. global $conf;
  229. // Juridical status
  230. $line1="";
  231. if ($fromcompany->forme_juridique_code)
  232. {
  233. $line1.=($line1?" - ":"").getFormeJuridiqueLabel($fromcompany->forme_juridique_code);
  234. }
  235. // Capital
  236. if ($fromcompany->capital)
  237. {
  238. $line1.=($line1?" - ":"").$langs->transnoentities("CapitalOf",$fromcompany->capital)." ".$langs->transnoentities("Currency".$conf->currency);
  239. }
  240. // Prof Id 1
  241. if ($fromcompany->idprof1 && ($fromcompany->country_code != 'FR' || ! $fromcompany->idprof2))
  242. {
  243. $field=$langs->transcountrynoentities("ProfId1",$fromcompany->country_code);
  244. if (preg_match('/\((.*)\)/i',$field,$reg)) $field=$reg[1];
  245. $line1.=($line1?" - ":"").$field.": ".$fromcompany->idprof1;
  246. }
  247. // Prof Id 2
  248. if ($fromcompany->idprof2)
  249. {
  250. $field=$langs->transcountrynoentities("ProfId2",$fromcompany->country_code);
  251. if (preg_match('/\((.*)\)/i',$field,$reg)) $field=$reg[1];
  252. $line1.=($line1?" - ":"").$field.": ".$fromcompany->idprof2;
  253. }
  254. // Second line of company infos
  255. $line2="";
  256. // Prof Id 3
  257. if ($fromcompany->idprof3)
  258. {
  259. $field=$langs->transcountrynoentities("ProfId3",$fromcompany->country_code);
  260. if (preg_match('/\((.*)\)/i',$field,$reg)) $field=$reg[1];
  261. $line2.=($line2?" - ":"").$field.": ".$fromcompany->idprof3;
  262. }
  263. // Prof Id 4
  264. if ($fromcompany->idprof4)
  265. {
  266. $field=$langs->transcountrynoentities("ProfId4",$fromcompany->country_code);
  267. if (preg_match('/\((.*)\)/i',$field,$reg)) $field=$reg[1];
  268. $line2.=($line2?" - ":"").$field.": ".$fromcompany->idprof4;
  269. }
  270. // IntraCommunautary VAT
  271. if ($fromcompany->tva_intra != '')
  272. {
  273. $line2.=($line2?" - ":"").$langs->transnoentities("VATIntraShort").": ".$fromcompany->tva_intra;
  274. }
  275. print '<br><br><hr>'."\n";
  276. print '<center><font style="font-size: 10px;">'."\n";
  277. print $fromcompany->nom.'<br>';
  278. print $line1.'<br>';
  279. print $line2;
  280. print '</font></center>'."\n";
  281. }
  282. ?>