Я почти все заработал отлично, за исключением создания ярлыков.
У меня есть этот код для генерации тарифов, который прекрасно работает:
//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"] );
}
Это просто выдает ошибку, хотя. Я передал неправильное значение для производства этикетки? Должен ли я использовать стоимость, произведенную для отгрузки, а не ставку?
это Саймон из Шиппо. Ссылка, которую вы разместили, на самом деле является ответом по курсу, а не транзакцией (это массив из множества тарифов, следовательно, длины).
Я быстро проверил вашу учетную запись, и для ваших самых последних попыток транзакции появляется сообщение об ошибке «Невозможно приобрести тариф, поскольку учетная запись Shippo не имеет действительных настроек выставления счетов». Это связано с тем, что в вашей учетной записи пользователя Shippo нет информации о кредитной карте, но вы пытаетесь приобрести этикетки на производстве.
Вы можете ввести действительную кредитную карту здесь https://goshippo.com/user/billing/. Запрос должен нормально работать, как только ваша кредитная карта будет сохранена!
Дайте мне знать, если у вас есть еще вопросы, всегда рады помочь!
Других решений пока нет …