2017-04-03 6 views
0

Ich habe derzeit EasyPost eine Sendung erstellen. Wenn ich die Sendung erstelle, stellt sie mir alle verfügbaren Dienste und Preise zur Verfügung.Ermitteln der Rate eines bestimmten Dienstes - EasyPost

Ich möchte Service dynamisch auswählen und nur diese Rate zurückgeben.

Ich würde ursprünglich das Array mit der Indexnummer lesen (ich schätze, wie es zu beschreiben ist).

Das Problem damit ist jedes Mal, wenn ich eine neue Sendung die Reihenfolge der Preise Array ändert, was wäre $ Versand-> Preise [0] ['Rate'] wäre Express und dann das nächste Mal zuerst Klasse.

Ich möchte eine Sendung mit "Express" erstellen und nur diese Rate zurückgeben.

Jeder Rat würde geschätzt werden.

Hier ist mein Code:

$name = $this->thiscustomer->cust_first . ' ' . $this->thiscustomer->cust_first; 
$street_1 = $this->thiscustomer->street_1; 
$street_2 = $this->thiscustomer->street_2; 
$city = $this->thiscustomer->city; 
$state = $this->thiscustomer->state; 
$zip = $this->thiscustomer->zip; 


$weight = $this->weight; 
    $packaging = $this->packaging; 
    $service = $this->service; 
    $caddress = $this->consultant->address; 
    $cstreet_1 = $this->consultant->street_1; 
    $cstreet_2 = $this->consultant->street_2; 
    $ccity = $this->consultant->city; 
    $cstate = $this->consultant->state; 
    $czip = $this->consultant->zip; 
    $cname = $this->consultant->first_name . ' ' . $this->consultant->last_name; 
    $cuser_id = $this->consultant->user_id; 




require_once(dirname(__FILE__) . '/lib/easypost.php'); 
\EasyPost\EasyPost::setApiKey('KUk4fZUI6YaYc1h0FiIXFw'); 


$shipment = \EasyPost\Shipment::create(array(
'to_address' => array(
"name" => $name, 
"street1" => $street_1, 
"street2" => $street_2, 
"city" => $city, 
"state" => $state, 
"zip"  => $zip 
), 
'from_address' => array(
"company" => $cname, 
"street1" => $cstreet_1, 
"street2" => $cstreet_2, 
"city" => $ccity, 
"state" => $cstate, 
"zip"  => $czip 
), 
'parcel' => array(
'weight' => $weight, 
'predefined_package'=> $packaging 
), 
'rates' => array(
    'service' => $service 
) 

)); 

echo $shipment->rates[0]['rate']. '<br>'; 

Antwort

0

In Easypost des Getting Started Guide gibt es ein Beispiel einen bestimmten Träger des Kaufens + rate:

$shipment->buy($shipment->lowest_rate(array('USPS'), array('Express'))); 
+0

Ich will nicht, es zu kaufen, bis ich weiß, was die Rate ist. – foxtangocharlie

+0

In diesem Fall müssen Sie nur einige Array-Filterung durchführen. Neben der Auswahl eines Carriers (was Sie mit dem Feld carrier_accounts tun können) handelt es sich bei diesen Details um eine Geschäftslogik, die EasyPost absichtlich von seinen Komfortmethoden fernhält, damit Sie genau bestimmen, was Sie wollen. Siehe http://php.net/manual/en/function.array-filter.php – KFunk

Verwandte Themen