It was provided open source "as is" on demand, but since we do not even use this approach in our own projects anymore, we won't make any effort to keep this up to date.
Do you need help with implementing shipping estimation on the cart page for the default country? Contact [email protected] with your inquiry.
This module preselects the cheapest shipping method by filling shipping address with mock data and default country/region/postcode of the current storeview.
Upon entering checkout, PayPal Express or PayOne pages, the mock data is removed from shipping address.
-
Install it into your Magento 2 project with composer:
composer require integer-net/magento2-shippingpreselection
-
Enable module
bin/magento setup:upgrade
In general, make sure your configuration settings meet requirements:
- postcode, region and country set in General > Store Information
- all available countries need to have at least one shipping method available
- available countries cannot have mandatory region setting
- Add selectedShippingCountry select to
Mage_Checkout::cart.phtml
<?= $block->getChildHtml('shipping_country') ?>
- Add shipping country script to
Mage_Checkout::cart/js/cart.phtml
updateCartDataDependencies() {
[...]
this.selectedShippingCountry = this.cartData && this.cartData.shipping_addresses && this.cartData.shipping_addresses[0] && this.cartData.shipping_addresses[0].country && this.cartData.shipping_addresses[0].country.code || null
},
<?= $block->getChildHtml('shipping_country_js') ?>
-
Set config value for the mock data
integernet/shipping_preselection/mock_data
to custom value if desired -
If you have an altered cart query for GraphQl, you need to override
IntegerNet\ShippingPreselection\ViewModel\ShippingAddressMutation
accordingly.
.
Please mind: The template provided is supposed to work with table rates / one shipping method.
If you have several shipping methods and through changes made in cart - like quantity changes - the best available method changes, this will not be recognized by the module (because a shipping method is already in place). You can solve this by checking client-side in the cart, or adding a check backend-wise.
Override config values for integernet/shipping_preselection/mock_clearance_urls or hook into the service to modify behaviour for pages where the shipping address should be (un-)mocked.
1. When aborting PayPal Express and return to cart, the shipping method isn't displayed anymore
Paypal doesn't properly set the telephone address attribute, as it is called differently in its response. You can make the telephone field nullable in a etc/schema.graphql
of your own
interface CartAddressInterface {
telephone: String
}
input CartAddressInput {
telephone: String
}
Please see CHANGELOG for more information on what has changed recently.
Please see CONTRIBUTING for details.
If you discover any security related issues, please email [email protected] instead of using the issue tracker.
The MIT License (MIT). Please see License File for more information.