function m_CardSave_Direct($orderId2) { $this->libFunc = new c_libFunctions(); $orderId = strval($orderId2); //constants // PS_MERCHANT_ID , PS_MERCHANT_PASS , PS_CURRENCY , PS_GATEWAY_DOMAIN , PS_GATEWAY_PORT $Amount = floatval($_SESSION['grandTotal']) * 100; $MerchantID = CS_MERCHANT_ID; $Password = CS_MERCHANT_PASS; $CurrencyShort = CS_CURRENCY; $OrderID = $orderId; $OrderDescription = SITE_URL . " - Invoice #" . $orderId; $CardName = $_SESSION['cardholder_name']; $CardNumber = $_SESSION['cc_number']; $ExpiryDateMonth = $_SESSION['cc_month']; $ExpiryDateYear = substr($_SESSION['cc_year'], 2); $StartDateYear = $_SESSION['cc_start_year']; $StartDateMonth = $_SESSION['cc_start_month']; $IssueNumber = $_SESSION['issuenumber']; $CV2 = $_SESSION['cv2']; $Address1 = $_SESSION['address1']; $Address2 = $_SESSION['address2']; $Address3 = ''; $Address4 = ''; $City = $_SESSION['city']; $this->obDb->query = "SELECT vStateName FROM " . STATES . " where iStateId_PK = '" . $_SESSION['bill_state_id'] . "'"; $row_state = $this->obDb->fetchQuery(); $State = $row_state[0]->vStateName; $PostCode = $_SESSION['zip']; $this->obDb->query = "SELECT vCountryCode FROM " . COUNTRY . " where iCountryId_PK = '" . $_SESSION['bill_country_id'] . "'"; $row_country = $this->obDb->fetchQuery(); $billcountryiso = $row_country[0]->vCountryCode; $CustomerEmail = $_SESSION['email']; $CustomerPhone = $_SESSION['phone']; $PaymentProcessorDomain = CS_GATEWAY_DOMAIN; $PaymentProcessorPort = CS_GATEWAY_PORT; if ($PaymentProcessorPort == 443) { $PaymentProcessorFullDomain = $PaymentProcessorDomain . "/"; } else { $PaymentProcessorFullDomain = $PaymentProcessorDomain . ":" . $PaymentProcessorPort . "/"; } $iclISOCurrencyList = new ISOCurrencyList(); $rgeplRequestGatewayEntryPointList = new RequestGatewayEntryPointList(); $rgeplRequestGatewayEntryPointList->add("https://gw1." . $PaymentProcessorFullDomain, 100, 1); $rgeplRequestGatewayEntryPointList->add("https://gw2." . $PaymentProcessorFullDomain, 200, 1); $rgeplRequestGatewayEntryPointList->add("https://gw3." . $PaymentProcessorFullDomain, 300, 1); $cdtCardDetailsTransaction = new CardDetailsTransaction($rgeplRequestGatewayEntryPointList); $cdtCardDetailsTransaction->getMerchantAuthentication()->setMerchantID($MerchantID); $cdtCardDetailsTransaction->getMerchantAuthentication()->setPassword($Password); $cdtCardDetailsTransaction->getTransactionDetails()->getMessageDetails()->setTransactionType("SALE"); $cdtCardDetailsTransaction->getTransactionDetails()->getAmount()->setValue($Amount); //if ($CurrencyShort != "" && $iclISOCurrencyList->getISOCurrency($CurrencyShort, $icISOCurrency)) //{ $cdtCardDetailsTransaction->getTransactionDetails()->getCurrencyCode()->setValue($CurrencyShort); //} $cdtCardDetailsTransaction->getTransactionDetails()->setOrderID($OrderID); $cdtCardDetailsTransaction->getTransactionDetails()->setOrderDescription($OrderDescription); $cdtCardDetailsTransaction->getTransactionDetails()->getTransactionControl()->getEchoCardType()->setValue(true); $cdtCardDetailsTransaction->getTransactionDetails()->getTransactionControl()->getEchoAmountReceived()->setValue(true); $cdtCardDetailsTransaction->getTransactionDetails()->getTransactionControl()->getEchoAVSCheckResult()->setValue(true); $cdtCardDetailsTransaction->getTransactionDetails()->getTransactionControl()->getEchoCV2CheckResult()->setValue(true); $cdtCardDetailsTransaction->getTransactionDetails()->getTransactionControl()->getThreeDSecureOverridePolicy()->setValue(true); $cdtCardDetailsTransaction->getTransactionDetails()->getTransactionControl()->getDuplicateDelay()->setValue(60); $cdtCardDetailsTransaction->getTransactionDetails()->getThreeDSecureBrowserDetails()->getDeviceCategory()->setValue(0); $cdtCardDetailsTransaction->getTransactionDetails()->getThreeDSecureBrowserDetails()->setAcceptHeaders("*/*"); $cdtCardDetailsTransaction->getTransactionDetails()->getThreeDSecureBrowserDetails()->setUserAgent($_SERVER["HTTP_USER_AGENT"]); $cdtCardDetailsTransaction->getCardDetails()->setCardName($CardName); $cdtCardDetailsTransaction->getCardDetails()->setCardNumber($CardNumber); if ($ExpiryDateMonth != "") { $cdtCardDetailsTransaction->getCardDetails()->getExpiryDate()->getMonth()->setValue($ExpiryDateMonth); } if ($ExpiryDateYear != "") { $cdtCardDetailsTransaction->getCardDetails()->getExpiryDate()->getYear()->setValue($ExpiryDateYear); } if ($StartDateMonth != "") { $cdtCardDetailsTransaction->getCardDetails()->getStartDate()->getMonth()->setValue($StartDateMonth); } if ($StartDateYear != "") { $cdtCardDetailsTransaction->getCardDetails()->getStartDate()->getYear()->setValue($StartDateYear); } $cdtCardDetailsTransaction->getCardDetails()->setIssueNumber($IssueNumber); $cdtCardDetailsTransaction->getCardDetails()->setCV2($CV2); $cdtCardDetailsTransaction->getCustomerDetails()->getBillingAddress()->setAddress1($Address1); $cdtCardDetailsTransaction->getCustomerDetails()->getBillingAddress()->setAddress2($Address2); $cdtCardDetailsTransaction->getCustomerDetails()->getBillingAddress()->setAddress3($Address3); $cdtCardDetailsTransaction->getCustomerDetails()->getBillingAddress()->setAddress4($Address4); $cdtCardDetailsTransaction->getCustomerDetails()->getBillingAddress()->setCity($City); $cdtCardDetailsTransaction->getCustomerDetails()->getBillingAddress()->setState($State); $cdtCardDetailsTransaction->getCustomerDetails()->getBillingAddress()->setPostCode($PostCode); $cdtCardDetailsTransaction->getCustomerDetails()->getBillingAddress()->getCountryCode()->setValue($billcountryiso); $cdtCardDetailsTransaction->getCustomerDetails()->setEmailAddress($CustomerEmail); $cdtCardDetailsTransaction->getCustomerDetails()->setPhoneNumber($CustomerPhone); $cdtCardDetailsTransaction->getCustomerDetails()->setCustomerIPAddress($_SERVER["REMOTE_ADDR"]); //error_log($cdtrCardDetailsTransactionResult . " |" . $todTransactionOutputData,3,SITE_PATH."ecom/paymentSense.log"); $boTransactionProcessed = $cdtCardDetailsTransaction->processTransaction($cdtrCardDetailsTransactionResult, $todTransactionOutputData); if ($boTransactionProcessed == false) { // could not communicate with the payment gateway $Message = "Couldn't communicate with payment gateway" . $cdtCardDetailsTransaction->getLastException()->getMessage(); $_SESSION['cardsave_error'] = $Message; $retUrl = $this->libFunc->m_safeUrl(SITE_SAFEURL . "ecom/index.php?action=checkout.billing"); $this->libFunc->m_mosRedirect($retUrl); } else { switch ($cdtrCardDetailsTransactionResult->getStatusCode()) { case 0: // status code of 0 - means transaction successful $this->obDb->query = "UPDATE " . ORDERS . " SET iOrderStatus=1,iPayStatus=1 WHERE iOrderid_PK = '" . $orderId . "'"; $rs = $this->obDb->updateQuery(); $retUrl = $this->libFunc->m_safeUrl(SITE_SAFEURL . "ecom/index.php?action=checkout.process&mode=" . $orderId); $this->libFunc->m_mosRedirect($retUrl); break; case 3: // status code of 3 - means 3D Secure authentication required $_SESSION['PaREQ'] = $todTransactionOutputData->getThreeDSecureOutputData()->getPaREQ(); $_SESSION['CrossReference'] = $todTransactionOutputData->getCrossReference(); $BodyAttributes = " onload=\"document.Form.submit();\""; $FormAttributes = " target=\"ACSFrame\""; $_SESSION['FormAction'] = $todTransactionOutputData->getThreeDSecureOutputData()->getACSURL(); $retUrl = $this->libFunc->m_safeUrl(SITE_SAFEURL . 'ecom/index.php?action=checkout.cs3d&mode=' . $orderId); $this->libFunc->m_mosRedirect($retUrl); break; case 5: // status code of 5 - means transaction declined $Message = $cdtrCardDetailsTransactionResult->getMessage(); $_SESSION['cardsave_error'] = $Message; $retUrl = $this->libFunc->m_safeUrl(SITE_SAFEURL . "ecom/index.php?action=checkout.billing"); $this->libFunc->m_mosRedirect($retUrl); break; case 20: // status code of 20 - means duplicate transaction $NextFormMode = "RESULTS"; $Message = $cdtrCardDetailsTransactionResult->getMessage(); if ($cdtrCardDetailsTransactionResult->getPreviousTransactionResult()->getStatusCode()->getValue() == 0) { $retUrl = $this->libFunc->m_safeUrl(SITE_SAFEURL . "ecom/index.php?action=checkout.process&mode=" . $orderId); $this->libFunc->m_mosRedirect($retUrl); } $PreviousTransactionMessage = $cdtrCardDetailsTransactionResult->getPreviousTransactionResult()->getMessage(); $_SESSION['cardsave_error'] = $Message . " , " . $PreviousTransactionMessage; $retUrl = $this->libFunc->m_safeUrl(SITE_SAFEURL . "ecom/index.php?action=checkout.billing"); $this->libFunc->m_mosRedirect($retUrl); break; case 30: // status code of 30 - means an error occurred $Message = $cdtrCardDetailsTransactionResult->getMessage(); if ($cdtrCardDetailsTransactionResult->getErrorMessages()->getCount() > 0) { for ($LoopIndex = 0; $LoopIndex < $cdtrCardDetailsTransactionResult->getErrorMessages()->getCount(); $LoopIndex++) { $Message = $Message . "<br/>" . $cdtrCardDetailsTransactionResult->getErrorMessages()->getAt($LoopIndex); } } if ($todTransactionOutputData == null) { $szResponseCrossReference = ""; } else { $szResponseCrossReference = $todTransactionOutputData->getCrossReference(); } $_SESSION['cardsave_error'] = $Message; $retUrl = $this->libFunc->m_safeUrl(SITE_SAFEURL . "ecom/index.php?action=checkout.billing"); $this->libFunc->m_mosRedirect($retUrl); break; default: $Message = $cdtrCardDetailsTransactionResult->getMessage(); if ($todTransactionOutputData == null) { $szResponseCrossReference = ""; } else { $szResponseCrossReference = $todTransactionOutputData->getCrossReference(); } $_SESSION['cardsave_error'] = $Message; $retUrl = $this->libFunc->m_safeUrl(SITE_SAFEURL . "ecom/index.php?action=checkout.billing"); $this->libFunc->m_mosRedirect($retUrl); break; } } }