Mark Sanborn Mark Sanborn Fishing Mark Sanborn

Coder, Entrepreneur, Blogger, and Coffee Addict

Mastering the UPS Shipping API: Rate Shopping Dropdown

One of the first parts of the checkout process of any ecommerce site is to provide the customer with a dropdown box with shipping options. In this tutorial we are going to shop for various UPS rates and display them in a convenient drop down.

If you are new to the UPS API first read this article, Mastering the UPS Shipping API: Getting Started. You will need to have access to UPS’s online web tools. You can register here.

Getting ups-php

 
The first step is to go and get ups-php. For this guide we will use the latest code by downloading it with svn.

mkdir ups-php
svn checkout http://ups-php.googlecode.com/svn/trunk/ .

Once downloaded you will notice that there is a folder called tests inside of tests there are rates and tracking. In rates there is a file called test_shopRates.php. This file contains a working sample test code. Simply enter your UPS credentials and hit submit.

ups-php test login

You will than have a big giant array with tons of information available to us.

Getting the correct values

 
With all this information what do we really need to get to the bottom of the line and display a simple dropdown with a couple of shipping options?

We need the total charge for the package:

total charges

And the UPS service code:

service code

Now we have the required information. We know that the total charge for the package is in the hashed array:

$response['RatingServiceSelectionResponse']['RatedShipment'][0]['TotalCharges']['MonetaryValue']['VALUE'];

And that the UPS Service Code is in this hashed array:

$response['RatingServiceSelectionResponse']['RatedShipment'][0]['Service']['Code']['VALUE'];

Looping through all the available services

 
These values are nice but they only represent one of the available services that UPS offers. If you notice in the array hash reference above we have a [0] after ['RatedShipment']. This represents the first set in a group of multiple “RatedShipments“.

We need to loop through all of them and display them like this:

$response = $upsRate->returnResponseArray();

foreach ($response['RatingServiceSelectionResponse']['RatedShipment'] as $service) {
    echo $service['Service']['Code']['VALUE']. '<br />';
    echo $service['TotalCharges']['MonetaryValue']['VALUE']. '<br />';
} 

This will print out all the UPS Service Codes with the total cost for the service. All we have to do now is add some HTML and put them in a drop down.

<select>
<?php $response = $upsRate->returnResponseArray();

foreach ($response['RatingServiceSelectionResponse']['RatedShipment'] as $service) {
    $serviceCode = $service['Service']['Code']['VALUE'];
    $totalCharges = $service['TotalCharges']['MonetaryValue']['VALUE'];

    echo "<option value=\"$serviceCode\">$serviceCode ($totalCharges)</option>";
}
?>
</select>

You should end up with something like this:

UPS service drop down

From here all you have to do is convert the service codes to their respective names found in this article, Calculating UPS Shipping Rate with PHP. If you get stuck just go back to the example provided with ups-php, test_rates.php.



This entry was posted in Uncategorized. Bookmark the permalink.

One Response to Mastering the UPS Shipping API: Rate Shopping Dropdown

  1. prem says:

    Hi

    I need to provide the user with the service type option with the rates before they do the final check out,

    Can you please provide some guidance on this

    Thank you

© 2011 All rights reserved

1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|26|27|28|29|30|31|32|33|34|35|36|37|38|39|40|41|42|43|44|45|46|47|48|49|50|51|52|53|54|55|56|57|58|59|60|61|62|63|64|65|66|67|68|69|70|71|72|73|74|75|76|77|78|79|80|81|82|83|84|85|86|87|88|89|90|91|92|93|94|95|96|97|98|99|100|101|102|103|104|105|106|107|108|109|110|111|112|113|114|115|116|117|118|119|120|121|122|123|124|125|126|127|128|129|130|131|132|133|134|135|136|137|138|139|140|141|142|143|144|145|146|147|148|149|150|151|152|153|154|155|156|157|158|159|160|161|162|163|164|165|166|167|168|169|170|171|172|173|174|175|176|177|178|179|180|181|182|183|184|185|186|187|188|189|190|191|192|193|194|195|196|197|198|199|200|201|202|203|204|205|206|207|208|209|210|211|212|213|214|215|216| generic buying erythromycin alesse next day delivery without a prescription motilium no prescription needed buy cytotec pills canadian pharmacy no prescription needed provera actos by internet buying orlistat pharmacy without prescription lisinopril no prescription needed purchase femara medication buy lipitor cod actonel buy online cheap buy carbozyne online without prescription femara prescription discounts elavil without prescriptions pills buying isotretinoin online pharmacy trazodone no prescription order no prescription metformin birth control no prescriptionAccutane Online Doxycycline online Buy Cheap Lexapro Online No Prescription Prednisone Online Buy Accutane No Prescription