3

好的,我在一个文件中有以下代码。这只是 EasyPost 的部分代码,easy shipping api

$created_rates = \EasyPost\Rate::create($shipment);

$availableRates = array();

foreach($created_rates as $rate){

    $fedexR = str_replace("FEDEX_", " ", $rate->service);

    $displayS = str_replace("_", " ", $fedexR);

    $displayP = $rate->rate;

    $availableRates[] = $displayS;

}

$_SESSION['displayRates'] = $availableRates;

然后,这会将用户发送到选择运输方式的下一步,它们的显示如下:

<?php foreach($_SESSION['displayRates'] as $rate): ?>
     <option value="<?php echo $rate; ?>"><?php echo $rate; ?></option>
<?php endforeach; ?>

这将提交到以下页面:

$_SESSION['shipping_method'] = $_POST['shippingRate'];

$shipment = \EasyPost\Shipment::retrieve(array('id' => $_SESSION['shipment_id']));

$shipment->buy($shipment->rates[1]);

$_SESSION['shipment_label_url'] = $shipment->postage_label->label_url;

echo $_SESSION['shipment_label_url'];

如何使用 EasyPost API 发送选定的运费以告诉它为该运输方式购买邮资?我懂了

$shipment->buy($shipment->rates[1]);

我试着这样做:

$shipment->buy($shipment->rates[$_SESSION['shipping_method']]);但结果导致费率根本没有发送。

顺便说一句,会话是“地面”之类的实际单词,而不是数字。不知道我怎么能做到这一点,但如果我想让它工作,我必须这样做!

4

2 回答 2

2

货件上有一个名为lowest_rate 的费率过滤器。您可以将参数传递给它,例如运营商名称和服务名称。就像是:

$shipment->buy($shipment->lowest_rate(array('Fedex'), array($_SESSION['shipping_method'])));
于 2014-12-07T12:46:36.300 回答
1

首先你需要改变你输出的方式<option value="<?php echo $rate; ?>"><?php echo $rate; ?></option>

它应该更像<option value="<?php echo $rate[id]; ?>"><?php echo $rate[rate].' '.$displayS; ?></option>

您将需要此费率 [id] 来购买这样的运输标签

$shipment->buy(array('rate'=>array('id'=>$_POST[rate_id])));

然后你可以这样做:

<img src="<?php echo $shipment->postage_label->label_url; ?>">

于 2015-04-13T00:12:02.180 回答