Question

I am currently trying to integrate with SecureNet. I read through the latest pdf (4.1.5) but it is still not clear to me how the request should be structured.

I keep getting:

Endpoint not found.

Can anyone provide production request examples with confidential fields XXX'd out?

Was it helpful?

Solution

Ah, the API team finally got back to me. Here it is. Hope it helps someone someday.

Request

POST https://certify.securenet.com/API/gateway.svc/webHttp/ProcessTransaction HTTP/1.1
User-Agent: Fiddler
Content-Type: application/xml; charset=utf-8
Host: certify.securenet.com
Content-Length: 1839

<?xml version="1.0" encoding="utf-8"?><TRANSACTION xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://gateway.securenet.com/API/Contracts">
<AMOUNT>11</AMOUNT>
<AUTHCODE></AUTHCODE>
<AUTO i:nil="true" />
<CARD>
<CARDCODE>996</CARDCODE>
<CARDNUMBER>4012000033330026</CARDNUMBER>
<EXPDATE>0414</EXPDATE>
<KSN i:nil="true" />
<PINBLOCK>PIN Block</PINBLOCK>
<TRACKDATA i:nil="true" /></CARD>
<CASHBACK_AMOUNT>0</CASHBACK_AMOUNT>
<CHECK i:nil="true" />
<CODE>0000</CODE>
<CUSTOMERID i:nil="true"/>
<CUSTOMERIP></CUSTOMERIP>
<CUSTOMER_BILL>
<ADDRESS></ADDRESS>
<CITY></CITY>
<COMPANY></COMPANY>
<COUNTRY></COUNTRY>
<EMAIL></EMAIL>
<EMAILRECEIPT>FALSE</EMAILRECEIPT>
<FIRSTNAME></FIRSTNAME>
<LASTNAME></LASTNAME>
<PHONE></PHONE>
<STATE></STATE>
<ZIP></ZIP>
</CUSTOMER_BILL>
<CUSTOMER_SHIP i:nil="true" />
<DCI>0</DCI>
<DEVICECODE></DEVICECODE>
<ENCRYPTION i:nil="true" />
<ENTRYSOURCE></ENTRYSOURCE>
<HOTEL i:nil="true" />
<INDUSTRYSPECIFICDATA>0</INDUSTRYSPECIFICDATA>
<INSTALLMENT_SEQUENCENUM>0</INSTALLMENT_SEQUENCENUM>
<INVOICEDESC></INVOICEDESC>
<INVOICENUM i:nil="true" />
<LEVEL2 i:nil="true" />
<LEVEL3 i:nil="true" />
<MARKETSPECIFICDATA i:nil="true"/>
<MERCHANT_KEY>
<GROUPID>0</GROUPID>
<SECUREKEY>lbGXSJZsV9Oy</SECUREKEY>
<SECURENETID>7000000</SECURENETID>
</MERCHANT_KEY>
<METHOD>CC</METHOD>
<MPI i:nil="true" />
<NOTE></NOTE>
<ORDERID>12311601</ORDERID>
<OVERRIDE_FROM>0</OVERRIDE_FROM>
<PAYMENTID i:nil="true" />
<PETROLEUM i:nil="true" />
<PRODUCTS i:nil="true" />
<REF_TRANSID>0</REF_TRANSID>
<RETAIL_LANENUM>0</RETAIL_LANENUM>
<SECONDARY_MERCHANT_KEY i:nil="true" />
<SERVICE i:nil="true" />
<TEST>FALSE</TEST>
<TOTAL_INSTALLMENTCOUNT>0</TOTAL_INSTALLMENTCOUNT>
<TRANSACTION_SERVICE>0</TRANSACTION_SERVICE>
<USERDEFINED i:nil="true" />
</TRANSACTION>

Response

HTTP/1.1 200 OK
Date: Fri, 08 Mar 2013 23:48:37 GMT
X-Powered-By: ASP.NET
X-AspNet-Version: 2.0.50727
Cache-Control: private
Content-Type: application/xml; charset=utf-8
Content-Length: 1763
Set-Cookie: TS6d10c9=d81f0c76c1ab996b6024b4b7340467c76c45ae1650897225513a7909; Path=/
Set-Cookie: TS6d10c9_28=ab9f901af259d97913f9b001c3f710f66c45ae1650897225000000000000000000513a7908522b1347a8bb858f; Path=/

<GATEWAYRESPONSE xmlns="http://gateway.securenet.com/API/Contracts" xmlns:i="http://www.w3.org/2001/XMLSchema-instance"><ABRESPONSE i:nil="true"/><TRANSACTIONRESPONSE><RESPONSE_CODE>1</RESPONSE_CODE><RESPONSE_REASON_CODE>0000</RESPONSE_REASON_CODE><RESPONSE_REASON_TEXT>Approved</RESPONSE_REASON_TEXT><RESPONSE_SUBCODE/><ADDITIONALAMOUNT>0</ADDITIONALAMOUNT><ADDITIONALDATA1/><ADDITIONALDATA2/><ADDITIONALDATA3/><ADDITIONALDATA4/><ADDITIONALDATA5/><AUTHCODE>CRO3B4</AUTHCODE><AUTHORIZEDAMOUNT>11.00</AUTHORIZEDAMOUNT><AVS_RESULT_CODE>Y</AVS_RESULT_CODE><BANK_ACCOUNTNAME/><BANK_ACCOUNTTYPE/><BATCHID>0</BATCHID><CARDHOLDER_FIRSTNAME/><CARDHOLDER_LASTNAME/><CARDLEVEL_RESULTS/><CARDTYPE>VI</CARDTYPE><CARD_CODE_RESPONSE_CODE>M</CARD_CODE_RESPONSE_CODE><CASHBACK_AMOUNT>0</CASHBACK_AMOUNT><CAVV_RESPONSE_CODE/><CHECKNUM i:nil="true"/><CODE>0000</CODE><CUSTOMERID/><CUSTOMER_BILL><ADDRESS/><CITY/><COMPANY/><COUNTRY/><EMAIL/><EMAILRECEIPT>FALSE</EMAILRECEIPT><FIRSTNAME/><LASTNAME/><PHONE/><STATE/><ZIP/></CUSTOMER_BILL><EXPIRYDATE>0414</EXPIRYDATE><GRATUITY>0</GRATUITY><INDUSTRYSPECIFICDATA>P</INDUSTRYSPECIFICDATA><LAST4DIGITS>0026</LAST4DIGITS><LEVEL2_VALID>FALSE</LEVEL2_VALID><LEVEL3_VALID>FALSE</LEVEL3_VALID><MARKETSPECIFICDATA/><METHOD>CC</METHOD><NETWORKCODE/><NETWORKID/><ORDERID>12311601</ORDERID><PAYMENTID/><RETREFERENCENUM/><SECURENETID>7000000</SECURENETID><SETTLEMENTAMOUNT>11.00</SETTLEMENTAMOUNT><SETTLEMENTDATETIME>03082013184837</SETTLEMENTDATETIME><SYSTEM_TRACENUM/><TRACKTYPE>0</TRACKTYPE><TRANSACTIONAMOUNT>11.00</TRANSACTIONAMOUNT><TRANSACTIONDATETIME>03082013184837</TRANSACTIONDATETIME><TRANSACTIONID>111177310</TRANSACTIONID></TRANSACTIONRESPONSE><VAULTACCOUNTRESPONSE i:nil="true"/><VAULTCUSTOMERRESPONSE i:nil="true"/></GATEWAYRESPONSE>

OTHER TIPS

This post was really helpful to me as it showed me some fields that weren't initially visible. If you don't want to use SecureNet's CodeIgniter classes, I put together a simple PHP/SOAP-based example for doing refund/capture/void. Adapting this to anything else shouldn't be too difficult.

//Certifying?
$certify = 1;

//Build Array
$arg = array(
    "MERCHANT_KEY" => array(
        "GROUPID" => 0,
        "SECUREKEY" => "XXXXXXXXX",
        "SECURENETID" => "XXXXXXXXX",
    ),
    "CARD" => array(
        "CARDNUMBER" => $card_number,
    ),
    "REF_TRANSID" => $processor_transaction_id,
    "AMOUNT" => $amount,
    "METHOD" => "CC",
    "DCI" => 0,
    "INSTALLMENT_SEQUENCENUM" => 0,
    "GROUPID" => 0,
    "OVERRIDE_FROM" => 0,
    "RETAIL_LANENUM" => 0,
    "TOTAL_INSTALLMENTCOUNT" => 0,
    "TRANSACTION_SERVICE" => 0,
    "TEST" => $testing ? "FALSE" : "TRUE",
);

//Refund
if ($action == "refund") {
    $arg['CODE'] = "0500";

//Capture
} elseif ($action == "capture") {
    $arg['CODE'] = "0200";

//Partial Void
} elseif ($action == "void") {
    $arg['CODE'] = "0401";
}

//Certify or Production URL's
$base_url = "http://gateway.securenet.com/api/gateway.svc?wsdl"; //not for sure on these urls
$soap_url = "https://gateway.securenet.com/api/gateway.svc/soap"; //not for sure on these urls
if ($certify) {
    $base_url = "http://certify.securenet.com/api/gateway.svc?wsdl";
    $soap_url = "https://certify.securenet.com/api/gateway.svc/soap";
}

//Connect
$client = new \SoapClient($base_url, array('trace' => 1, 'exceptions' => true));
$client->__setLocation($soap_url);

//Successful!
try {
    $result = $client->ProcessTransaction(array("TRANSACTION" => $arg));

    if ($certify) {
        echo 'REQUEST: ' . htmlentities($client->__getLastRequest()) . "<br><br>";
        echo 'RESPONSE: ' . htmlentities($client->__getLastResponse());
    }

    //1 = approve, 2 = declined, 3 = error
    $response_code = $result->ProcessTransactionResult->TRANSACTIONRESPONSE->RESPONSE_CODE;
    $response_text = $result->ProcessTransactionResult->TRANSACTIONRESPONSE->RESPONSE_REASON_TEXT;

//There Was An Error
} catch (\Exception $e) {

    if ($certify) {
        echo 'REQUEST: ' . htmlentities($client->__getLastRequest()) . "<br><br>";
        echo 'RESPONSE: ' . htmlentities($client->__getLastResponse());
    }

    echo "ERROR: " . $e->getMessage() . "<br><br>";
    die;

}

Something else that was helpful were these docs which don't seem to be available at SecureNet anymore. http://www.scribd.com/doc/202100111/SecureNet-Docs

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top