пятница, 9 апреля 2010 г.

XML - интерфейсы WebMoney и Java

У WebMoney есть X-интерфейсы. Они предназанчены для того, чтобы программным способом взаимодействовать с этой платежной системой. Выставлять счета, получать различную статистику.

При этом порядок работы разный и заивсит от того как вы проходили регистрацию в платежной системе. Если через Light, то у вас p12 ключ и некоторые параметры (ваш wmid и подпись через Signer) передавать не надо. Если регистрация проходила через Keeper Classic, то у вас kwm ключ, и вам необходимо указывать ваш wmid и подписывать сообщения через Signer.

Для работы через эти интерфейсы есть хорошая библиотека WebmoneyJava Я работал через нее. Кошелек был зарегистрирован через Keeper Light. Но тут мне понадобилось перевести приложение на другой акканут, который был зарегистрирован через Keeper Classic. Вот тогда и началаись проблемы. Чтобы работать c ключами classic, необходимо:


  • Сохранить ключ из кипера в файл.
  • С помощью KeyExtractor преобразовать этот ключ в Base64
  • Положить получившийся файл в то место где его будет видеть сервис. Указать путь к нему в самом сервисе.

Трудности начинаются со второго пункта. Я тщетно пытался найти на сайте WebMoney ссылку на приложение KeyExtractor. После долгих поисков, я все же ее нашел. KeyExctractor можно скачать здесь.

Дальше меня поджидала еще одна проблема: выяснилось, что изменился формат хранения classic ключей. Сейчас KeyExtractor преобразует их в xml Base64. Таким образом библиотека webmoneyjava не работала с новым представлением classic ключей. Я нашел обновленную версию соответствующей библиотеки, написанной на C#. После чего поправил код webmoneyjava. Исправления затронули :


  • SignerImpl
  • wmsignerjx.Signer
  • wmsignerjx.Montgomery

Ниже я привожу код изменненых классов.






Теперь можно смело использовать соответствующий сервис для работы с Classic ключами.

Комментариев нет:

Отправить комментарий