コード例 #1
0
		/**
		* check 3d secure Authentication response and take relavent action
		*
		*/
		protected function _Handle3DCallBackResponse()
		{

			require(dirname(__FILE__).'/lib/CentinelClient.php');
			$centinelClient = new CentinelClient;

			$centinelClient->Add("MsgType", "cmpi_authenticate");
			$centinelClient->Add("Version", "1.7");
			$centinelClient->Add("ProcessorId", $this->GetValue('cardinalprocessorid'));
			$centinelClient->Add("MerchantId", $this->GetValue('cardinalmerchantid'));
			$centinelClient->Add("TransactionPwd", $this->GetValue('cardinaltransactionpwd'));
			$centinelClient->Add("TransactionType", 'C');
			$centinelClient->Add("TransactionId", $_SESSION['CHECKOUT']['CardinalTransactionId']);
			$centinelClient->Add("PAResPayload", $_REQUEST['PaRes']);

			$this->_testmode = $this->GetValue("testmode") == "YES";

			if ($this->_testmode) {
				$transactionURL = $this->_cardinalTestTransactionURL;
			}
			else {
				$transactionURL = $this->_cardinalLiveTransactionURL;
			}

			$centinelClient->sendHTTP($transactionURL, "30", "30");


			if($centinelClient->getValue("ErrorNo") == '0') {
				$PAResStatus = $centinelClient->getValue("PAResStatus");
				$SignatureVerification = $centinelClient->getValue("SignatureVerification");

				//if cardholder is authticated successfully
				if(($PAResStatus == 'Y' || $PAResStatus == 'A') && $SignatureVerification =='Y') {

					$DPFields = array (
						'AUTHSTATUS3DS'	=> $centinelClient->getValue("PAResStatus"),
						'MPIVENDOR3DS'	=> $_SESSION['CHECKOUT']['CardinalEnrolled'],
						'CAVV'			=> $centinelClient->getValue("Cavv"),
						'ECI'			=> $centinelClient->getValue("EciFlag"),
						'XID'			=> $centinelClient->getValue("Xid"),
					);


					if($this->_doDirectPayment($_SESSION['CHECKOUT']['CardDetails'], $DPFields)) {
						return ORDER_STATUS_AWAITING_FULFILLMENT;
					} else {
						return ORDER_STATUS_DECLINED;
					}
				} else {
					$this->RedirectToOrderConfirmation(GetLang('UnauthorizedMessage'), true);
					exit;
				}
			} else {
				//redirect back to order confirmation page.
				$this->RedirectToOrderConfirmation($centinelClient->getValue("ErrorDesc"), true);
				exit;
			}
		}