При вызове request-payment или request-external-payment каждый раз будет генерироваться и выдаваться в ответ на эти запросы новый request_id, его можно хранить в куках.
Через request_id повторить списание дважды не получится, поэтому само по себе значение злоумышленнику погоды не сделает.