alexedimensionz / royal-mail-price-calculator
A library to calculate the cost of sending a package with Royal Mail.
1.2.2
2023-04-28 10:25 UTC
Requires
- symfony/yaml: ^3.4|^4.1
README
This library is forked to revive it. Built by WyldCode a subsidiary of e-dimensionz, Inc
It allows you to calculate the cost of sending a package with Royal Mail, updated prices and extends support to all package prices.
Usage
Install the latest version with composer require alexedimensionz/royal-mail-price-calculator
Main Changes from Justin Hook's Repo
- Removed Doctrine requirement
- Added all shipping types
- Added International shipping options and prices
- Continuously Updating price lists
Supported Services
Example for UK Delivery Targets
<?php require 'vendor/autoload.php'; use \RoyalMailPriceCalculator\Calculator; use \RoyalMailPriceCalculator\Package; use \RoyalMailPriceCalculator\Services\GuaranteedByOnePmService; use \RoyalMailPriceCalculator\Services\FirstClassService; $calculator = new Calculator(); $package = new Package(); $package->setDimensions(15, 15, 0.4); $package->setWeight(90); $calculator->setServices(array( new FirstClassService(), new GuaranteedByOnePmService())); foreach ($calculator->calculatePrice($package) as $calculated) { echo $calculated['service']->getName() . "\n"; foreach ($calculated['prices'] as $price) { echo " → £{$price['price']} (Compensation: £{$price['compensation']})\n"; } echo "\n"; }
Will output something like:
1st Class Service
→ £0.62 (Compensation: £20)
Guaranteed by 1pm
→ £6.40 (Compensation: £500)
→ £7.40 (Compensation: £1000)
→ £9.40 (Compensation: £2500)
Example for International Delivery Targets
<?php require 'vendor/autoload.php'; use \RoyalMailPriceCalculator\Calculator; use \RoyalMailPriceCalculator\Package; use \RoyalMailPriceCalculator\Services\InternationalTracked; use \RoyalMailPriceCalculator\Services\InternationalEconomy; $calculator = new Calculator(); $package = new Package(); $package->setDimensions(15, 15, 0.4); $package->setWeight(90); // This part is mandatory for international shipments $target_iso = 'US'; $calculator->setCountryCode($target_iso); // $calculator->setServices(array( new InternationalTracked(), new InternationalEconomy())); // Note: there is no compensation value for international foreach ($calculator->calculatePrice($package) as $calculated) { echo $calculated['service']->getName() . "\n"; foreach ($calculated['prices'] as $price) { echo " → £{$price['price']}\n"; } echo "\n"; }
Will output something like:
International Tracked
→ £8.50
International Economy
→ £13.30
Useful Functions
Royal Mail has 5 delivery zones:
- UK
- Europe
- International (Zone 1)
- International (Zone 2)
- US (Zone 3)
You can find the zone code for your country by using the 2-Letter ISO code.
<?php require 'vendor/autoload.php'; use \RoyalMailPriceCalculator\Calculator; ?> CA region is: <?php echo Calculator::get_region_code('CA'); ?><br/> US region is: <?php echo Calculator::get_region_code('US'); ?><br/> GB region is: <?php echo Calculator::get_region_code('GB'); ?><br/> AU region is: <?php echo Calculator::get_region_code('AU'); ?><br/> DE region is: <?php echo Calculator::get_region_code('DE'); ?>
Will output:
CA region is: intl_1
US region is: intl_3
GB region is: uk
AU region is: intl_2
DE region is: eu