I do not see how "meal" can possibly be a subject complement because the person paying is not a meal.
The analysis given by Swan strikes me as sensible: "pay for" is considered a transitive verb and can be put into the passive voice like any transitive verb even though it is a prepositional verb.
It is perhaps not a perfect example because you might make the argument that the verb "pay for" is not an independent verb and is instead an ellipsis
Someone paid for your meal
is an ellipsis for
Someone paid the amount due for your meal
If we interpret the first sentence as an abbreviated form of the second, it becomes even more obvious that "for your meal" is not refering to the person paying; instead it is a prepositional phrase modifying the object, whether that object is explicit or implicit.
Personally, I see no reason to analyze the sentence as an ellipsis. I accept "pay for" as a legitimate prepositional verb (probably developed through an historical process of ellipsis because it does not seem to be what is called in German a seperable verb).
And whether or not "pay for" is a legitimate prepositional verb, both sentences can be put into the passive voice.
Your meal was paid for
The amount due for your meal was paid for.
In any case, Swan's main point does not depend on this specific example. All transitive verbs, whether or not prepositional, can be put into the passive.