Your problem is that by declaring a new and different 'payload' in each IF you create one that is local to that IF statement. When the statement ends that version of 'payload' is no longer usable so the rest of loop() uses the global 'payload'.
There are several ways to do it:
Easiest is probably to use a String object to which you can assign new values.
Another choice is to change just the single character different between cases. Note the use of character constants (single quotes) and not string constants (double quotes):
Third option is the "string copy" function which moves each character of a string to a character array. Note that this is dangerous because it doesn't check to see if the destination is large enough to hold the string being copied: