koreets2011
Full Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Добрый день! Решил поизучать тему и поэкспериментировать с эквайринговыми терминалами, скачал DualConnector.dll подключил ее к Visual Studio, почитал документацию: "Для асинхронного вызова «Exchange», необходимо подписаться на событие «OnExchange»" Ошибка возникает в этом месте: [и]dclink.OnExchange += new OnExchangeHandler(dclink_OnExchange);[/и] и как бы я не описывал dclink_OnExchange всегда получаю ошибку: "Нет перегруженного метода для dclink_OnExchange, который соответствует делегату OnExchangeHandler" Можно конечно обойтись и синхронным методом, но тогда программа не может обработать отмену операции Что сделал Код: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using System.IO; using System.Threading; using SBRFPinpad; using DualConnector; using System.Net; using Newtonsoft.Json.Linq; using System.Windows.Input; using System.Management; namespace WindowsFormsApp1 { public partial class Form1 : Form { public DualConnector.DCLink dclink = new DualConnector.DCLink(); public DualConnector.ISAPacket query = new DualConnector.SAPacket(); public DualConnector.ISAPacket _response = new DualConnector.SAPacket(); public SBRFPinpad.SBRFPinpad _SBRF = new SBRFPinpad.SBRFPinpad(); public HttpListener server = new HttpListener(); public Form1() { InitializeComponent(); server.Prefixes.Add("http://127.0.0.1:8888/"); backgroundWorker2.WorkerReportsProgress = true; backgroundWorker2.WorkerSupportsCancellation = true; richTextBox1.Text = "Сервер запущен по адресу\r\n127.0.0.1:8888"; } private void Form1_Load(object sender, EventArgs e) { server.Start(); backgroundWorker2.RunWorkerAsync(); } private void backgroundWorker2_DoWork(object sender, DoWorkEventArgs e) { if (request.HttpMethod == "POST") { System.IO.Stream body = request.InputStream; System.Text.Encoding encoding = request.ContentEncoding; System.IO.StreamReader reader = new System.IO.StreamReader(body, encoding); if (request.ContentType != null) { string postData = reader.ReadToEnd(); var jsonData = JObject.Parse(postData); string cmd = (string)jsonData.SelectToken("cmd"); string dataCard = "{}"; if (cmd == "dc_pay") { query.Amount = "10"; query.CurrencyCode = "643"; query.OperationCode = 1; query.TerminalID = "ХХХХХХХХХХ"; int res = dclink.InitResources(); if (res != 0) { MessageBox.Show(string.Format("Init resource:{0}-{1}", res, dclink.ErrorDescription)); } dclink.OnExchange += new OnExchangeHandler(dclink_OnExchange); dclink.Dispose(); } else if (cmd == "dc_cancel") { Console.WriteLine("dc_cancel"); int res = dclink.Cancel(); Console.WriteLine(res); } } } } private void backgroundWorker2_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) { if (e.Cancelled == true) { Console.WriteLine("Canceled!"); } else if (e.Error != null) { Console.WriteLine("Error: " + e.Error.Message); } else { Console.WriteLine("Done!"); backgroundWorker2.RunWorkerAsync(); } } } } | |