I tested it and it works for me. The button payload acts as the value on the html button. This means that it is not displayed to the user, but this is the value that is returned to you.
If you create a button like this:
'attachment': { 'type': 'template', 'payload': { 'template_type': 'button', 'text': 'This is the description', 'buttons': [ { 'type': 'postback', 'title': 'This is the visible text', 'payload': 'This is the value you get back' } ] }
The callback involving the payload is as follows:
{'timestamp': 1461697120850, 'postback': {'payload': 'this is the value you get back'}, 'recipient': {'id': xxxxxxxx}, 'sender': {'id': xxxxxxxx}}
Juergen
source share