function optimalpayments_capture($params) { global $remote_ip; $url = "https://webservices.optimalpayments.com/creditcardWS/CreditCardServlet/v1"; if ($params['testmode']) { $url = "https://webservices.test.optimalpayments.com/creditcardWS/CreditCardServlet/v1"; } $cardtype = optimalpayments_cardtype($params['cardtype']); if ($params['country'] == "US") { $state = "<state>" . $params['clientdetails']['state'] . "</state>"; } else { $state = "<region>" . $params['clientdetails']['state'] . "</region>"; } $xml = "<ccAuthRequestV1 xmlns=\"http://www.optimalpayments.com/creditcard/xmlschema/v1\"\nxmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\nxsi:schemaLocation=\"http://www.optimalpayments.com/creditcard/xmlschema/v1\">\n<merchantAccount>\n<accountNum>" . $params['accountnumber'] . "</accountNum>\n<storeID>" . $params['merchantid'] . "</storeID>\n<storePwd>" . $params['merchantpw'] . "</storePwd>\n</merchantAccount>\n<merchantRefNum>" . $params['invoiceid'] . "</merchantRefNum>\n<amount>" . $params['amount'] . "</amount>\n<card>\n<cardNum>" . $params['cardnum'] . "</cardNum>\n<cardExpiry>\n<month>" . substr($params['cardexp'], 0, 2) . "</month>\n<year>20" . substr($params['cardexp'], 2, 2) . "</year>\n</cardExpiry>\n<cardType>" . $cardtype . "</cardType>\n"; if ($params['cccvv']) { $xml .= "<cvdIndicator>1</cvdIndicator>\n<cvd>" . $params['cccvv'] . "</cvd>\n"; } else { $xml .= "<cvdIndicator>0</cvdIndicator>\n"; } $xml .= "</card>\n<billingDetails>\n<cardPayMethod>WEB</cardPayMethod>\n<firstName>" . $params['clientdetails']['firstname'] . "</firstName>\n<lastName>" . $params['clientdetails']['lastname'] . "</lastName>\n<street>" . $params['clientdetails']['address1'] . "</street>\n<city>" . $params['clientdetails']['city'] . "</city>\n" . $state . "\n<country>" . $params['clientdetails']['country'] . "</country>\n<zip>" . $params['clientdetails']['postcode'] . "</zip>\n<phone>" . $params['clientdetails']['phonenumber'] . "</phone>\n<email>" . $params['clientdetails']['email'] . "</email>\n</billingDetails>\n<recurring>\n<recurringIndicator>R</recurringIndicator>\n</recurring>\n<customerIP>" . $remote_ip . "</customerIP>\n</ccAuthRequestV1>"; $query_str = "txnMode=ccPurchase&txnRequest=" . urlencode($xml); $data = curlCall($url, $query_str); $xmldata = XMLtoArray($data); $xmldata = $xmldata['CCTXNRESPONSEV1']; if ($xmldata['CODE'] == "0") { return array("status" => "success", "transid" => $xmldata['txnNumber'], "rawdata" => $xmldata); } return array("status" => "declined", "rawdata" => $xmldata); }
$params = getCCVariables($invoiceid); $xml = "<ccAuthenticateRequestV1\nxmlns=\"http://www.optimalpayments.com/creditcard/xmlschema/v1\"\nxmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\nxsi:schemaLocation=\"http://www.optimalpayments.com/creditcard/xmlschema/v1\">\n<merchantAccount>\n<accountNum>" . $GATEWAY['accountnumber'] . "</accountNum>\n<storeID>" . $GATEWAY['merchantid'] . "</storeID>\n<storePwd>" . $GATEWAY['merchantpw'] . "</storePwd>\n</merchantAccount>\n<confirmationNumber>" . $_SESSION['optimalpaymentsconfirmationnumber'] . "</confirmationNumber>\n<paymentResponse>" . $pares . "</paymentResponse>\n</ccAuthenticateRequestV1>"; $url = "https://webservices.optimalpayments.com/creditcardWS/CreditCardServlet/v1"; if ($params['testmode']) { $url = "https://webservices.test.optimalpayments.com/creditcardWS/CreditCardServlet/v1"; } $query_str = "txnMode=ccTDSAuthenticate&txnRequest=" . urlencode($xml); $data = curlCall($url, $query_str); $xmldata = XMLtoArray($data); $xmldata = $xmldata['CCTXNRESPONSEV1']; $indicator = $xmldata['TDSAUTHENTICATERESPONSE']['STATUS']; $cavv = $xmldata['TDSAUTHENTICATERESPONSE']['CAVV']; $xid = $xmldata['TDSAUTHENTICATERESPONSE']['XID']; $eci = $xmldata['TDSAUTHENTICATERESPONSE']['ECI']; logTransaction("Optimal Payments 3D Callback", $data, "Authenticate Response"); $cardtype = optimalpayments_cardtype($params['cardtype']); $xml = "<ccAuthRequestV1 xmlns=\"http://www.optimalpayments.com/creditcard/xmlschema/v1\"\nxmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\nxsi:schemaLocation=\"http://www.optimalpayments.com/creditcard/xmlschema/v1\">\n<merchantAccount>\n<accountNum>" . $params['accountnumber'] . "</accountNum>\n<storeID>" . $params['merchantid'] . "</storeID>\n<storePwd>" . $params['merchantpw'] . "</storePwd>\n</merchantAccount>\n<merchantRefNum>" . $params['invoiceid'] . "</merchantRefNum>\n<amount>" . $params['amount'] . "</amount>\n<card>\n<cardNum>" . $params['cardnum'] . "</cardNum>\n<cardExpiry>\n<month>" . substr($params['cardexp'], 0, 2) . "</month>\n<year>20" . substr($params['cardexp'], 2, 2) . "</year>\n</cardExpiry>\n<cardType>" . $cardtype . "</cardType>\n</card>\n<authentication>\n<indicator>" . $indicator . "</indicator>\n<cavv>" . $cavv . "</cavv>\n<xid>" . $xid . "</xid>\n</authentication>\n<billingDetails>\n<cardPayMethod>WEB</cardPayMethod>\n<firstName>" . $params['clientdetails']['firstname'] . "</firstName>\n<lastName>" . $params['clientdetails']['lastname'] . "</lastName>\n<street>" . $params['clientdetails']['address1'] . "</street>\n<city>" . $params['clientdetails']['city'] . "</city>\n<region>" . $params['clientdetails']['state'] . "</region>\n<country>" . $params['clientdetails']['country'] . "</country>\n<zip>" . $params['clientdetails']['postcode'] . "</zip>\n<phone>" . $params['clientdetails']['phonenumber'] . "</phone>\n<email>" . $params['clientdetails']['email'] . "</email>\n</billingDetails>\n<recurringIndicator>R</recurringIndicator>\n<customerIP>" . $remote_ip . "</customerIP>\n<productType>M</productType>\n</ccAuthRequestV1>"; $query_str = "txnMode=ccPurchase&txnRequest=" . urlencode($xml); logTransaction("Optimal Payments 3D Callback", $query_str, "Payment Request"); $data = curlCall($url, $query_str); $xmldata = XMLtoArray($data); $xmldata = $xmldata['CCTXNRESPONSEV1']; if ($xmldata['CODE'] == "0") { addInvoicePayment($invoiceid, $transid, "", "", "optimalpayments", "on"); logTransaction("Optimal Payments 3D Callback", $data, "Approved"); sendMessage("Credit Card Payment Confirmation", $invoiceid); $callbacksuccess = true; } else { logTransaction("Optimal Payments 3D Callback", $data, "Declined"); sendMessage("Credit Card Payment Failed", $invoiceid); }