Skip to content

my_changes payments_list.tpl override breaks checkout for non-MultiSafepay payment methods #8

Description

@StefanvanderVliet

Plugin version: 1.8.0
CS-Cart version: 4.8.1
Files:
design/themes/responsive/templates/addons/my_changes/overrides/views/checkout/components/payments/payments_list.tpl
design/themes/basic/templates/addons/my_changes/overrides/views/checkout/components/payments/payments_list.tpl

Problem
The shipped payments_list.tpl override indexes
$payment_data.processor_params.minamount / .maxamount / .gateway / .ipvalidator
for every payment method in checkout. For non-MultiSafepay or offline methods,
processor_params is an empty string, not an array.

  • On PHP 7.x this logs "Illegal string offset 'minamount'" and "Illegal string
    offset 'gateway'" and the min/max gating returns garbage.
  • On PHP 8.x this is a fatal TypeError ("Cannot access offset of type string on
    string"), which breaks the checkout payment step whenever a non-MSP method is
    present.

Secondary issues in the same file

  • It is shipped into the my_changes namespace, which is the merchant's own
    customization namespace. Installing the plugin overwrites a merchant's existing
    my_changes/payments_list.tpl override.
  • The template contains a stray } (in the BNPL_MF NL branch) and references
    $payment_data.params.* where it should be $payment_data.processor_params.*.

Possible fix
Guard processor_params with an is_array check before indexing it, so the MSP-
specific filtering only applies to MSP methods and other methods render normally.
Ship plugin overrides under the plugin's own addon namespace rather than
my_changes.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions