Пытаюсь сам осилить, но знаний 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