4. Безопасность

При нажатии клиентом кнопки Подтверждаю платёж Merchant WM последовательно производит два запроса в биллинг: предварительный и оповещающий об оплате. При первом запросе модуль проверяет правильность данных и разрешает или же запрещает (например, если модуль в режиме выключен) проведение оплаты на кошелёк. Если биллинг разрешил платёж WebMoney Transfer сразу же (!) производит транзакцию и отправляет второй, оповещающий запрос, в котором, кроме служебных данных, посылается контрольная подпись, созданная из суммы этих служебных данных (почти все из них уникальны) и secretkey (который в запросе не посылается). Модуль проверяет контрольную сумму и, если она совпала, пополняет баланс клиента.

Таким образом secretkey должен быть длинным и не подбираемым (в системе Merchant WM secretkey может быть длиной до 50 символов).

Внимание! В предварительном запросе Merchant WM не посылает контрольную подпись, поэтому если в момент платежа в конфиге биллинга и настройках Merchant WM secretkey будут различными, то транзакция будет проведена, но баланс в биллинге не пополнится. Поэтому при изменении secretkey и вообще при изменении каких-либо параметров модуля настоятельно рекомендуется перевести режим модуля в состояние выключен опцией wm.mode=0, подождать завершения транзакций, которые могут проходить в данный момент (при стабильной работе оба запроса происходят практически в одно время) и только потом изменять настройки.

Все платежи, не прошедшие проверку контрольной подписи (но прошедшие все другие проверки), попадают в базу как не проведённые.