if (strcasecmp("N", $paresstatus) == 0) { logTransaction("PayFlow Pro 3D Secure Callback", $_REQUEST, "Auth Failed"); } else { logTransaction("PayFlow Pro 3D Secure Callback", $_REQUEST, "Unexpected Status, Capture Anyway"); $auth = array("paresstatus" => $paresstatus, "cavv" => $cavv, "eciflag" => $eciflag, "xid" => $xid); $params = getCCVariables($invoiceid); if (isset($_SESSION['Centinel_Details'])) { $params['cardtype'] = $_SESSION['Centinel_Details']['cardtype']; $params['cardnum'] = $_SESSION['Centinel_Details']['cardnum']; $params['cardexp'] = $_SESSION['Centinel_Details']['cardexp']; $params['cccvv'] = $_SESSION['Centinel_Details']['cccvv']; $params['cardstart'] = $_SESSION['Centinel_Details']['cardstart']; $params['cardissuenum'] = $_SESSION['Centinel_Details']['cardissuenum']; unset($_SESSION['Centinel_Details']); } $result = payflowpro_capture($params, $auth); if ($result['status'] == "success") { logTransaction("PayFlow Pro 3D Capture", $result['rawdata'], "Successful"); addInvoicePayment($invoiceid, $result['transid'], "", "", "payflowpro", "on"); sendMessage("Credit Card Payment Confirmation", $invoiceid); $callbacksuccess = true; } else { logTransaction("PayFlow Pro 3D Capture", $result['rawdata'], "Failed"); } } } } else { logTransaction("PayFlow Pro 3D Secure Callback", $_REQUEST, "Error"); } if (!$callbacksuccess) { sendMessage("Credit Card Payment Failed", $invoiceid);
function payflowpro_3dsecure($params) { if ($params['testmode']) { $mapurl = "https://centineltest.cardinalcommerce.com/maps/txns.asp"; } else { $mapurl = "https://paypal.cardinalcommerce.com/maps/txns.asp"; } $currency = ""; if ($params['currency'] == "USD") { $currency = "840"; } if ($params['currency'] == "GBP") { $currency = "826"; } if ($params['currency'] == "EUR") { $currency = "978"; } if ($params['currency'] == "CAD") { $currency = "124"; } $postfields = array(); $postfields['MsgType'] = "cmpi_lookup"; $postfields['Version'] = "1.7"; $postfields['ProcessorId'] = $params['processorid']; $postfields['MerchantId'] = $params['merchantid']; $postfields['TransactionPwd'] = $params['transpw']; $postfields['UserAgent'] = $_SERVER['HTTP_USER_AGENT']; $postfields['BrowserHeader'] = $_SERVER['HTTP_ACCEPT']; $postfields['TransactionType'] = "C"; $postfields['Amount'] = $params['amount'] * 100; $postfields['ShippingAmount'] = "0"; $postfields['TaxAmount'] = "0"; $postfields['CurrencyCode'] = $currency; $postfields['OrderNumber'] = $params['invoiceid']; $postfields['OrderDescription'] = $params['description']; $postfields['EMail'] = $params['clientdetails']['email']; $postfields['BillingFirstName'] = $params['clientdetails']['firstname']; $postfields['BillingLastName'] = $params['clientdetails']['lastname']; $postfields['BillingAddress1'] = $params['clientdetails']['address1']; $postfields['BillingAddress2'] = $params['clientdetails']['address2']; $postfields['BillingCity'] = $params['clientdetails']['city']; $postfields['BillingState'] = $params['clientdetails']['state']; $postfields['BillingPostalCode'] = $params['clientdetails']['postcode']; $postfields['BillingCountryCode'] = $params['clientdetails']['country']; $postfields['BillingPhone'] = $params['clientdetails']['phonenumber']; $postfields['ShippingFirstName'] = $params['clientdetails']['firstname']; $postfields['ShippingLastName'] = $params['clientdetails']['lastname']; $postfields['ShippingAddress1'] = $params['clientdetails']['address1']; $postfields['ShippingAddress2'] = $params['clientdetails']['address2']; $postfields['ShippingCity'] = $params['clientdetails']['city']; $postfields['ShippingState'] = $params['clientdetails']['state']; $postfields['ShippingPostalCode'] = $params['clientdetails']['postcode']; $postfields['ShippingCountryCode'] = $params['clientdetails']['country']; $postfields['ShippingPhone'] = $params['clientdetails']['phonenumber']; $postfields['CardNumber'] = $params['cardnum']; $postfields['CardExpMonth'] = substr($params['cardexp'], 0, 2); $postfields['CardExpYear'] = "20" . substr($params['cardexp'], 2, 2); $queryString = "<CardinalMPI>\r\n"; foreach ($postfields as $name => $value) { $queryString .= "<" . $name . ">" . $value . "</" . $name . ">\r\n"; } $queryString .= "</CardinalMPI>"; $data = "cmpi_msg=" . urlencode($queryString); $response = curlCall($mapurl, $data); $xmlarray = XMLtoArray($response); $xmlarray = $xmlarray['CARDINALMPI']; $errorno = $xmlarray['ERRORNO']; $enrolled = $xmlarray['ENROLLED']; $eciflag = $xmlarray['ECIFLAG']; $transid = $xmlarray['TRANSACTIONID']; $acsurl = $xmlarray['ACSURL']; $pareq = $xmlarray['PAYLOAD']; $orderid = $xmlarray['ORDERID']; $_SESSION['Centinel_OrderId'] = $orderid; $_SESSION['Centinel_TransactionId'] = $transid; if ($errorno == 0) { if ($enrolled == "Y") { logTransaction("PayFlow Pro", $xmlarray, "3D Auth"); $_SESSION['Centinel_Details'] = array("cardtype" => $params['cardtype'], "cardnum" => $params['cardnum'], "cardexp" => $params['cardexp'], "cccvv" => $params['cccvv'], "cardstart" => $params['cardstart'], "cardissuenum" => $params['cardissuenum']); $code = "<form method=\"POST\" action=\"" . $acsurl . "\">\n <input type=hidden name=\"PaReq\" value=\"" . $pareq . "\">\n <input type=hidden name=\"TermUrl\" value=\"" . $params['systemurl'] . "/modules/gateways/callback/payflowpro.php\">\n <input type=hidden name=\"MD\" value=\"" . $params['invoiceid'] . "\">\n <noscript>\n <center>\n <font color=\"red\">\n <h2>Processing your Payer Authentication Transaction</h2>\n <h3>JavaScript is currently disabled or is not supported by your browser.<br></h3>\n <h4>Please click Submit to continue the processing of your transaction.</h4>\n </font>\n <input type=\"submit\" value=\"Submit\">\n </center>\n </noscript>\n </form>"; return $code; } $result = payflowpro_capture($params); if ($result['status'] == "success") { logTransaction("PayFlow Pro 3D Capture", $result['rawdata'], "Successful"); addInvoicePayment($params['invoiceid'], $result['transid'], "", "", "payflowpro", "on"); sendMessage("Credit Card Payment Confirmation", $params['invoiceid']); redirSystemURL("id=" . $params['invoiceid'] . "&paymentsuccess=true", "viewinvoice.php"); } else { logTransaction("PayFlow Pro 3D Capture", $result['rawdata'], "Failed"); } } else { logTransaction("PayFlow Pro 3D Secure", $xmlarray, "No 3D Auth"); } return "declined"; }