If you want to add multiple products as surcharges, each charge needs to have its own add to cart function called. Using filters only changes what product is added, it does not add more. While you could conceivable call the add to cart function from within the filter callback, but then you need to take care to not cause an infinite loop situation. Calling add to cart causes the filter callback to run, which calls add to cart, causing the filter callback to run which calls…
An alternative is to have different products that include surcharges. Then the filter can change the base product to one with the appropriate surcharges included. But then your callback needs to know what option was checked. I think this is not available in the callback unless the entire add to cart routine is altered. I’m assuming add to cart is an Ajax process. If it’s a form submit process, the checkbox state can be determined from $_POST.
]]>