API-вызов 2checkout для создания продажи

Я использую API 2checkout для продажи товаров на своем веб-сайте. Следовательно, я вызываю API 2checkout для создания продажи, где я могу вызвать API с общей суммой для одного продукта. Это выглядит как поток:

try {
    $charge = Twocheckout_Charge::auth(array(
        "merchantOrderId" => "123",
        "token"      => $_POST['token'],
        "currency"   => 'USD',
        "total"      => $first_bill['amount'],
        "billingAddr" => array(
            "name" => $_POST['b_name'],
            "addrLine1" => $_POST['b_address'],
            "city" => 'Columbus',
            "state" => 'OH',
            "zipCode" => '43123',
            "country" => $_POST['b_country'],
            "email" => $_POST['b_emaill'],
            "phoneNumber" => $_POST['b_phone']
            ),
        "shippingAddr" => array(
            "name" => 'Testing Tester',
            "addrLine1" => '123 Test St',
            "city" => 'Columbus',
            "state" => 'enter code hereOH',
            "zipCode" => '43123',
            "country" => 'USA',
            "email" => '[email protected]',
            "phoneNumber" => '555-555-5555'
            )
        ));
    if ($charge['response']['responseCode'] == 'APPROVED') {

        echo $response;exit;
        // echo "Thanks for your Order!";
        // echo "<h3>Return Parameters:</h3>";
        // echo "<pre>";
        // print_r($charge);
        // echo "</pre>";
    }
    else
    {
        $this->Registrationmodel->delete_account($accounts_id);
        echo $charge['response']['responseCode'];
        exit;
    }
} 
catch (Twocheckout_Error $e) 
{
    echo $e->getMessage();
    exit;
}

}

поэтому, когда я пытаюсь установить отдельные позиции, например, следующее:

try {
    $charge = Twocheckout_Charge::auth(array(
        "merchantOrderId" => "123",
        "token"      => $_POST['token'],
        "currency"   => 'USD',
        //"total"      => $first_bill['amount'],
        "billingAddr" => array(
            "name" => $_POST['b_name'],
            "addrLine1" => $_POST['b_address'],
            "city" => 'Columbus',
            "state" => 'OH',
            "zipCode" => '43123',
            "country" => $_POST['b_country'],
            "email" => $_POST['b_emaill'],
            "phoneNumber" => $_POST['b_phone']
            ),
        "LineItem" => array(
            "duration" => 'Forever',
            "price" => '10',
            "productId" =>'1235',
            "quantity" => '1',
            "recurrence" => '1 Month',
            "tangible" => 'N',
            "type"=>'product'
            ),
        "shippingAddr" => array(
            "name" => 'Testing Tester',
            "addrLine1" => '123 Test St',
            "city" => 'Columbus',
            "state" => 'OH',
            "zipCode" => '43123',
            "country" => 'USA',
            "email" => '[email protected]',
            "phoneNumber" => '555-555-5555'
            )
        ));
    if ($charge['response']['responseCode'] == 'APPROVED') {
        $response = $this->return_information($charge['response']['orderNumber']);
        echo $response;exit;
        // echo "Thanks for your Order!";
        // echo "<h3>Return Parameters:</h3>";
        // echo "<pre>";
        // print_r($charge);
        // echo "</pre>";
    }
    else
    {
        $this->Registrationmodel->delete_account($accounts_id);
        echo $charge['response']['responseCode'];
        exit;
    }
} 
catch (Twocheckout_Error $e) 
{
    $this->Registrationmodel->delete_account($accounts_id);
    echo $e->getMessage();
    exit;
}

}

Это дает мне ошибку параметра. Пожалуйста, кто-нибудь может помочь? как установить позиции с помощью вызова API?


person Rasel Ahmed    schedule 19.07.2016    source источник


Ответы (1)


В вашем массиве строк отсутствует параметр name, который является обязательным параметром. Полный список необходимых параметров можно найти здесь .

Кроме того, ваш массив доставки не нужен, так как ваш продукт нематериален, поэтому вы можете удалить массив доставки.

Вот рабочий пример, который я использую:

try {
    $charge = Twocheckout_Charge::auth(array(
    "sellerId" => "xxxxxxxxx",
    "li_0_merchant_order_id" => "1",
    "type" => "product",
    "token"      => $_POST['token'],
    "currency"   => "USD",
  //  "total" => "1.00",           //Only use when lineitems are not passed in

       "lineItems" => array(
           "0" => array(
                "name" => $_POST['name'],
                "price" => $_POST['price'],
                "quantity" => $_POST['quantity'],
                "startupFee" => $_POST['startupFee'],
                "tangible" => $_POST['tangible']
                )
             ),
        "billingAddr" => array(
            "name" => $_POST['customer'],
            "addrLine1" => $_POST['addrLine1'],
            "city" => $_POST['city'],
            "state" => $_POST['state'],
            "zipCode" => $_POST['zipCode'],
            "country" => $_POST['country'],
            "email" => $_POST['email'],
            "phoneNumber" => ''
            )
           ));

    if ($charge['response']['responseCode'] == 'APPROVED') {

Чтобы лучше соответствовать вашему приложению, добавьте ключи «длительность» и «повторение» и их соответствующие значения в массив lineItem в приведенном выше коде. Приведенный мной пример содержит все необходимые параметры для нематериальной продажи.

person wtrmLn    schedule 19.07.2016