2014-01-26 7 views
3

좋아요, 그럼 한 파일에 다음 코드가 있습니다. 이것은 쉽게 운송 API를이 후 배송 방법을 선택하는 다음 단계로 사용자를 보냅니다EasyPost에서 배송 방법 또는 요율 정의하기

$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; 

EasyPost에서 부분적 코드, 그들과 같이 표시됩니다

<?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']]);하지만 전혀 전송되지 않는 요금에 결과.

실제로, 세션은 숫자가 아닌 "GROUND"와 같은 실제 단어입니다. 내가 어떻게이 일을 성취 할 수 있는지 확신 할 수 없지만, 나는 그것이 일하기를 원한다면 나는 꼭해야만한다!

답변

2

발송물에는 lowest_rate라는 요금 필터가 있습니다. 사업자 이름과 서비스 이름처럼 arg에 전달할 수 있습니다.

$shipment->buy($shipment->lowest_rate(array('Fedex'), array($_SESSION['shipping_method']))); 
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; ?>">