While we could solve this with defining a superclass for all shipping backends, the better approach to plugins is to implement inversion-of-control, and let the backends hold a reference to the shop instead.
The reference interface for shipping backends is located at shop.shipping.shipping_backend_base.ShippingBackendAPI
The shipping backend should define the following interface for the shop to be able do to anything sensible with it:
In order to make your shipping backend compatible with the SHOP_FORCE_LOGIN setting please make sure to add the @shop_login_required decorator to any views that your backend provides. See how-to-secure-your-views.rts for more information.