public static NetexRequestPaymentResponseType Create(string userToken, EmailStack emailStack, ProxyStack proxyStack, NetexSettings settings, double amount, string phone, string btcAddr, ref List <string> usedProxyList) { ProxySettingsItem usedProxy = proxyStack.Next(ref usedProxyList); Request request = new Request() { BASE_URL = "https://api.netex24.net/", proxy = usedProxy, settings = settings }; NetexClient netex = new NetexClient() { request = request, settings = settings }; NetexRateItemType rate = netex .rates .Where( el => el.sourceCurrencyId == settings.sourceCurrencyId && el.targetCurrencyId == netex.targetCurrencyId ) .First <NetexRateItemType>(); double btcAmount = amount / rate.sourceAmount; string email = ""; var directionResponse = netex.ExchangeDirectionGetBy(userToken); netex.AddressValidator(btcAddr); NetexCreateResponseType createResponse = netex.Create(userToken, emailStack, phone, amount, btcAddr, btcAmount, ref email); NetexRequestPaymentResponseType requestPayment = netex.GetRequestPayment(createResponse.transactionId); requestPayment.btc_amount = btcAmount; requestPayment.ip = usedProxy == null ? "no proxy" : usedProxy.ip; requestPayment.email = email; return(requestPayment); }
static void Main(string[] args) { //args = new string[] { // "--create", // "5000", // "+79062532468", // "3DVobv7Pf5TVWdy7fykuSdWscy3kTS4MvV" //}; //args = new string[] { "--gettypebtcaddress" }; ServicePointManager.Expect100Continue = true; ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12; ServicePointManager.ServerCertificateValidationCallback = (sender, cert, chain, sslPolicyErrors) => true; NetexSettings settings = new NetexSettings(); settings.CreateIfNotExists(); settings.LoadSettings(); string USER_TOKEN = Guid.NewGuid().ToString(); DB db = new DB(); StorageModelDB storageDB = new StorageModelDB() { db = db }.MigrateUp(); StorageModelREG storageREG = new StorageModelREG(); EmailStorageModelDB emailStorageModel = new EmailStorageModelDB() { storageDB = storageDB }; EmailStack emailStack = new EmailStack() { allowEmails = settings.allowEmails, emailStorageModel = emailStorageModel }; EmailSender emailSender = new EmailSender() { settings = settings.email }; //proxy list create const string FILE_CREATE_PROXY = "ProxyListForCreate.json"; ProxyStorageModelMixed createProxyStorageModel = new ProxyStorageModelMixed(settings.registerKeyPrefix, settings.dbKeyPrefix, FILE_CREATE_PROXY) { storageDB = storageDB, storageREG = storageREG }; ProxySettings createProxySettings = new ProxySettings(FILE_CREATE_PROXY) { createProxyStorageModel = createProxyStorageModel }.LoadSettings(); ProxyStack createProxyStack = new ProxyStack() { settings = settings, emailSender = emailSender, proxySettings = createProxySettings, proxyStorageModel = createProxyStorageModel }; //proxy list rate const string FILE_RATE_PROXY = "ProxyListForRate.json"; ProxySettings rateProxySettings = new ProxySettings(FILE_RATE_PROXY).LoadSettings(); ProxyStorageModelMixed rateProxyStorageModel = new ProxyStorageModelMixed(settings.registerKeyPrefix, settings.dbKeyPrefix, FILE_RATE_PROXY) { storageDB = storageDB, storageREG = storageREG }; ProxyStack rateProxyStack = new ProxyStack() { settings = settings, emailSender = emailSender, proxySettings = rateProxySettings, proxyStorageModel = rateProxyStorageModel }; //proxy list type addr const string FILE_TYPEADDR_PROXY = "ProxyListForGetTypeAddr.json"; ProxySettings typeaddrProxySettings = new ProxySettings(FILE_TYPEADDR_PROXY).LoadSettings(); ProxyStorageModelMixed typeaddrProxyStorageModel = new ProxyStorageModelMixed(settings.registerKeyPrefix, settings.dbKeyPrefix, FILE_TYPEADDR_PROXY) { storageDB = storageDB, storageREG = storageREG }; ProxyStack typeaddrProxyStack = new ProxyStack() { settings = settings, emailSender = emailSender, proxySettings = typeaddrProxySettings, proxyStorageModel = typeaddrProxyStorageModel }; try { if (args.Length == 0) { Console.WriteLine(CheckCapcha(createProxyStack, settings)); Console.WriteLine("\n==========================================\n"); Console.WriteLine("Check proxy " + FILE_TYPEADDR_PROXY + ":"); CheckAllProxy(typeaddrProxyStack, typeaddrProxySettings, settings); Console.WriteLine("\n==========================================\n"); Console.WriteLine("Check proxy " + FILE_CREATE_PROXY + ":"); CheckAllProxy(createProxyStack, createProxySettings, settings); Console.ReadKey(); return; } //первым делом установи доступную валюту switch (args[ACTION_ID]) { case "--rate": Console.WriteLine(Rate(rateProxyStack.First(), settings)); break; case "--create": double amount = -1; try { amount = double.Parse(args[1].Replace(',', '.')); } catch (Exception) { amount = double.Parse(args[1].Replace('.', ',')); } string phone = PhoneHelper.PhoneReplacer(args[2]); string btcAddr = args[3]; List <string> usedProxyList = new List <string>(); int cntTry = settings.maxTryReCreate; do { try { NetexRequestPaymentResponseType response = Create(USER_TOKEN, emailStack, createProxyStack, settings, amount, phone, btcAddr, ref usedProxyList); response.used_proxy_list = usedProxyList.ToArray(); Console.WriteLine(response.toJson()); if (WRITE_DEBUG) { Console.ReadKey(); } return; } catch (Exception) { } } while (--cntTry > 0); break; case "--gettypebtcaddress": if (typeaddrProxyStack.proxySettings.items.Count() == 0) { Console.WriteLine( new GetTypeBtcAddressResponse() { btc_addresstype = "", target_currency_id = 106 }.toJson() ); if (WRITE_DEBUG) { Console.ReadKey(); } return; } Console.WriteLine(GetTypeBtcAddress(typeaddrProxyStack.First(), settings)); if (WRITE_DEBUG) { Console.ReadKey(); } break; case "--getallowcurrenciesids": Console.WriteLine(GetAllowCurrenciesIds(typeaddrProxyStack.First(), settings)); if (WRITE_DEBUG) { Console.ReadKey(); } break; case "--checkallproxy": CheckAllProxy(createProxyStack, createProxySettings, settings); if (WRITE_DEBUG) { Console.ReadKey(); } break; default: if (args[ACTION_ID].Substring(args[ACTION_ID].Length - 4).Trim().ToLower() == ".txt") { AddNexProxy(args[ACTION_ID], createProxySettings); } break; } } catch (Exception ex) { if (TEST) { Console.WriteLine(ex.Message); } } }