Дата может быть не синхронна на серверах. Используйте в качестве соли обычный пароль, т.е. передавайте хеш от (все важные данные + пароль).
Правда это не защитит вас от того, что одно и тоже сообщение передаётся два раза, это вам надо разрешать на уровне логики. Т.е. не просто передавать "пополнить счёт клиента id на $100", а "пополнить счет пользователя id на $100, id платежа id_pay". А уже на принимающей стороне проверять, что такого платежа небыло.
Получается защищенная система: сгенерировать новое валидное сообщение без пароля нельзя, послать второй раз перехваченное тоже.
Либо можете защитить связь на уровне канала с помощью сертификатов.