然而,我得到了这个错误,我不知道它意味着什么:
致命错误: Uncaught Shippo_InvalidRequestError:{"rate":“此字段是必需的。”}在/home/****/shippo/lib/Shippo/ApiRequestor.php(154):堆栈跟踪中:#0 /home/****/shippo/lib/Shippo/ApiRequestor.php(154):Shippo_ApiRequestor->handleApiError({“速率”:[“此.‘,400,数组) #1 /home/****/shippo/lib/Shippo/ApiRequestor.php(59):Shippo_ApiRequestor->_interpretResponse('{"rate":[“This.‘,400) # /home/****/shippo/lib/Shippo/ApiResource.php(107):Shippo_ApiRequestor->/home/****/shippo/lib/Shippo/ApiResource.php(107):(’post‘,’/v1/transaction.‘,数组) #3 /home/****/shippo/lib/Shippo/Transaction.php(14):Shippo_ApiResource::_scopedCreate('Shippo_Transact...',数组,NULL) #4 /home/****/public_html/.ship/print/done/index.php(65):Shippo_Transaction::create( Array ) #5 {main}抛入/home/*/Shippo/lib/Shippo/ApiRequestor.php第100行。
我也收到了关于message字段的类似消息,所以我在PHP脚本包中更改为message。这是来自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' => 'mr-hippo@goshipppo.com',
);
// 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' => 'ms-hippo@goshipppo.com',
);
// 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/
?>发布于 2017-05-30 17:14:14
虽然我在这里不能百分之百肯定,但您可能使用的是PHP包装器的最新版本,但没有最新版本的Shippo API。
我建议您到Shippo 变化量g查看那里的更改,并决定是否要升级。
您的代码在那里失败的可能原因是(如果您在API的旧版本上),您正在尝试从一个不存在的字段中检索值。你应该去找$rate = $shipment['rates_list'][0]。
您将看到这个字段在API的最新版本中发生了更改。
发布于 2020-12-17 23:37:58
我遇到了这个问题。最后,我引用了一个不同的示例/filter-by传递-time.php--那里的差异显示了调用的速率。
$transaction = Shippo_Transaction::create(array(
'rate'=> $eligible_rates[0]['object_id'],
'async'=> false,
));但这给我的启示是,错误信息是不准确的,事实上,我的地址格式是错误的。不知道为什么要这么做
https://stackoverflow.com/questions/44250991
复制相似问题