Categories
Prestashop

Restrict payment by carrier in Prestashop multishop

These days I was playing with multishop setup in Prestashop. Apparently an old issue (and really a missing feature) popped up again: the ability to restrict payments for selected carrier.
I.e, if a customer chooses a shipment abroad we might want allow only payments via credit card.

The Addon-Store offers several modules which seem to solve this issue:

I contacted all the developers and they all confirmed that their module is working with multishop-setup. I didn’t purchase any of these so far. I really think this should be a core feature of any ecommerce software without needing an extra budget. Thus I was looking to solve the issue without purchasing a module.

So far I used Ship to Pay for PrestaShop v1.0.2
Although the site states that the module only works for PS 1.4 & 1.5 I used it without problems in PS 1.6 (specifically up to 1.6.1.3). But when setting up multishop feature I ran into issues.

ship2pay

First, as you can see on the screenshot the settings are kind of a mess. It seems each payment for each shop is listed, without giving you any idea which shop/payment-combination you are configuring. Well, this could be handled via trial and error.

The real issue is that for whatever reasons my desired combinations are not saved correctly.

In my case the module “cheque” was associated with all carriers. As I misuse the module for “Pay cash on Pickup” I don’t want to provide this payment method when a customer selects international shipping.

But luckily this can be solved via database:

  1. Save your desired combination and reload the page
  2. Check which associations are wrong (missing or wrong)
  3. Check in your database table ps_ship2pay where you see the associations of carriers and your payment methods.
    ps_ship2pay
  4. Now you can add missing assocations or delete wrong associations.
  5. Voila!

Pls. note that these settings apply to all shops, a “real” multishop-support needs some adaption of the code. If you want to use different payment modules in you various shops you should upfront define desired settings by activating/deactivating the payment modules for each shop.