Documentation TYPO3 par Ameos |
00001 <?php 00002 /*************************************************************** 00003 * Copyright notice 00004 * 00005 * (c) 1999-2004 Kasper Skaarhoj (kasperYYYY@typo3.com) 00006 * All rights reserved 00007 * 00008 * This script is part of the TYPO3 project. The TYPO3 project is 00009 * free software; you can redistribute it and/or modify 00010 * it under the terms of the GNU General Public License as published by 00011 * the Free Software Foundation; either version 2 of the License, or 00012 * (at your option) any later version. 00013 * 00014 * The GNU General Public License can be found at 00015 * http://www.gnu.org/copyleft/gpl.html. 00016 * A copy is found in the textfile GPL.txt and important notices to the license 00017 * from the author is found in LICENSE.txt distributed with these scripts. 00018 * 00019 * 00020 * This script is distributed in the hope that it will be useful, 00021 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00022 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00023 * GNU General Public License for more details. 00024 * 00025 * This copyright notice MUST APPEAR in all copies of the script! 00026 ***************************************************************/ 00041 if (!is_object($this) || !is_object($this->cObj)) die('$this and $this->cObj must be objects!'); 00042 00043 00044 // $lConf = $this->basketExtra["payment."]["handleScript."]; // Loads the handleScript TypoScript into $lConf. 00045 $lConf = $conf; 00046 $localTemplateCode = $this->cObj->fileResource($lConf[templateFile] ? $lConf[templateFile] : "EXT:tt_products/pi/payment_DIBS_template.tmpl"); // Fetches the DIBS template file 00047 $localTemplateCode = $this->cObj->substituteMarkerArrayCached($localTemplateCode, $this->globalMarkerArray); 00048 00049 $orderUid = $this->getBlankOrderUid(); // Gets an order number, creates a new order if no order is associated with the current session 00050 00051 switch(t3lib_div::_GP("products_cmd")) { 00052 case "cardno": 00053 $tSubpart = $lConf["soloe"] ? "###DIBS_SOLOE_TEMPLATE###" : "###DIBS_CARDNO_TEMPLATE###"; // If solo-e is selected, use different subpart from template 00054 $content=$this->getBasket($tSubpart,$localTemplateCode); // This not only gets the output but also calculates the basket total, so it's NECESSARY! 00055 00056 $markerArray=array(); 00057 $markerArray["###HIDDEN_FIELDS###"] = ' 00058 <input type=hidden name=merchant value="'.$lConf["merchant"].'"> 00059 <input type=hidden name=amount value="'.round($this->calculatedSums_tax["total"]*100).'"> 00060 <input type=hidden name=currency value="'.$lConf["currency"].'"> <!--Valuta som angivet i ISO4217, danske kroner=208--> 00061 <input type=hidden name=orderid value="'.$this->getOrderNumber($orderUid).'"> <!--Butikkens ordrenummer der skal knyttes til denne transaktion--> 00062 <input type=hidden name=uniqueoid value="1"> 00063 <input type=hidden name="accepturl" value="https://payment.architrade.com/cgi-ssl/relay.cgi/'.$lConf["relayURL"].'&products_cmd=accept&products_finalize=1&HTTP_COOKIE='.rawurlencode("fe_typo_user=".$GLOBALS["TSFE"]->fe_user->id).'"> 00064 <input type=hidden name="declineurl" value="https://payment.architrade.com/cgi-ssl/relay.cgi/'.$lConf["relayURL"].'&products_cmd=decline&products_finalize=1&HTTP_COOKIE='.rawurlencode("fe_typo_user=".$GLOBALS["TSFE"]->fe_user->id).'">'; 00065 if ($lConf["soloe"]) { 00066 $markerArray["###HIDDEN_FIELDS###"].= ' 00067 <input type=hidden name="cancelurl" value="https://payment.architrade.com/cgi-ssl/relay.cgi/'.$lConf["relayURL"].'&products_cmd=cancel&products_finalize=1&HTTP_COOKIE='.rawurlencode("fe_typo_user=".$GLOBALS["TSFE"]->fe_user->id).'">'; 00068 } 00069 if ($lConf["test"]) { 00070 $markerArray["###HIDDEN_FIELDS###"].= ' 00071 <input type=hidden name=test value="foo"> 00072 '; 00073 } 00074 if ($lConf["cardType"] && !$lConf["soloe"]) { 00075 /* 00076 Examples: 00077 DK Dankort 00078 V-DK Visa-Dankort 00079 MC(DK) Mastercard/Eurocard udstedt i Danmark 00080 VISA Visakort udstedt i udlandet 00081 MC Mastercard/Eurocard udstedt i udlandet 00082 DIN(DK) Diners Club, Danmark 00083 DIN Diners Club, international 00084 */ 00085 00086 $markerArray["###HIDDEN_FIELDS###"].= ' 00087 <input type=hidden name=cardtype value="'.$lConf["cardType"].'"> 00088 '; 00089 } 00090 if ($lConf["account"]) { // DIBS account feature 00091 $markerArray["###HIDDEN_FIELDS###"].= ' 00092 <input type=hidden name=account value="'.$lConf["account"].'"> 00093 '; 00094 } 00095 00096 00097 // Adds order info to hiddenfields. 00098 if ($lConf["addOrderInfo"]) { 00099 $theFields=""; 00100 // Delivery info 00101 reset($this->deliveryInfo); 00102 $cc=0; 00103 while(list($field,$value)=each($this->deliveryInfo)) { 00104 $value = trim($value); 00105 if ($value) { 00106 $cc++; 00107 $theFields.=chr(10).'<input type=hidden name="delivery'.$cc.'.'.$field.'" value="'.htmlspecialchars($value).'">'; 00108 } 00109 } 00110 00111 // Order items 00112 reset($this->calculatedBasket); 00113 $theFields.=' 00114 <input type=hidden name="ordline1-1" value="Varenummer"> 00115 <input type=hidden name="ordline1-2" value="Beskrivelse"> 00116 <input type=hidden name="ordline1-3" value="Antal"> 00117 <input type=hidden name="ordline1-4" value="Pris"> 00118 '; 00119 $cc=1; 00120 while(list(,$rec)=each($this->calculatedBasket)) { 00121 $cc++; 00122 $theFields.=' 00123 <input type=hidden name="ordline'.$cc.'-1" value="'.htmlspecialchars($rec["rec"]["itemnumber"]).'"> 00124 <input type=hidden name="ordline'.$cc.'-2" value="'.htmlspecialchars($rec["rec"]["title"]).'"> 00125 <input type=hidden name="ordline'.$cc.'-3" value="'.$rec["count"].'"> 00126 <input type=hidden name="ordline'.$cc.'-4" value="'.$this->priceFormat($rec["totalTax"]).'">'; 00127 } 00128 00129 $theFields.=' 00130 <input type=hidden name="priceinfo1.Shipping" value="'.$this->priceFormat($this->calculatedSums_tax["shipping"]).'">'; 00131 $theFields.=' 00132 <input type=hidden name="priceinfo2.Payment" value="'.$this->priceFormat($this->calculatedSums_tax["payment"]).'">'; 00133 $theFields.=' 00134 <input type=hidden name="priceinfo3.Tax" value="'.$this->priceFormat($this->calculatedSums_tax["total"]-$this->calculatedSums_no_tax["total"]).'">'; 00135 $markerArray["###HIDDEN_FIELDS###"].=$theFields; 00136 } 00137 $content= $this->cObj->substituteMarkerArrayCached($content, $markerArray); 00138 break; 00139 case "decline": 00140 $markerArray=array(); 00141 $markerArray["###REASON_CODE###"] = t3lib_div::_GP("reason"); 00142 $content=$this->getBasket("###DIBS_DECLINE_TEMPLATE###",$localTemplateCode, $markerArray); // This not only gets the output but also calculates the basket total, so it's NECESSARY! 00143 break; 00144 case "cancel": 00145 $content=$this->getBasket("###DIBS_SOLOE_CANCEL_TEMPLATE###",$localTemplateCode, $markerArray); // This not only gets the output but also calculates the basket total, so it's NECESSARY! 00146 break; 00147 case "accept": 00148 $content=$this->getBasket("###DIBS_ACCEPT_TEMPLATE###",$localTemplateCode); // This is just done to calculate stuff 00149 00150 // DIBS md5 keys 00151 $k1=$lConf["k1"]; 00152 $k2=$lConf["k2"]; 00153 00154 // Checking transaction 00155 $amount=round($this->calculatedSums_tax["total"]*100); 00156 $currency="208"; 00157 $transact=t3lib_div::_GP("transact"); 00158 $md5key= md5($k2.md5($k1."transact=".$transact."&amount=".$amount."¤cy=".$currency)); 00159 $authkey=t3lib_div::_GP("authkey"); 00160 if ($md5key != $authkey) { 00161 $content=$this->getBasket("###DIBS_DECLINE_MD5_TEMPLATE###",$localTemplateCode); // This not only gets the output but also calculates the basket total, so it's NECESSARY! 00162 } elseif (t3lib_div::_GP("orderid")!=$this->getOrderNumber($orderUid)) { 00163 $content=$this->getBasket("###DIBS_DECLINE_ORDERID_TEMPLATE###",$localTemplateCode); // This not only gets the output but also calculates the basket total, so it's NECESSARY! 00164 } else { 00165 $markerArray=array(); 00166 $markerArray["###TRANSACT_CODE###"] = t3lib_div::_GP("transact"); 00167 00168 $content=$this->getBasket("###BASKET_ORDERCONFIRMATION_TEMPLATE###","",$markerArray); 00169 $this->finalizeOrder($orderUid,$markerArray); // Important: finalizeOrder MUST come after the call of prodObj->getBasket, because this function, getBasket, calculates the order! And that information is used in the finalize-function 00170 } 00171 /* 00172 debug($md5key,1); 00173 debug($authkey,1); 00174 debug("transact"); 00175 debug(t3lib_div::_GP("transact")); 00176 debug($GLOBALS["TSFE"]->fe_user->id); 00177 // echo phpinfo(); 00178 */ 00179 break; 00180 default: 00181 if ($lConf["relayURL"]) { 00182 $markerArray=array(); 00183 $markerArray["###REDIRECT_URL###"] = 'https://payment.architrade.com/cgi-ssl/relay.cgi/'.$lConf["relayURL"].'&products_cmd=cardno&products_finalize=1&HTTP_COOKIE='.rawurlencode("fe_typo_user=".$GLOBALS["TSFE"]->fe_user->id); 00184 $content=$this->getBasket("###DIBS_REDIRECT_TEMPLATE###",$localTemplateCode, $markerArray); // This not only gets the output but also calculates the basket total, so it's NECESSARY! 00185 } else { 00186 $content = "NO .relayURL given!!"; 00187 } 00188 break; 00189 } 00190 ?>