octolize / royal-mail-price-calculator
A library to calculate the cost of sending a package with Royal Mail.
This package's canonical repository appears to be gone and the package has been frozen as a result.
1.6.1
2024-04-18 07:52 UTC
Requires
- php: >=7.0.8
- symfony/yaml: ^3.4|^4.1|^5
This package is auto-updated.
Last update: 2024-09-18 08:47:34 UTC
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
Service | Class |
---|---|
1st Class Service | FirstClassService() |
2nd Class Service | SecondClassService() |
Signed For 1st Class | SignedForFirstClassService() |
Signed For 2nd Class | SignedForSecondClassService() |
Guaranteed by 9am | GuaranteedByNineAmService() |
Guaranteed by 9am with Saturday Guarantee | GuaranteedByNineAmWithSaturdayService() |
Guaranteed by 1pm | GuaranteedByOnePmService() |
Guaranteed by 1pm with Saturday Guarantee | GuaranteedByOnePmWithSaturdayService() |
International Economy | InternationalEconomy() |
International Standard | InternationalStandard() |
International Signed | InternationalSigned() |
International Tracked | InternationalTracked() |
International Tracked And Signed | InternationalTrackedAndSigned() |
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