(13) The merchant login ID or password is invalid or the account is inactive.(usig Aim method for authorize.net)

StackOverflow https://stackoverflow.com/questions/23160926

Question

So when i am defining action as payment.php all working fine but as soon as i define action post_url its giving me this error. So please assist me. all the log in credential for test account is ok and checked.

here is my check out.php form action

<?php  include_once('payment.php');  ?> 
<form  method="post" action='<?php echo $post_url; ?>'>

here is my payment.php file contain all the information about url and key values

<?php


        //log in credentials and key values 

        $LOGINKEY = '24Xd2WdY';// x_login


        $TRANSKEY = 'xxxx';//x_tran_key

        $firstName =urlencode( $_POST['first_name']);

        $lastName =urlencode($_POST['last_name']);

        $creditCardType =urlencode( $_POST['card_type']);

        $creditCardNumber = urlencode($_POST['cardnumber']);

        $expDateMonth =urlencode( $_POST['cardmonth']); 

        // Month must be padded with leading zero
        $padDateMonth = str_pad($expDateMonth, 2, '0', STR_PAD_LEFT);

        $expDateYear =urlencode( $_POST['cardyear']);

        $cvv2Number = urlencode($_POST['cardsecuritycode']);

        $address1 = urlencode($_POST['street1']);

        $city = urlencode($_POST['city']);

        $state =urlencode( $_POST['state']);

        $zip = urlencode($_POST['zipcode']);

        $country = urlencode($_POST['country']);

        $company = urlencode($_POST['company']);

        $email = urlencode($_POST['email']);

        $phone = urlencode($_POST['phone']);

        $invoice_number=urlencode($_POST['order_id']);

        $amount = urlencode($_POST['amount_charged']);

        $currencyCode="USD";

        $paymentType="Sale";

        $date = $expDateMonth.$expDateYear;\


    $post_values = array(

        "x_login"       => "$LOGINKEY",

        "x_tran_key"        => "$TRANSKEY",

        "x_version"         => "3.1",
        "x_delim_data"      => "TRUE",
        "x_delim_char"      => "|",
        "x_relay_response"  => "FALSE",
        //"x_market_type"       => "2",
        "x_device_type"     => "1",
        "x_type"        => "AUTH_CAPTURE",
        "x_method"      => "CC",
        "x_card_num"        => $creditCardNumber,
        "x_invoice_num"     =>  $invoice_number,
        "x_exp_date"        => $date,
        "x_amount"      => $amount,
        //"x_description"   => "Sample Transaction",
        "x_first_name"      => $firstName,
        "x_last_name"       => $lastName,
        "x_address"     => $address1,
        "x_state"       => $state,
        "x_city"        =>$city,
        "x_country"     =>$country,
        "x_company"     =>$company,
        "x_email"       =>$email,
        "x_phone"       =>$phone,

        "x_response_format" => "1",
        "x_zip"         => $zip


        // Additional fields can be added here as outlined in the AIM integration
        // guide at: http://developer.authorize.net
    );

    //echo '<pre>'; echo 'Request values'; print_r($post_values);
    //comment the above line. i have given this just for testing purpose.

    $post_string = "";
    foreach( $post_values as $key => $value )$post_string .= "$key=" . urlencode( $value ) . "&";
    $post_string = rtrim($post_string,"& ");

    //for test mode use the followin url
    $post_url = "https://test.authorize.net/gateway/transact.dll";
    //for real accounts (even in test mode), please make sure that you are posting to 
    //$post_url = "https://secure.authorize.net/gateway/transact.dll"; 

    $request = curl_init($post_url); // initiate curl object
    curl_setopt($request, CURLOPT_HEADER, 0); // set to 0 to eliminate header info from response
    curl_setopt($request, CURLOPT_RETURNTRANSFER, 1); // Returns response data instead of TRUE(1)
    curl_setopt($request, CURLOPT_POSTFIELDS, $post_string); // use HTTP POST to send form data
    curl_setopt($request, CURLOPT_SSL_VERIFYPEER, FALSE); // uncomment this line if you get no gateway response.
    $post_response = curl_exec($request); // execute curl post and store results in $post_response
    // additional options may be required depending upon your server configuration
    // you can find documentation on curl options at http://www.php.net/curl_setopt
    curl_close ($request); // close curl object

    // This line takes the response and breaks it into an array using the specified delimiting character
    $response_array = explode($post_values["x_delim_char"],$post_response);


    //echo '<br><br> Response Array'; print_r($response_array);
    //remove this line. i have used this just print the response array

    if($response_array[0]==2||$response_array[0]==3) 
    {
        //success 
        echo '<b>Payment Failure</b>. <br>';
        echo '<b>Error String</b>: '.$response_array[3];


        echo '<br><br>Press back button to go back to the previous page';
    }
    else
    {
        $ptid = $response_array[6];
        $ptidmd5 = $response_array[7];
        $status=$response_array[0];


        echo "$ptid "."Payment Success";
        echo"$status";
    }
    if ($status==1) {

        require_once('Rescue_soap.php');
        $new_soap = new Rescuesoap();
        $new_soap->check_contacts($_REQUEST);
        }
?>

thanks for help

Was it helpful?

Solution

I Find solution here: https://support.authorize.net/authkb/index?page=content&id=A415

if in short describe the decision, it is likely that you are trying to send live data on the test certificate.

//for test mode use the followin url
$post_url = "https://test.authorize.net/gateway/transact.dll";
//for real accounts (even in test mode), please make sure that you are posting to 
//$post_url = "https://secure.authorize.net/gateway/transact.dll"; 

Change $post_url to "https://secure.authorize.net/gateway/transact.dll"

OTHER TIPS

As indicated, the error is because your API Login and Transaction Key are invalid. This may be due to using an API Key/Transaction key from a live production account with the sandbox, or visa versa. Since you posted your transaction key above, it is recommended you login and regenerate your transaction key again.

If you regenerate your Sandbox transaction key, you can test it working in the new API Reference console at http://developer.authorize.net/api/reference.

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