(13) 商户登录ID或密码无效或账户未激活。(authorize.net的usig Aim方法)

Posted

技术标签:

【中文标题】(13) 商户登录ID或密码无效或账户未激活。(authorize.net的usig Aim方法)【英文标题】:(13) The merchant login ID or password is invalid or the account is inactive.(usig Aim method for authorize.net) 【发布时间】:2014-06-03 08:45:30 【问题描述】:

因此,当我将 action 定义为 payment.php 时,一切正常,但一旦我定义 action post_url,它就会给我这个错误。所以请帮助我。测试帐户的所有登录凭据均正常并已检查。

这是我的 check out.php 表单操作

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

这是我的 payment.php 文件,其中包含有关 url 和键值的所有信息

<?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);
        
?>

感谢帮助

【问题讨论】:

我在 authorize.net 的支持论坛中读到“如果您使用 PHP 将您的网站与高级集成方法 (AIM) 集成,请注意网关 URL 列出了两次——一次在cURL 配置,并再次在代码主体中。在代码的 cURL 部分使用测试网关 URL 将创建错误 13,因为 cURL 将连接到不正确的服务器“任何与我的问题相关的事情 【参考方案1】:

如前所述,错误是因为您的 API 登录和交易密钥无效。这可能是由于在沙盒中使用了来自实时生产帐户的 API 密钥/交易密钥,反之亦然。由于您在上面发布了交易密钥,建议您再次登录并重新生成交易密钥。

如果您重新生成沙盒事务密钥,您可以在新的 API 参考控制台http://developer.authorize.net/api/reference 中对其进行测试。

【讨论】:

嗨,正如我所说的,所有的钥匙都可以,并且经过双重检查。当我采取行动“payment.php”而不是发布网址时,所有交易都成功并获得响应代码,但问题是付款没有登陆到安全支付网关或提到的发布网址,这是任何人的 SOP付款。【参考方案2】:

我在这里找到解决方案: https://support.authorize.net/authkb/index?page=content&id=A415

如果简而言之,您可能会尝试在测试证书上发送实时数据。

//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"; 

将 $post_url 更改为“https://secure.authorize.net/gateway/transact.dll”

【讨论】:

我已将代码 return ($this-&gt;_sandbox ? self::SANDBOX_URL : self::LIVE_URL ); 更改为 return ($this-&gt;_sandbox ? self::LIVE_URL : self::SANDBOX_URL);,它对我有用。这是获取实时网址的正确方法还是我应该做其他事情? @MusaddiqKhan,我认为您需要使用您的第一次返回并将 $this->_sandbox 配置为 true/false 以将数据发送到正确的 url 我认为它不适用于沙盒帐户,因为它总是返回实时网址。

以上是关于(13) 商户登录ID或密码无效或账户未激活。(authorize.net的usig Aim方法)的主要内容,如果未能解决你的问题,请参考以下文章

epic对不起您使用的凭据无效啥意思 使用的凭据无效的解决方法

支付宝申请接入APP支付教程

Maven实战05_背景案例学Maven模块化

我的WIN7电脑改账户名时出了问题(账户名无效),求高手解答。急啊

博客作业4

远程桌面证书或相关链无效怎么破