Веб-методы Paymer для работы с крипточеками

Автоматизируйте работу с крипточеками системы Paymer через веб-методы:

  • AuthHeader — Soap-заголовок веб-методов
  • GetCurrencies — получение списка валют с параметрами
  • GetOptions — получение опций вывода на криптоадрес по параметрам
  • Verify — получение параметров крипточека для последующих операций с ним
  • TopupInitiate — инициализация пополнения крипточека с последующей оплате на WebMoney-merchant
  • TopupNewNumber — создание пополненного крипточека с WM-транзакции USDT
  • TopupExistingNumber — пополнение уже существующего крипточека с WM-транзакции USDT
  • Withdraw — вывод на криптоадрес
  • Redeem — погашение на WebMoney-кошелек
Поддерживается обращение чека к операциям по шаблону: https://paymer.com/c3/Home/Index?n={number}&c={code}

Пример вызова цепочки методов

можно вызывать сверху вниз с перерывом на пополнение чека по ссылке полученной в результате вызова TopupInitiate

Переменные

string apiUrl = "https://paymer.com/c3/ws/ApiPub.asmx"; // Api - экземпляр вебсервиса (в коде ниже)
string login = API_HEADER_LOGIN; // выдается администратором сервиса
string password = API_HEADER_PASSWORD; // выдается администратором сервиса
string ip = USER_IP;
string browserInfo = USER_BROWSER_INFO;
string cult = USER_CULTURE;

string address = CRYPTO_ADDRESS;
string currName = CRYPTO_CURRENCY_NAME;
string blockchain = BLOCKCHAIN;

string number = PAYMER_NUMBER;
string code = PAYMER_CODE;

string purse = PAYMER_WMPURSE;
string redeemMemo = PAYMER_REDEEM_MEMO;

long userLogId = USER_LOG_ID
decimal amountDefaultOptions = 0.01m; // значение по умолчанию для вызова GetOptions, можно указать своё

AuthHeader: Soap-заголовок, используется при вызове всех методов

AuthHeader header = new AuthHeader
{
    Login = login,
    Password = password,
    Ip = ip,
    OuterLogId = userLogId,
    UserAgent = browserInfo
};
Api.AuthHeaderValue = header;
Api.Url = apiUrl;

GetCurrencies: получение списка валют, поддерживаемых системой

GetCurrenciesRequest req = new GetCurrenciesRequest { Name = currName };
GetCurrenciesResponse resp = Api.GetCurrencies(req);

GetOptions: получение общих параметров по типу валюты, сумме, адресу для вызова криптоопераций

GetOptionsRequest reqo = new GetOptionsRequest
{
    Cult = cult,
    Blockchain = blockchain,
    CryptoCurrName = resp.Currencies[0].Name,
    WithdrawAmount = amountDefaultOptions,
    Address = address
};
GetOptionsResponse respo = Api.GetOptions(reqo);

TopupInitiate: получение ссылки для оплаты на WebMoney-мерчант, в результате оплаты которой чек будет пополнен

// минимальная сумма вывода с учетом комиссии (RedeemWm или Withdraw зависит от того, что требуется вызвать). как минимум чек нужно пополнить для теста на эту сумму
decimal amountMinTopup = currName == "USDT"
    ? respo.RedeemWm.MinAmount + respo.RedeemWm.MinFee
    : respo.Withdraw.MinAmount + respo.Withdraw.MinFee;

TopupInitRequest reqt = new TopupInitRequest
{
    Cult = cult,
    Currency = currName,
    TopupAmount = amountMinTopup,
    Method = TopupMethod.WebMoney
};

TopupInitResponse respt = Api.TopupInitiate(reqt);

Verify: проверка баланса (необходимая сумма для вывода плюс комиссия)

VerifyRequest reqv = new VerifyRequest
{
    Number = number,
    Code = code
};
VerifyResponse respv = Api.Verify(reqv);

Withdraw: вывод на криптоадрес (вызывать после оплаты полученной ссылки TopupInitiate и проверки баланса Verify)

// минимальные суммы для вывода. respo - результат GetOptions()
decimal withdrawFee = respo.Withdraw.MinFee;
decimal withdrawAmount = respo.Withdraw.MinAmount;

// respv - результат Verify()
if (respv.Balance >= withdrawAmount + withdrawFee)
{
    WithdrawNoteRequest reqw = new WithdrawNoteRequest
    {
        Address = address,
        Amount = withdrawAmount,
        Blockchain = blockchain,
        Number = number,
        Code = code,
        Fee = withdrawFee,
        WithdrawType = respo.Withdraw.WithdrawType,
        Cult = cult
    };

    WithdrawNoteResponse respw = Api.Withdraw(reqw);
}

Redeem: погашение на WebMoney-кошелек (вызывать после оплаты полученной ссылки TopupInitiate и проверки баланса Verify)

// минимальные суммы для погашения. respo - результат GetOptions()
decimal redeemFee = respo.RedeemWm.MinFee;
decimal redeemAmount = respo.RedeemWm.MinAmount;

// respv - результат Verify()
if (respv.Balance >= redeemAmount + redeemFee)
{
    RedeemNoteRequest reqr = new RedeemNoteRequest
    {
        Number = number,
        Code = code,
        Amount = redeemAmount,
        Memo = redeemMemo,
        Purse = purse
    };

    RedeemNoteResponse respr = Api.Redeem(reqr);
}