Australia Post (PAC API) Shipping Module for Zen Cart 1.5.8
============================================================
Version 1.0.0 - PHP 7.4 and PHP 8 compatible - AU domestic parcels

A modern, failure-safe Australia Post module. Uses the JSON
endpoints of the AusPost Postage Assessment Calculator API,
so no fragile XML parsing, and it is built so an API outage or
response change can NEVER break your checkout.

WHAT IT DOES
- Quotes Parcel Post and Express Post (and prepaid satchel
  services if enabled) for AU domestic deliveries, at checkout
  and in the cart shipping estimator, cheapest first.
- Optional variants per service: + Signature, Insured
  (Extra Cover for the order value), Insured + Signature.
- GST handled via the Tax Class setting (prices are returned
  GST-inclusive; the module strips GST so Zen Cart re-adds it).
- Failure-safe: any API error shows your Cost on Error flat
  rate (or hides the module if set to 0), with a 5-minute
  backoff so a down API never slows checkout. Whole quote
  routine is exception-guarded - it cannot 500 your site.
- Parcels exceeding AusPost limits (22kg / 105cm / 0.25m3)
  get the Cost on Error rate with a note, same as the old module.
- LETTERS ARE NOT QUOTED. This module is parcels only.

FILES (no core files touched)
  includes/modules/shipping/auspostpac.php
  includes/languages/english/modules/shipping/auspostpac.php

INSTALL
1. Upload the includes folder to your store root.
2. Admin > Modules > Shipping Modules > "Australia Post" (code
   auspostpac) > Install.
3. Enter your existing 36-character AusPost API key (the same
   one the legacy aupost module uses - from
   developers.auspost.com.au).
4. Set Dispatch Postcode, Weight Format (gms/kgs), Tax Class.
5. Tick the services you want under Services Offered. Optionally
   tick Extra Option Variants (note each variant adds one API
   call per service - the session cache keeps this cheap).
6. Test on the cart page with metro / regional / WA postcodes.

RUNNING ALONGSIDE THE OLD MODULE
The module code is 'auspostpac', so it can be installed while
the legacy 'aupost' module is still active - customers would
see both, so once you are happy with this module, disable or
remove the old aupost module in admin.

RENAMING SERVICES
Service Display Names uses CODE=Name pairs separated by
semicolons, e.g.
  AUS_PARCEL_REGULAR=Standard Delivery; AUS_PARCEL_EXPRESS=Express Delivery
Variant suffixes (+ Signature / Insured) are kept automatically.

UNINSTALL
Admin > Modules > Shipping Modules > Remove Module, then delete
the two files. The module adds no tables. SQL fallback:
  DELETE FROM configuration
  WHERE configuration_key LIKE 'MODULE\_SHIPPING\_AUSPOSTPAC\_%';

v1.1.0 ADDITION
- Hide on Error (Yes/No): if Yes, Australia Post disappears
  entirely when the API fails or the parcel exceeds AusPost
  limits, instead of showing the Cost on Error flat rate.
  Existing installs upgrade automatically - upload the new file
  and open Admin > Modules > Shipping Modules once.
