1. Home
  2. Docs
  3. Multi
  4. Apex Get Rates
Log a Case

APEX Code Examples to get Rates

 

Before you can use APEX code to interface with our app you need to install our Automate package (with an additional licence cost). To install you can follow these links for sandbox and production.

 

Below we have some examples for getting service types and rates (if available with the carriers) based on address information. 

 

FedEx

Id prefId = 'a025800000bs9Qx'; //Your FedEx Preference
Id contactId = '00358000006wy1I'; // Jack Rodgers
zkmulti__MCShipmate_Preference__c shipmatePref = [
SELECT Id, Name, zkmulti__AccountNumber__c,
zkmulti__Carrier__c, zkmulti__Label_Image_Type_Default__c,
zkmulti__Billing_City__c, zkmulti__Billing_Country__c, zkmulti__Billing_State__c,
zkmulti__Billing_Street__c, zkmulti__Billing_Zip_Postal_Code__c, zkmulti__Company_Name__c, zkmulti__Sender_Email_Default__c, zkmulti__Sender_Name_Default__c,
zkmulti__Sender_Phone_Default__c, zkmulti__Shipping_City__c, zkmulti__Shipping_Country__c, zkmulti__Shipping_Is_Residential__c,
zkmulti__Shipping_State__c, zkmulti__Shipping_Street__c, zkmulti__Shipping_Zip_Postal_Code__c, zkmulti__Currency_Default__c
FROM zkmulti__MCShipmate_Preference__c
WHERE Id = :prefId];
// get contact information (for recipient information)
Contact con = [
SELECT MailingCity, Account.Name, MailingCountry,
Email, FirstName, LastName,
Phone, MailingState, MailingStreet,
MailingPostalCode
FROM Contact
WHERE Id = :contactId];
// 1. Shipment and Shipment Info (required object)
zkmulti__MCShipment__c ship = new zkmulti__MCShipment__c(
zkmulti__Carrier__c = 'FedEx',
zkmulti__DropoffType__c = 'DROP_BOX',
zkmulti__Label_Image_Type__c = 'PNG',
// sender info
zkmulti__Sender_Name__c = shipmatePref.zkmulti__Sender_Name_Default__c,
zkmulti__Sender_City__c = shipmatePref.zkmulti__Shipping_City__c,
zkmulti__Sender_Company__c = shipmatePref.zkmulti__Company_Name__c,
zkmulti__Sender_Country__c = shipmatePref.zkmulti__Shipping_Country__c,
zkmulti__Sender_Email__c = shipmatePref.zkmulti__Sender_Email_Default__c,
zkmulti__Sender_Phone__c = shipmatePref.zkmulti__Sender_Phone_Default__c,
zkmulti__Sender_State_Province__c = shipmatePref.zkmulti__Shipping_State__c,
zkmulti__Sender_Street__c = shipmatePref.zkmulti__Shipping_Street__c,
zkmulti__Sender_Zip_Postal_Code__c = shipmatePref.zkmulti__Shipping_Zip_Postal_Code__c,
zkmulti__Sender_Address_is_Residential__c = false,
// recipient info
zkmulti__Recipient_City__c = con.MailingCity,
zkmulti__Recipient_Company__c = con.Account.Name,
zkmulti__Recipient_Country__c = con.MailingCountry,
zkmulti__Recipient_Email__c = con.Email,
zkmulti__Recipient_Name__c = con.FirstName + ' ' + con.LastName,
zkmulti__Recipient_Phone__c = con.Phone,
zkmulti__Recipient_State_Province__c = con.MailingState,
zkmulti__Recipient_Street__c = con.MailingStreet,
zkmulti__Recipient_Zip_Postal_Code__c = con.MailingPostalCode,
zkmulti__Ship_Date__c = Date.today(),
zkmulti__Currency__c = 'USD',
zkmulti__Dimension_Units__c = 'IN',
zkmulti__Weight_Units__c = 'LB',
//zkmulti__Service_Type__c = 'FEDEX_2_DAY_AM',
zkmulti__Package_Type__c = 'YOUR_PACKAGING',
zkmulti__Payment_Type__c = 'SENDER',
zkmulti__Billing_Account_Number__c = shipmatePref.zkmulti__AccountNumber__c,
zkmulti__Billing_Country__c = shipmatePref.zkmulti__Billing_Country__c
);
// 2. Packages - list the number of packages you will be shipping
List<zkmulti__MCPackage__c> packages = new List<zkmulti__MCPackage__c>();
zkmulti__MCPackage__c pkg = new zkmulti__MCPackage__c (
zkmulti__Weight__c = 1,
zkmulti__Length__c = 1,
zkmulti__Width__c = 1,
zkmulti__Height__c = 1,
zkmulti__DeclaredValue__c = 0
);
packages.add(pkg);
List<zkmulti.ShipmentRate> rates = zkmulti.BulkShipmentInterface.calculateRates(shipmatePref.Id, ship, packages, null, null, null);
System.debug('RATES: ' + rates);
/*
Example Response:
[
carrier=FedEx,
cost=null,
currencyIsoCode=null,
delivery_date=2018-07-02 23:00:00,
delivery_days=null,
estimate_delivery_days=null,
mailService=null,
params={base_charge=100.96, delivery_day_of_week=TUE, discounts=0.0, net_charge=107.77, rate_type=PAYOR_ACCOUNT_PACKAGE, rebates=0.0, surcharges=6.81, taxes=0.0, transit_time=null},
rate=107.77,
service_type=FIRST_OVERNIGHT,
shipmentProvider=null
]
*/

 

DHL

Id prefId = 'a025800000Zr2jJ'; // your DHL preference
Id contactId = '00358000006wy1I'; // you contact record
zkmulti__MCShipmate_Preference__c shipmatePref = [
SELECT Id, Name, zkmulti__AccountNumber__c,
zkmulti__Carrier__c, zkmulti__Label_Image_Type_Default__c,
zkmulti__Billing_City__c, zkmulti__Billing_Country__c, zkmulti__Billing_State__c,
zkmulti__Billing_Street__c, zkmulti__Billing_Zip_Postal_Code__c, zkmulti__Company_Name__c, zkmulti__Sender_Email_Default__c, zkmulti__Sender_Name_Default__c,
zkmulti__Sender_Phone_Default__c, zkmulti__Shipping_City__c, zkmulti__Shipping_Country__c, zkmulti__Shipping_Is_Residential__c,
zkmulti__Shipping_State__c, zkmulti__Shipping_Street__c, zkmulti__Shipping_Zip_Postal_Code__c, zkmulti__Currency_Default__c
FROM zkmulti__MCShipmate_Preference__c
WHERE Id = :prefId];
// get contact information (for recipient information)
Contact con = [
SELECT MailingCity, Account.Name, MailingCountry,
Email, FirstName, LastName,
Phone, MailingState, MailingStreet,
MailingPostalCode
FROM Contact
WHERE Id = :contactId];
// 1. Shipment and Shipment Info (required object)
zkmulti__MCShipment__c ship = new zkmulti__MCShipment__c(
zkmulti__Carrier__c = shipmatePref.zkmulti__Carrier__c,
zkmulti__Label_Image_Type__c = shipmatePref.zkmulti__Label_Image_Type_Default__c,
// sender info
zkmulti__Sender_Name__c = shipmatePref.zkmulti__Sender_Name_Default__c,
zkmulti__Sender_City__c = shipmatePref.zkmulti__Shipping_City__c,
zkmulti__Sender_Company__c = shipmatePref.zkmulti__Company_Name__c,
zkmulti__Sender_Country__c = shipmatePref.zkmulti__Shipping_Country__c,
zkmulti__Sender_Email__c = shipmatePref.zkmulti__Sender_Email_Default__c,
zkmulti__Sender_Phone__c = shipmatePref.zkmulti__Sender_Phone_Default__c,
zkmulti__Sender_State_Province__c = shipmatePref.zkmulti__Shipping_State__c,
zkmulti__Sender_Street__c = shipmatePref.zkmulti__Shipping_Street__c,
zkmulti__Sender_Zip_Postal_Code__c = shipmatePref.zkmulti__Shipping_Zip_Postal_Code__c,
zkmulti__Sender_Address_is_Residential__c = false,
// recipient info
zkmulti__Recipient_City__c = con.MailingCity,
zkmulti__Recipient_Company__c = con.Account.Name,
zkmulti__Recipient_Country__c = con.MailingCountry,
zkmulti__Recipient_Email__c = con.Email,
zkmulti__Recipient_Name__c = con.FirstName + ' ' + con.LastName,
zkmulti__Recipient_Phone__c = con.Phone,
zkmulti__Recipient_State_Province__c = con.MailingState,
zkmulti__Recipient_Street__c = con.MailingStreet,
zkmulti__Recipient_Zip_Postal_Code__c = con.MailingPostalCode,
zkmulti__Ship_Date__c = Date.today(),
zkmulti__Currency__c = 'USD',
zkmulti__Dimension_Units__c = 'IN',
zkmulti__Weight_Units__c = 'LB',
//zkmulti__Service_Type__c = 'Express1030NonDoc', // this line is commented to get all services available
zkmulti__Package_Type__c = 'your_packaging',
zkmulti__Return_Shipment__c = true,
zkmulti__Payment_Type__c = 'Sender'
);
// 2. Packages
List<zkmulti__MCPackage__c> packages = new List<zkmulti__MCPackage__c>();
zkmulti__MCPackage__c pkg = new zkmulti__MCPackage__c (
zkmulti__Weight__c = 1,
zkmulti__Length__c = 3,
zkmulti__Width__c = 2,
zkmulti__Height__c = 1,
zkmulti__DeclaredValue__c = 0
);
packages.add(pkg);
// for international shipments don't forget to add customs items
List<zkmulti__MCCustoms_Item__c> customsItems = new List<zkmulti__MCCustoms_Item__c>();
zkmulti__MCCustoms_Item__c customItem = new zkmulti__MCCustoms_Item__c(
zkmulti__Carrier__c = shipmatePref.zkmulti__Carrier__c,
zkmulti__Country_of_Manufacture__c = 'US',
zkmulti__Description__c = 'test description',
zkmulti__Quantity__c = 1,
zkmulti__QuantityUnits__c = 'F',
zkmulti__UnitPrice__c = 10,
zkmulti__Weight__c = 1
);
customsItems.add(customItem);
List<zkmulti.ShipmentRate> rates = zkmulti.BulkShipmentInterface.calculateRates(shipmatePref.Id, ship, packages, null, customsItems, null);
System.debug('RATES: ' + rates);

 

Let us know if you have any questions and we will be happy to help.

 

 

 

Contents: