如何将卡上的数据读入POS应用程序?
我被告知一些信息,如卡号和持有人的姓名显示在主管终端的屏幕上。为了将卡信息发送到POS主管应用程序,应该使用Keypress()
事件。
如何从POS卡刷卡机向POS应用程序发送卡信息?因为只需安装驱动程序并配置支付网关就不会向pos应用程序发送数据。我必须做些什么来使keypress()
事件执行?我确定开发人员必须编写代码才能从POS卡刷卡机获取该字符串数据。您是否足够慷慨地完成整个过程并显示一些示例代码(在线示例代码或您想要分享的代码)如何执行此操作?因为在卡刷卡上执行Keypress()
事件的地方没有办法吗?
答案 0 :(得分:1)
首先,这听起来像是PCI DSS的噩梦。在屏幕上显示卡信息是一个明确的问题,以下代码使您容易受到键盘记录和内存分析的影响。那说......
如果您预计会使用KeyPress
事件,我会假设您正在从键盘楔形MSR接收音轨信息,这非常简单 - 它只是吐出音轨纯文本信息。您可以使用KeyPress
事件来处理输入的每个字符,然后在轨道端标记上发送字符串(通常为?
):
为了简单起见,我们假设您正在刷入WinForms TextBox
:
在您的表单设计器中选择您的文本框,转到事件并添加KeyPress处理程序,或者在表单的InitializeComponent()
方法中,手动附加它:
this.textBox1.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.textBox1_KeyPress);
然后在Form的代码隐藏中定义您的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();
}
}
我们在这里做的是解析由滑动触发的每个KeyChar
事件参数上的KeyPress
。 ?
是单个曲目的典型结束哨兵,并且有两条曲目被认为是处理卡片所必需的(有关格式的更多信息,请参阅此处:http://en.wikipedia.org/wiki/Magnetic_stripe_card#Financial_cards) - 因此我们考虑卡片信息在第二首曲目结束时完成。
您需要定义上面引用的sendTrackInfo()
方法来格式化(删除标记,分隔等)并将您在trackInfo.ToString()
收集的曲目数据发送到您的主管应用程序,可能是XML或流。