[英]How to enable POS payment on my C# windows application?
如何将卡上的数据读取到POS应用程序?
有人告诉我某些信息,例如卡号和持卡人的姓名,显示在主管终端的屏幕上。 为了将卡信息发送到POS管理员应用程序,应该使用Keypress()
事件。
如何从POS刷卡机向POS应用发送卡信息? 因为仅安装驱动程序和配置支付网关就不会将数据发送到pos应用。 我必须怎么做才能使keypress()
事件执行? 确保开发人员必须编写代码才能从POS卡刷卡机获取该字符串数据。 您是否足够慷慨地完成整个过程并显示一些示例代码(在线示例代码或您想共享的一些代码),以了解如何执行此操作? 因为没有办法Keypress()
不可能在刷卡时在哪里执行Keypress()
事件?
首先,这听起来像是PCI DSS的噩梦。 在屏幕上显示卡信息是一个确定的问题,以下代码使您容易受到键盘记录和内存解析的影响。 那个...
如果期望为此使用KeyPress
事件,我假设您是从键盘楔MSR接收轨道信息的,这非常简单-它只是以纯文本形式显示轨道信息。 您可以使用KeyPress
事件来处理输入的每个字符,然后在跟踪结束标记(通常为?
)上发送字符串:
为了简单起见,假设您要刷入WinForms TextBox
:
在表单设计器中,选择文本框,转到“事件”并添加KeyPress处理程序,或者在表单的InitializeComponent()
方法中,手动附加它:
this.textBox1.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.textBox1_KeyPress);
然后在表单的代码后面定义您的KeyPress事件:
private StringBuilder trackInfo;
private bool track1Complete = false;
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar != '?' && !track1Complete)
{
trackInfo.Append(e.KeyChar);
}
else if (e.KeyChar == '?' && !track1Complete)
{
trackInfo.Append(e.KeyChar);
trackInfo.AppendLine();
track1Complete = true;
}
else if (e.KeyChar != '?' && track1Complete)
{
trackInfo.Append(e.KeyChar);
}
else if (e.KeyChar == '?' && track1Complete)
{
trackInfo.Append(e.KeyChar);
trackInfo.AppendLine();
sendTrackInfo();
}
}
我们在这里所做的是在滑动触发的每个KeyPress
事件参数上解析KeyChar
。 ?
是单个轨道的典型末端标记,并且有两个轨道被认为是处理卡所必需的(有关此格式的更多信息,请参见此处: http : //en.wikipedia.org/wiki/Magnetic_stripe_card#Financial_cards )-因此我们认为卡信息在第二条轨道的末尾完成。
您将需要定义sendTrackInfo()
方法进行格式化(删除标记,分离等),并将您在trackInfo.ToString()
收集的跟踪数据发送到您的主管应用程序,可能是XML或流。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.