ma.rad
پنج شنبه 17 خرداد 1403, 16:47 عصر
باسلام خدمت دوستان
کد اتصال دستگاه پز با کابل شبکه رو میخواستم
بتونم یه مبلغی به دستگاه ارسال کنم و نتیجه تراکنش از دستگاه بگیرم
کدی رو میخوام که عمومی هست و چون سوال کردم دستگاههایی که قرار باهاش کار کنیم اتصال مستقیم و با کابل شبکه هست و نیاز به درایور نداره
shahryari
سه شنبه 22 خرداد 1403, 23:54 عصر
.............
shahryari
سه شنبه 22 خرداد 1403, 23:58 عصر
سلام
برای اتصال کارتخوان باید اطلاعات را در قالب json بفرستی به آی پی و پورت دستگاه و یه یک timeout بدی بهش که مشتزی کارت بکشه و رمز را وارد کنه و نتیجه هم در قالب json برمیگرده
پ ن: آی پی و پورت توسط شرکت ست میشه البته خودتم با داشتن رمز سیستم میتونی در ثانی باید فریمور خود کارتخوان آپدیت بشه که این قابلیت رو داشته باشه
پ ن 2: قالب و فیلدهای json ممکنه در شرکت های مختلف فرق بکنه
(برای تجارت الکترونیک پارسیان به شرح زیر)
void sendForPay(long amount) {
System.Net.Sockets.TcpClient client = null;
try {
System.Net.ServicePointManager.Expect100Continue = false;
byte[,] resvCommand;
client = new System.Net.Sockets.TcpClient("192.168.1.20", 2020);
if (!client.Connected) {
MsgBox2("پورت یا آی پی دستگاه اشتباه است");
return;
}
NetworkStream stream = client.GetStream();
string str_comm = "{|cmd|:10,|amount|:*}";
str_comm = str_comm.Replace("|", '"').Replace("*", amount);
str_comm = (str_comm.Length.ToString().PadLeft(4, "0") + str_comm);
byte[] sendCommand = System.Text.Encoding.UTF8.GetBytes(str_comm);
stream.Write(sendCommand, 0, sendCommand.Length);
stream.Flush();
stream.ReadTimeout = Int32.Parse("180000");
int recvSize = stream.Read(resvCommand, 0, resvCommand.Length);
string jsonStr = Encoding.UTF8.GetString(resvCommand);
jsonStr = jsonStr.Substring(4, (jsonStr.Length - 4));
Dictionary<string, string> values = Newtonsoft.Json.JsonConvert.DeserializeObject(Of, Dictionary(Of, String, String))[jsonStr];
ParseJson(values);
client.Close();
}
catch (Exception ex) {
lbl_pm.Text = "خطا در تراکنش";
}
}
private void ParseJson(Dictionary<string, string> values) {
string rep = values("resp");
string cmd = values("cmd");
if ((cmd == "10")) {
if ((double.Parse(rep) == 0)) {
string pan = values("pan"); // شماره کارت
string trace = values("trace");
string rrn = values("rrn"); // کد ارجاع
string terminal = values("terminal");
string serial = values("serial");
string amount = values("amount");
}
else {
lbl_pm.Text = "خطا در تراکنش";
}
}
}
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.