- PVSM.RU - https://www.pvsm.ru -
В .Net для работы с интерфейсами Webmoney существует замечательная OpenSource библиотека WMClasses [1]. За что большое спасибо kazkad [2].
Внезапно :) в пятницу вечером в этой библиотеке обнаружился неприятный баг, напоминающий «проблему 2000».
Дело в том, что при запросах на интерфейсы Webmoney необходимо использовать номер запроса reqn [3], который должен быть постоянно возрастающим. (целое без знака, макс. количество цифр — 15; всегда должен быть больше номера предыдущего запроса на перевод средств!!! Монотонность номера учитывается в привязке к WMID, подписывающему запрос.)
Смотрим в код WmXmlCmd.cs
public static long GenerateReqNo(int maxlen)
{
long reqn = DateTime.Now.ToFileTimeUtc();
string data = reqn.ToString();
if (data.Length > maxlen)
{
data = data.Remove(0, data.Length - maxlen); // <- удаляет первые 3 символа из строки
}
reqn = long.Parse(data);
return reqn;
}
В результате 14.12.2012 в 23.06 значение reqn достигло 999999999999999 и началось с 0. Требование возрастания нарушилось и работа сервиса остановилась. Решить удалось только обращением в службу поддержки Webmoney с просьбой сбросить значение reqn.
В этой истории радует то, что в следующий раз эта проблема возникнет 15.02.2016 8:53:20. Так что, еще есть 4 года, чтобы изменить способ генерации reqn.
Будьте внимательны.
Автор: Fancy
Источник [4]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/programmirovanie/22832
Ссылки в тексте:
[1] WMClasses: http://habrahabr.ru/post/14617/
[2] kazkad: http://habrahabr.ru/users/kazkad/
[3] reqn: http://wiki.webmoney.ru/projects/webmoney/wiki/%D0%98%D0%BD%D1%82%D0%B5%D1%80%D1%84%D0%B5%D0%B9%D1%81_X2
[4] Источник: http://habrahabr.ru/post/162947/
Нажмите здесь для печати.