Автоматизируйте работу с крипточеками системы Paymer через веб-методы:
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 header = new AuthHeader { Login = login, Password = password, Ip = ip, OuterLogId = userLogId, UserAgent = browserInfo }; Api.AuthHeaderValue = header; Api.Url = apiUrl;
GetCurrenciesRequest req = new GetCurrenciesRequest { Name = currName }; GetCurrenciesResponse resp = Api.GetCurrencies(req);
GetOptionsRequest reqo = new GetOptionsRequest { Cult = cult, Blockchain = blockchain, CryptoCurrName = resp.Currencies[0].Name, WithdrawAmount = amountDefaultOptions, Address = address }; GetOptionsResponse respo = Api.GetOptions(reqo);
// минимальная сумма вывода с учетом комиссии (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);
VerifyRequest reqv = new VerifyRequest { Number = number, Code = code }; VerifyResponse respv = Api.Verify(reqv);
// минимальные суммы для вывода. 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); }
// минимальные суммы для погашения. 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); }