繁体   English   中英

如何在C#Windows应用程序上启用POS付款?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM