Я пытаюсь создать тестовую метку из Shippo, однако получаю ошибку оценки

Однако я получаю эту ошибку, что я не знаю, что это значит:

Фатальная ошибка: Uncaught Shippo_InvalidRequestError: {«rate»: [«Это поле обязательно для заполнения.»]} В /home/****/shippo/lib/Shippo/ApiRequestor.php:100 Трассировка стека: # 0 / home / * *** / shippo / lib / Shippo / ApiRequestor.php (154): Shippo_ApiRequestor-> handleApiError (‘{«rate»: [«This …’, 400, Array) # 1 / home / **** / shippo / lib / Shippo / ApiRequestor.php (59): Shippo_ApiRequestor -> _ interpretResponse (‘{«rate»: [«This …», 400) # 2 / home / **** / shippo / lib / Shippo / ApiResource.php (107): Shippo_ApiRequestor-> request (‘post’, ‘/ v1 /action …’, Array) # 3 /home/****/shippo/lib/Shippo/Transaction.php(14) : Shippo_ApiResource :: _ scopedCreate (‘Shippo_Transact …’, Array, NULL) # 4 /home/****/public_html/.ship/print/done/index.php(65): Shippo_Transaction :: create (Array) # 5 {main} добавлено в /home/****/shippo/lib/Shippo/ApiRequestor.php в строке 100

Я также получил похожее сообщение о поле посылки, поэтому я изменил в посылках сценария PHP на parcel. Это пример кода из https://github.com/goshippo/shippo-php-client/blob/master/examples/basic-shipment.php

Мой код:

<?php
require_once('****' . 'lib/Shippo.php');

Shippo::setApiKey('****');

// Example from_address array
// The complete refence for the address object is available here: https://goshippo.com/docs/reference#addresses
$from_address = array(
'name' => 'Mr Hippo',
'company' => 'Shippo',
'street1' => '215 Clayton St.',
'city' => 'San Francisco',
'state' => 'CA',
'zip' => '94117',
'country' => 'US',
'phone' => '+1 555 341 9393',
'email' => '[email protected]',
);

// Example to_address array
// The complete refence for the address object is available here: https://goshippo.com/docs/reference#addresses
$to_address = array(
'name' => 'Ms Hippo',
'company' => 'San Diego Zoo',
'street1' => '2920 Zoo Drive',
'city' => 'San Diego',
'state' => 'CA',
'zip' => '92101',
'country' => 'US',
'phone' => '+1 555 341 9393',
'email' => '[email protected]',
);

// Parcel information array
// The complete reference for parcel object is here: https://goshippo.com/docs/reference#parcels
$parcel = array(
'length'=> '5',
'width'=> '5',
'height'=> '5',
'distance_unit'=> 'in',
'weight'=> '2',
'mass_unit'=> 'lb',
);

// Example shipment object
// For complete reference to the shipment object: https://goshippo.com/docs/reference#shipments
// This object has async=false, indicating that the function will wait until all rates are generated before it returns.
// By default, Shippo handles responses asynchronously. However this will be depreciated soon. Learn more: https://goshippo.com/docs/async
$shipment = Shippo_Shipment::create(
array(
'address_from'=> $from_address,
'address_to'=> $to_address,
'parcel'=> array($parcel),
'async'=> false,
));

// Rates are stored in the `rates` array
// The details on the returned object are here: https://goshippo.com/docs/reference#rates
// Get the first rate in the rates results for demo purposes.
$rate = $shipment['rates'][0];

// Purchase the desired rate with a transaction request
// Set async=false, indicating that the function will wait until the carrier returns a shipping label before it returns
$transaction = Shippo_Transaction::create(array(
'rate'=> $rate['object_id'],
'async'=> false,
));

// Print the shipping label from label_url
// Get the tracking number from tracking_number
if ($transaction['status'] == 'SUCCESS'){
echo "--> " . "Shipping label url: " . $transaction['label_url'] . "\n";
echo "--> " . "Shipping tracking number: " . $transaction['tracking_number'] . "\n";
} else {
echo "Transaction failed with messages:" . "\n";
foreach ($transaction['messages'] as $message) {
echo "--> " . $message . "\n";
}
}
// For more tutorals of address validation, tracking, returns, refunds, and other functionality, check out our
// complete documentation: https://goshippo.com/docs/
?>

-1

Решение

Хотя я не уверен на 100%, вы, вероятно, используете последнюю версию оболочки PHP, но у вас нет последней версии API Shippo.

Я бы порекомендовал пойти в Шиппо изменений и просмотрите изменения и решите, хотите ли вы обновиться или нет.

Вероятная причина того, что ваш код дает сбой, заключается в том, что там (если вы используете более старую версию API) вы пытаетесь получить значение из несуществующего поля. Вы должны искать $rate = $shipment['rates_list'][0],

Вы увидите, что это поле было изменено в самой последней версии API.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]