Использование Shippo и PHP для производства этикеток

1

Я почти прекрасно работал, кроме создания ярлыков.

У меня есть этот код для генерации ставок, который отлично работает:

//Wait for rates to be generated
$attempts = 0;
while (($shipment["object_status"] == "QUEUED" || $shipment["object_status"] == "WAITING") && $attempts < 10)
{
    $shipment = Shippo_Shipment::retrieve($shipment["object_id"]);
    $attempts +=1;
}

//Get all rates for shipment.
$rates = Shippo_Shipment::get_shipping_rates(array('id'=> $shipment["object_id"]));

$json = json_decode($rates, true);
foreach ($json["results"] as $key)
{
    $amount = $key["amount"];
    $servicelevel = $key["servicelevel_name"];
    $objid = $key["object_id"];
}

Когда я просматриваю каждый из результатов, я назначаю их переменным для разных уровней обслуживания и позволяю пользователю выбирать, какой метод доставки они хотят использовать. Я $objid на следующую страницу, чтобы создать ярлык, используя следующий код:

//Write the object_id to a variable
$var = $shiparray[1];
$transaction = Shippo_Transaction::create(array('rate'=>$var));
echo $transaction["object_status"] ."<br>";
// Wait for carrier to create shipping label
$attempts = 0;
while (($transaction["object_status"] == "QUEUED" || $transaction["object_status"] == "WAITING") && $attempts < 10)
{
    $transaction = Shippo_Transaction::retrieve($transaction["object_id"]);
    $attempts += 1;
}
echo $transaction["object_status"] ."<br>";
// Retrieve label url and tracking number or error message
if ($transaction["object_status"] == "SUCCESS")
{
    echo($transaction["label_url"]);
    echo("\n");
    echo($transaction["tracking_number"]);
}
else
{
    echo( $transaction["messages"] );
}

Однако это приводит к ошибке. Я передаю неправильное значение для создания ярлыка? Должен ли я использовать значение, произведенное для отгрузки, а не цену?

  • 0
    Эй, Майк, не могли бы вы также предоставить сообщение об ошибке и полный ответ JSON транзакции, пожалуйста? Это было бы очень полезно для отладки вашего кода. Спасибо! Саймон
  • 0
    Спасибо за ответ. Ошибка, вызванная эхо ($ транзакция ["сообщения"]); только говорит Array. Ответ JSON очень длинный, поэтому я разместил его здесь: ссылка Любая помощь приветствуется. Я никогда не использовал ничего подобного раньше, и действительно с нетерпением жду возможности научиться делать это.
Теги:
shipping
shippo
fedex

1 ответ

0

это Симон из Шиппо. Ссылка, которую вы опубликовали, на самом деле является ответом на тарифы, а не транзакцией (это множество многих ставок, таким образом, длина).

Я быстро проверил вашу учетную запись и ваши последние попытки транзакции, там появляется сообщение об ошибке "Цена не может быть куплена, поскольку учетная запись Shippo не имеет действительных платежных настроек". Это связано с тем, что у вашей учетной записи пользователя Shippo нет информации о кредитной карте, но вы пытаетесь приобрести этикетки на производстве.

Вы можете ввести действующую кредитную карту здесь https://goshippo.com/user/billing/. Запрос должен работать нормально, как только ваша кредитная карта будет сохранена!

Дайте мне знать, если у вас есть дополнительные вопросы, всегда рады помочь!

  • 0
    Привет Саймон. Спасибо за ответ. Я только что посмотрел на странице носителей, и FedEx настроен как тестовый, а остальные настроены как неактивные. Есть ли другое место, чтобы установить его в качестве теста? Я временно перенес его в производство, чтобы проверить показатели, так как в тесте я получал противоречивые результаты, и хотел убедиться, что он дал правильные результаты. Я вернул носители для проверки, чтобы убедиться, что часть с этикетками работает. Спасибо за помощь.
  • 0
    Да, я вижу, что FedEx сейчас в тестовом режиме. Ранее USPS должен был быть активирован. Вы провели еще один тест, так как вы установили FedEx в режим тестирования? Если да, то какие сообщения об ошибках / успехах вы получили обратно?
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню