public function ccconfirmationAction() { $pageSession = new Zend_Session_Namespace('landlords_insurance_quote'); $request = $this->getRequest(); $remotePassword = $this->_params->secpay->get('remotepassword'); $this->_customerReferenceNumber = $request->getParam('refno'); $this->_policyNumber = $request->getParam('policynumber'); $hash = $request->getParam('hash'); if ($hash == "") { $this->_helper->redirector->gotoUrl('/landlords/insurance-quote/cc-failed'); exit; } $policyNumber = $this->_policyNumber; $quoteNumber = str_replace("P", "Q", $policyNumber); // Check to see if this quote has already been converted to a policy - if it has we don't want to do any of the below $policyManager = new Manager_Insurance_LegacyPolicy(); $policy = $policyManager->getByPolicyNumber($policyNumber); // My HomeLet registration/login form and processing $this->view->form = $this->registrationFormProcess($policyNumber); // Set the completed status of the quote to true $this->view->completed = true; if (is_null($policy)) { $this->_webLeadSummaryId = $request->getParam('webleadsummaryid'); $url = $request->getRequestUri(); $pos = strpos($url, "hash="); $url = substr($url, 0, $pos); $url .= $remotePassword; // Check that the callback has a valid hash if (md5($url) != $hash) { // If it doesn't then log an error message and re-direct to fraud page $extendedMessage = 'request url = ' . $request->getRequestUri() . "\n\r"; $extendedMessage .= 'trimmed url = ' . $url . "\n\r"; $extendedMessage .= 'our hash = ' . $hash . "\n\r"; $extendedMessage .= 'secpay hash = ' . md5($url) . "\n\r"; $log = Zend_Registry::get('logger'); $log->setEventItem('extendedMessage', $extendedMessage); $log->setEventItem('ipAddress', $this->getRequest()->getServer('REMOTE_ADDR')); $log->setEventItem('requestURL', $request->getRequestUri()); $log->setEventItem('trace', ''); $log->setEventItem('file', ''); $log->setEventItem('line', ''); $log->crit('Secpay fraud detected (landlords insurance quote)'); $this->_helper->redirector->gotoUrl('/landlords/insurance-quote/fraud-attempt'); exit; } // All tickety-Boo - save payment card details $customerReferenceNumber = $request->getParam('refno'); $quoteManager = new Manager_Insurance_LandlordsPlus_Quote(null, $quoteNumber); $quoteNumber = $quoteManager->getPolicyNumber(); $agentSchemeNumber = Manager_Core_Agent::filterAsn($quoteManager->getAgentSchemeNumber()); $creditCard = new Datasource_Core_CreditCard_Payment(); $creditCard->saveDetails($request->getParams()); $schedule = new Manager_Insurance_Schedule(); $schedule->save($customerReferenceNumber, $quoteManager); $quoteToPolicyManager = new Manager_Insurance_LandlordsPlus_QuoteToPolicy(); $quoteToPolicyManager->changeQuoteToPolicy($quoteNumber); $months = $request->getParam('paymentfrequency') == 'MONTHLY' ? 1 : 12; $disbursement = new Manager_Core_Disbursement(); $disbursement->processDisbursement($policyNumber, $request->getParam('amount'), $months, "CC"); //Update the WebLeads $webLeadManager = new Manager_Core_WebLead(); $webLeadSummary = $webLeadManager->getSummary($this->_webLeadSummaryId); $webLeadSummary->quoteNumber = $policyNumber; $webLeadSummary->status = Model_Core_WebLeadStatus::COMPLETE; $webLeadSummary->completedTime = $this->_offsetDate(); $webLeadManager->updateSummary($webLeadSummary); // Document management stuff, only runs on first conversion of quote -> policy $documentManager = new Manager_Insurance_Document(); $documentManager->createAndPostDocument($policyNumber, Model_Insurance_LandlordsPlus_DocumentTypes::NEW_POLICY_DOCS); $documentArray = $documentManager->getDocuments($policyNumber, Model_Insurance_LandlordsPlus_DocumentTypes::NEW_POLICY_DOCS); $firstDocument = $documentArray[0]; // Put the document number into session so that it can be displayed from this action and later in // the registration confirmation action if (!is_null($firstDocument)) { $pageSession->documentNumber = $firstDocument->request_hash; $this->view->documentNumber = $pageSession->documentNumber; } // Extra values passed into view for Google Analytics commerce tracking: if (is_null($policy)) { $policy = $policyManager->getByPolicyNumber($policyNumber); } $this->view->policy = $policy; // Policy object // todo: Fix disgusting way of passing additional data through two chained views. $extraVars = new stdClass(); $monthMultiplier = strtolower($policy->paySchedule) == 'monthly' ? 12 : 1; $extraVars->quoteAnnual = $policy->quote * $monthMultiplier; $extraVars->iptAnnual = $policy->ipt * $monthMultiplier; $this->view->extraVars = $extraVars; } else { $agentSchemeNumber = Manager_Core_Agent::filterAsn($policy->agentSchemeNumber); } // Fetch the HOMELETUK.COM legacy domain // Please don't change this again it is SUPPOSED to be the old crappy php4 box $whiteLabelManager = new Manager_Core_WhiteLabel(); $whiteLabelData = new Model_Core_WhiteLabel(); $whiteLabelData = $whiteLabelManager->fetchByAgentSchemeNumber($agentSchemeNumber); // Put domain name of the legacy server in the view $this->view->domain = $this->_params->homelet->legacyDomain; $this->view->companyName = $whiteLabelData->companyName; $this->view->companyName = "HomeLet"; $this->view->policyNumber = $policyNumber; }
/** * Action for the Confirmation of a Successful Credit card Payment * * @return void * @todo the Company name need to be fetched from branding */ public function ccconfirmationAction() { $params = Zend_Registry::get('params'); $pageSession = new Zend_Session_Namespace('tenants_insurance_quote'); $request = $this->getRequest(); $this->_customerReferenceNumber = $request->getParam('refno'); $this->_policyNumber = $request->getParam('policynumber'); $hash = $request->getParam('hash'); if ($hash == "") { $this->_helper->redirector->gotoUrl('/tenants/insurance-quote-b/cc-failed'); exit; } $policyNumber = $this->_policyNumber; $quoteNumber = str_replace("P", "Q", $policyNumber); // Check to see if this quote has already been converted to a policy - if it has we don't want to do any of the below $policyManager = new Manager_Insurance_LegacyPolicy(); $policy = $policyManager->getByPolicyNumber($policyNumber); if (is_null($policy)) { // Test the has to prove that this is a valid request $remotePassword = $params->secpay->get('remotepassword'); $request = $this->getRequest(); $url = $request->getRequestUri(); $pos = strpos($url, "hash="); $url = substr($url, 0, $pos); $url .= $remotePassword; // if the hash and the md5'ed url match then this is a valid request callback if (md5($url) == $hash) { $params = $this->getRequest()->getParams(); if (isset($params['code']) && $params['code'] == "A") { // Populate all the missing cookie information from the parameters from secpay $this->_customerReferenceNumber = $request->getParam('refno'); $this->_policyNumber = $request->getParam('policynumber'); $this->_webLeadSummaryId = $request->getParam('webleadsummaryid'); $this->_policyNumber = str_replace("P", "Q", $this->_policyNumber); $quoteNumber = $this->_policyNumber; $quote = new Manager_Insurance_TenantsContentsPlus_Quote(null, null, $this->_policyNumber); // Update Pay Status $quoteObject = new Model_Insurance_LegacyQuote(); $quoteObject = $quote->getQuoteObject(); $agentSchemeNumber = Manager_Core_Agent::filterAsn($quote->getAgentSchemeNumber()); $quoteObject->startTime = date("h:j:s"); $quoteObject->payStatus = "UpToDate"; $quote->update($quoteObject); $creditCard = new Datasource_Core_CreditCard_Payment(); $creditCard->saveDetails($request->getParams()); $schedule = new Manager_Insurance_Schedule(); $schedule->save($this->_customerReferenceNumber, $quote); $quoteToPolicyManager = new Manager_Insurance_TenantsContentsPlus_QuoteToPolicy(); $quoteToPolicyManager->changeQuoteToPolicy($quoteNumber); // Unset the quote stuff as it no longer exists!!! unset($quote); unset($quoteObject); $policyNumber = str_replace("Q", "P", $quoteNumber); $transId = $policyNumber; $months = $request->getParam('paymentfrequency') == 'Monthly' ? 1 : 12; $disbursement = new Manager_Core_Disbursement(); $disbursement->processDisbursement($policyNumber, $request->getParam('amount'), $months, "CC"); $disbursement->createTermImage($policyNumber); //Update the WebLeads $webLeadManager = new Manager_Core_WebLead(); $webLeadSummary = $webLeadManager->getSummary($this->_webLeadSummaryId); $webLeadSummary->quoteNumber = $policyNumber; $webLeadSummary->status = Model_Core_WebLeadStatus::COMPLETE; $webLeadSummary->completedTime = $this->_offsetDate(); $webLeadManager->updateSummary($webLeadSummary); // Transaction is complete unset the Session to prevent navigation to other steps again Zend_Session::namespaceUnset('tenants_insurance_quote'); // Document management stuff, only runs on first conversion of quote -> policy $documentManager = new Manager_Insurance_Document(); $documentManager->createAndPostDocument($policyNumber, Model_Insurance_TenantsContentsPlus_DocumentTypes::NEW_POLICY_DOCS); $documentArray = $documentManager->getDocuments($policyNumber, Model_Insurance_TenantsContentsPlus_DocumentTypes::NEW_POLICY_DOCS); $firstDocument = $documentArray[0]; // Put document number in the view, on any later page loads to the same URL this part will not be available for better security if (!is_null($firstDocument)) { $this->view->documentNumber = $firstDocument->request_hash; } } else { // The auth code, failed so redirect to back to payment $this->_helper->redirector->gotoUrl('/tenants/insurance-quote-b/cc-failed'); exit; } } else { $extendedMessage = 'request url = ' . $request->getRequestUri() . "\n\r"; $extendedMessage .= 'trimmed url = ' . $url . "\n\r"; $extendedMessage .= 'our hash = ' . $hash . "\n\r"; $extendedMessage .= 'secpay hash = ' . md5($url) . "\n\r"; $log = Zend_Registry::get('logger'); $log->setEventItem('extendedMessage', $extendedMessage); $log->setEventItem('ipAddress', $this->getRequest()->getServer('REMOTE_ADDR')); $log->setEventItem('requestURL', $request->getRequestUri()); $log->setEventItem('trace', ''); $log->setEventItem('file', ''); $log->setEventItem('line', ''); $log->crit('Secpay fraud detected (tenants insurance quote)'); // Hashs are bad to feck to fraud warning page $this->_helper->redirector->gotoUrl('/tenants/insurance-quote-b/fraud-attempt'); exit; } } else { $agentSchemeNumber = Manager_Core_Agent::filterAsn($policy->agentSchemeNumber); } // Put Policy number in the view $this->view->policyNumber = $policyNumber; // Put domain name of the legacy server in the view $params = Zend_Registry::get('params'); $this->view->domain = $params->homelet->legacyDomain; $whiteLabelManager = new Manager_Core_WhiteLabel(); $whiteLabelData = new Model_Core_WhiteLabel(); $whiteLabelData = $whiteLabelManager->fetchByAgentSchemeNumber($agentSchemeNumber); $this->view->companyName = $whiteLabelData->companyName; $this->view->openingTimes = $params->cms->openingtimes->insurance->tenants; // Extra values passed into view for Google Analytics commerce tracking: if (is_null($policy)) { $policy = $policyManager->getByPolicyNumber($policyNumber); } $this->view->policy = $policy; // Policy object // todo: Fix disgusting way of passing additional data through two chained views. $extraVars = new stdClass(); $monthMultiplier = strtolower($policy->paySchedule) == 'monthly' ? 12 : 1; $extraVars->quoteAnnual = $policy->quote * $monthMultiplier; $extraVars->iptAnnual = $policy->ipt * $monthMultiplier; $this->view->extraVars = $extraVars; }
public function getByRefNo($refNo) { $directDebit = new Datasource_Core_CreditCard_Payment(); return $directDebit->getByRefNo($refNo); }