使用Shippo和PHP生成装运标签

使用Shippo和PHP生成装运标签,php,shipping,fedex,shippo,Php,Shipping,Fedex,Shippo,除了生成标签,我几乎让它工作得很好 我有以下代码来生成费率,非常有效: //Wait for rates to be generated $attempts = 0; while (($shipment["object_status"] == "QUEUED" || $shipment["object_status"] == "WAITING") && $attempts < 10) { $shipment = Shippo_Shipment::retrieve($

除了生成标签,我几乎让它工作得很好

我有以下代码来生成费率,非常有效:

//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"];
}

不过,这只会产生一个错误。我是否传递了错误的值来生成标签?我是否应该使用装运产生的价值而不是费率?

我是Shippo的Simon。您发布的链接实际上是速率响应,而不是事务(它是许多速率的数组,因此是长度)

我已经快速检查了您的帐户,对于您最近的交易尝试,出现了一条错误消息“无法购买费率,因为Shippo帐户没有有效的计费设置。”。这是因为您的Shippo用户帐户没有任何信用卡信息,但您正在尝试在生产中购买标签

您可以在此输入有效的信用卡。一旦您的信用卡被保存,请求就会正常工作


如果您有任何进一步的问题,请告诉我,随时乐意帮助

嘿,迈克,你能提供错误信息和整个交易的JSON响应吗?这对调试代码非常有帮助。谢谢Simontanks等待回应。echo($transaction[“messages”])产生的错误;只说数组。JSON响应非常长,因此我将其发布在这里:感谢您的帮助。我以前从来没有用过这样的东西,真的很期待学习如何做。嗨,西蒙。谢谢你的回复。我刚刚查看了运营商页面,联邦快递被设置为测试,其他的设置为非活动。是否有其他地方将其设置为测试?我确实临时将它转移到生产环境中测试了速率,因为我在测试中得到了不一致的结果,并且希望确保它返回正确的结果。我将载体设置回测试状态,以便确保标签部分正常工作。谢谢你的帮助。是的,我看到联邦快递现在处于测试模式。以前,USPS必须已激活。自从您将联邦快递设置为测试模式后,您是否运行了另一个测试?如果是,您收到了什么错误/成功消息?嗨,西蒙。我在测试环境中。我输入了以下几行,并从每一行得到了以下响应:echo$transaction[“object_id”]返回1fb8d19af1ee467caf6ddbcf12541c0f;echo$transaction[“object_status”]返回错误;echo($transaction[“messages”])返回数组。嗨,迈克-刚刚看到打折的Shippo USPS帐户在生产中仍然很活跃。我已经为你完全禁用了它。你能再试一次吗?如果方便的话,请直接联系goshippo.com上的simon。我只是再次尝试了一下,结果还是一样的。我注意到的一点是,在载体下,Parcelforce在测试模式下处于活动状态。我试着去激活它,但没有选择这样做。你能帮我禁用它吗,或者我该怎么做?唯一应该激活的是联邦快递。谢谢
//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"] );
}