2Checkout: неверный запрос — ошибка параметра

Я отправляю ниже данные.

array (size=7)
  'sellerId' => string '901252608' (length=9)
  'privateKey' => string '4A8093AA-6DC9-449B-BA7E-C9819ABB79D7' (length=36)
  'merchantOrderId' => string '12312' (length=5)
  'token' => string 'NTE0NTc5OTMtNWJmOC00YmE0LTkwN2YtNzg4MTNiN2QzNzI4' (length=48)
  'currency' => string 'USD' (length=3)
  'total' => string '10.00' (length=5)
  'billingAddr' => 
    array (size=6)
      'name' => string 'Joe Flagster' (length=12)
      'addrLine1' => string '123 Main Street' (length=15)
      'city' => string 'Townsville' (length=10)
      'state' => string 'Ohio' (length=4)
      'zipCode' => string '43206' (length=5)
      'country' => string 'USA' (length=3)

Я получаю ответ Неверный запрос - ошибка параметра

Почему я получаю ответ об ошибке


person Samar Haider    schedule 10.08.2014    source источник
comment
У вас есть какое-либо решение для этого ..?   -  person Jamal Abdul Nasir    schedule 17.02.2015
comment
@JamalAbdulNasir Да, но я забыл   -  person Samar Haider    schedule 18.02.2015
comment
@JamalAbdulNasir Вы нашли решение?   -  person Beyers    schedule 20.06.2015


Ответы (3)


Ответ на этот вопрос, а также полное руководство для успешного выполнения вашего первого 2checkout. Загрузить файлы библиотеки 2checkout с github

<!DOCTYPE html>
<html lang="en">
<head>
    <title>Example Form</title>
    <script type="text/javascript" src="https://www.2checkout.com/checkout/api/2co.min.js"></script>
    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
</head>
<body>
    <form id="myCCForm" action="" method="post">
        <input name="token" type="hidden" value="" />
        <input id="ccNo" type="text" value="4000000000000002" autocomplete="off" required />
        <input id="expMonth" type="text" size="2" required value="12"/>
        <input id="expYear" type="text" size="4" required value="2016"/>
        <input id="cvv" type="text" value="123" autocomplete="off" required />
        <input type="submit" value="Submit Payment" />
    </form>
<script>
var successCallback = function(data) {
    var myForm = document.getElementById('myCCForm');
    myForm.token.value = data.response.token.token;
    myForm.submit();
};

var errorCallback = function(data) {
    if (data.errorCode === 200);
    else alert(data.errorMsg);
};

var tokenRequest = function() {
    var args = {
        sellerId: "901294338",
        publishableKey: "D0E54E96-FBB9-4A9C-98F0-81359D3FE574",
        ccNo: $("#ccNo").val(),
        cvv: $("#cvv").val(),
        expMonth: $("#expMonth").val(),
        expYear: $("#expYear").val()
    };
    TCO.requestToken(successCallback, errorCallback, args);
};

$(function() {
    TCO.loadPubKey('sandbox');
    $("#myCCForm").submit(function(e) {
        tokenRequest();
        return false;
    });
});

</script>
</body>
</html>
<?php
if(isset($_POST['token'])){
    require_once("lib/Twocheckout.php");
    Twocheckout::privateKey('7EF672B0-9F5E-499E-B4AE-6CBEC67277E1');
    Twocheckout::sellerId('901294338');
    Twocheckout::verifySSL(false);  // this is set to true by default
    Twocheckout::sandbox(true);
    Twocheckout::format('json');
    try {
        $charge = Twocheckout_Charge::auth(array(
            "sellerId" => "901294338",
            "merchantOrderId" => "123",
            "token" => $_POST['token'],
            "currency" => 'USD',
            "total" => '10.00',
            "billingAddr" => array(
                "name" => 'Testing Tester',
                "addrLine1" => '123 Test St',
                "city" => 'Columbus',
                "state" => 'OH',
                "zipCode" => '43123',
                "country" => 'USA',
                "email" => '[email protected]',
                "phoneNumber" => '555-555-5555'
            ),
            "shippingAddr" => array(
                "name" => 'Testing Tester',
                "addrLine1" => '123 Test St',
                "city" => 'Columbus',
                "state" => 'OH',
                "zipCode" => '43123',
                "country" => 'USA',
                "email" => '[email protected]',
                "phoneNumber" => '555-555-5555'
            )
        ));
        echo '<pre>';print_r(json_decode($charge));echo'</pre>';
    } catch (Twocheckout_Error $e) {echo $e->getMessage();}
}
?>

Вам нужно заменить YOUR_SELLER_ID, YOUR_PUBLIC_KEY и YOUR_PRIVATE_KEY на свои. Также замените sandbox на production, если это производство, else keep sandbox

person Wasim A.    schedule 19.10.2015

Вы устанавливаете открытый ключ после загрузки страницы? Потому что у меня была такая же проблема, но это было потому, что я забыл установить открытый ключ в переменной TCO.

Вы должны установить открытый ключ, попробуйте этот код:

TCO.loadPubKey('sandbox', function() {  // for sandbox environment
  publishableKey = //your public key
});

Не забудьте поместить эту функцию в jQuery(function($), потому что twocheckout.js должен быть загружен, когда вы пытаетесь получить доступ к переменной TCO.

person sebaMelgar    schedule 08.10.2015

Ошибка Bad request - parameter error возникает, когда 2checkout блокирует вашу учетную запись. Пожалуйста, проверьте и убедитесь, что у вас есть разрешение на продажу 2Checout с одобренной учетной записью.

person Ghayel    schedule 04.05.2016