[ИЩУ ИСПОЛНИТЕЛЯ] Библиотека для работы с XML-интерфейсами WebMoney для .Net

  • Автор темы Автор темы Koteyka
  • Дата начала Дата начала

Koteyka

Пользователь
Регистрация
10.01.2016
Сообщения
39
Реакции
10
Баллы
8
Приветствую!

Подскажите, пожалуйста, есть ли кто-нибудь кто сделал бы из этой библиотеки снипет на c# для перевода средств между своими кошельками?
Интересует цена. Предложения в личку.

Т.з. было бы таким: есть заранее известный список кошельков, допустим он в текстовом файле, загоняем его в список ZP, это и я могу сделать, не принципиально, и чтобы снипет чекал сначала баланс кошелька, и если баланс положительный, переводил бы всю эту сумму на другой кошелёк, который укажу, допустим во входных настройках.

У webmoney есть все методы под эти нужды, вот ссылка:
https://wiki.webmoney.ru/projects/webmoney/wiki/WM-API

Еще исполнителю по всей видимости нужно иметь персональный аттестат, чтобы вы могли тестировать на своём wmid, пока пишите снипет, но не уверен.
 
Пытаюсь сам осилить, но знаний C# катастрофически не хватает)

Что уже сделал?

1. Скачал Key Extractor, извлёк требуемый xml key.
2. Создал в шаблоне входные настройки под xml key, wmid, поле для выбора файла с кошельками, и поле для кошелька на который переводить средства.

Линк на Key Extractor:
http://download.wmsigner.com/webmoney-cryptography/public/v3.2/bin.zip

Мануал:
https://wiki.webmoney.ru/projects/webmoney/wiki/Key_Extractor

3. Скачал требуемые библиотеки.

Линк на библиотеки: (не обязательно их скачивать от сюда, я уже все скачал и положил в архив с шаблоном)
http://download.wmsigner.com/webmoney.xmlinterfaces/.net/v1.0/bin.zip

Мануал по использование xml интерфейсов для этой библиотеки:
https://wiki.webmoney.ru/projects/webmoney/wiki/WM-API

4. Скопировал все библы в ExternalAssemblies.

5. Подключил их в References.

6. Добавил в OwnCodeUsings следующий код:

Код:
Развернуть Свернуть Копировать
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading;
using System.IO;
using System.Text.RegularExpressions;
using ZennoLab.CommandCenter;
using ZennoLab.InterfacesLibrary;
using ZennoLab.InterfacesLibrary.ProjectModel;
using ZennoLab.InterfacesLibrary.ProjectModel.Collections;
using ZennoLab.InterfacesLibrary.ProjectModel.Enums;
using ZennoLab.Macros;
using Global.ZennoExtensions;
using ZennoLab.Emulation;
//webmoney
using XmlInterfaces.General;
using WebMoney.BasicObjects;
using WebMoney.Cryptography;
using WebMoney.XmlInterfaces;
using WebMoney.XmlInterfaces.Configuration;
using CertificateValidator;
using Finance.Entities;
using NLog;
using log4net;
using BusinessTools.Logging;
using BusinessTools.Cryptography;

namespace ZennoLab.OwnCode
{
    public class Webmoney
    {
        static public string Main(string myXMLkey) //оригинал static void Main()
        {
            // xml-представление ключа WebMoney Keeper WinPro, полученное с помощью утилиты KeyExtractor 3.1
            string xmlKey = myXMLkey;

            Signer signer = new Signer();
            signer.Initialize(xmlKey);

            string signature = signer.Sign("message").ToString(); // подпись строки, я так полагаю, что сюда нужно передавать все данне о транзакции, но в какой момент и какие именно данные? Изначально в примере в эту функцию передавался массив строк Main(string[] args), но я переделал в Main(string myXMLkey), чтобы вызывать этот метод из C# и передавать от туда xml key, возможно это не правильно, но как правильно - не знаю)
            return signature;
        }
        /* пытался написать функцию для авторизации в коде приложения, но ругается на отсутствие объекта или класса Initializer, поэтому пока закомментил
        static public void Init(string myWMID,string myXMLkey)
        {
            var masterWmId = WmId.Parse(myWMID);// (WmId) 111111111111; // альтернативно можно записать WmId.Parse("111111111111")
            KeeperKey keeperKey = new KeeperKey(myXMLkey);

            var initializer = new Initializer(masterWmId, keeperKey);
            initializer.StartDate = new DateTime(1983, 1, 1).ToUniversalTime(); // для формирования ReqN
            initializer.Apply();
        }
        */
    }
}

7. Включил интерфейс X2 на странице https://merchant.webmoney.ru/conf/purses.asp (Без этого не получится использовать api)

8. Теперь нужно дописать метод получения баланса кошельков, и занести их в список или таблицу ZP, например.

В примере есть такой код:
Код:
Развернуть Свернуть Копировать
var purseInfoFilter = new PurseInfoFilter(primaryWmId);
var purseInfoRegister = purseInfoFilter.Submit();

foreach (var purseInfo in purseInfoRegister.PurseInfoList)
{
   Console.WriteLine(purseInfo.Purse + " " + purseInfo.Amount);
}

Полный мануал получения баланса:
http://wiki.webmoney.ru/projects/webmoney/wiki/Интерфейс_X9

9. Дописать метод перевода с кошельков, на которых баланс не равен нулю, на тот, что указан во входящих настройках шаба.

В примере код такой:
Код:
Развернуть Свернуть Копировать
var originalTransfer = new OriginalTransfer(2, new Purse(WmCurrency.Z, 1), Purse.Parse("Z123456789012"), Amount.Parse(1));
originalTransfer.Description = (Description) "Тестовый перевод";
originalTransfer.InvoiceId = recentInvoice.Id; // если перевод по счету

var recentTransfer = originalTransfer.Submit();

Полный мануал на перевод средств с одного кошелька на другой:
https://wiki.webmoney.ru/projects/webmoney/wiki/Интерфейс_X2


10. Может так будет уже проще разбираться и кто-нибудь сможет осилить?)
Или дать хоть какие-нибудь ориентиры, в какую сторону копать, как формировать подпись на основе транзакции, в какой момент и т.д.?


Да, метод static public string Main(string myXMLkey) выполняется успешно, если указываю во входных настройках полученный xml key из Key Extractor

И вот еще линк на все api:
https://wiki.webmoney.ru/projects/webmoney/wiki/WM-API


А этот линк на архив вместе с шаблоном описанном в этом посте, в нем в том числе и DDL, которые нужно положить в ExternalAssemblies:
https://yadi.sk/d/9EZxqUaBogNTT
 
Может перенести в раздел рекламы, чтобы привлечь внимание фрилансеров?
даже не знаю будет ли кто разбираться в библиотеках этих по собственному желанию просто так)
 
Может перенести в раздел рекламы, чтобы привлечь внимание фрилансеров?
даже не знаю будет ли кто разбираться в библиотеках этих по собственному желанию просто так)
Да я готов был бы и оплатить естественно) Если можно, то перенесите конечно)
 
Перенес и апнул тему. Надеюсь умельцы откликнуться
 

Кто просматривает тему: (Всего: 0, Пользователи: 0, Гости: 0)