Как правильно подсчитать комиссию WM
Оказалось, что целых два года я неправильно рассчитывал комиссию WebMoney и соответственно в некоторых выплатах (примерно 1%) удерживал лишнюю копейку. По сути классическая ошибка, которой способствует небольшая путаница в порядке проведения платежа и заказе выплаты со счета проекта. Так как ситуация распространенная, то решил написать небольшую заметку.
Рассмотрим ошибку на небольшом примере с переводом суммы 20 WM - надо чтобы получил 20 WMR, сколько списать со внутреннего счета?
Как считает WebMoney:
вводим нужную сумму перевода 20 WMR
выскакивает комиссия 20 * 0.8% = 0.16 WMR
со счета списывается 20.16 WMR
Если в проекте пользователь вводит сумму и комиссия показывается сверх нее, то проблем естественно нет. Но чаще вводится общая сумма к выводу и уже затем показывается, с вычетом комиссии, что придет на кошелек:
заказываем выплату $PaySum
считаем что получим за вычетом комиссии:
$s = $PaySum - (ceil($PaySum * 0.8) / 100);
получаем при вводе 20.16 сумму 19.99, т.е. комиссия равна 0.17 WMR.
Если внимательно посмотреть на формулу, то причина ошибки в том, что комиссия была взята с общей суммы, т.е. мы обложили комиссию WebMoney еще раз комиссией.
Правильно считать так:
$s = $PaySum - (ceil($PaySum * 80 / (100 + 0.8)) / 100);
Вот такой, ляп в расчете комиссии успешно проработал у меня в течение 2 лет и только один внимательный пользователь его заметил.
P.S. Общая сумма ошибки невелика, в диапазоне 15-100 рублей с примерно 140000 выплат, она могла быть бы значительно больше, но большая часть переводов в рублях, а суммы в долларах как правило меньше $1.
