如何在我的 C# windows 应用程序上启用 POS 支付?

How to enable POS payment on my C# windows application?

如何将卡上的数据读取到POS应用程序?

我被告知一些信息,例如卡号和持卡人姓名显示在主管终端的屏幕上。为了将卡信息发送到 POS 主管应用程序,应该使用 Keypress() 事件。

如何将POS刷卡机的卡片信息发送到POS app?因为仅通过安装驱动程序和配置支付网关不会将数据发送到 pos 应用程序。我必须做什么才能使 keypress() 事件执行?我确定开发人员必须编写代码才能从 POS 刷卡机获取该字符串数据。您是否足够慷慨地完成整个过程并展示一些示例代码(在线示例代码或您想要共享的一些代码)来说明如何做?因为刷卡时 Keypress() 事件无法执行?

首先,这听起来像是 PCI DSS 的噩梦。在屏幕上显示卡信息是一个明确的问题,下面的代码使您容易受到键盘记录和内存解析的攻击。也就是说...

如果您希望为此使用 KeyPress 事件,我假设您正在从键盘楔形 MSR 接收曲目信息,这非常简单 - 它只是吐出曲目信息纯文本。您可以使用 KeyPress 事件来处理输入的每个字符,然后在轨道结束标记(通常为 ?)上发送字符串:

为了简单起见,我们假设您正在滑动到 WinForms TextBox:

在您的表单设计器 select 您的文本框中,转到事件并添加一个 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 中或作为流。