c# - POS机与银行之间的支付

标签 c# payment credit-card bank iso8583

我想编写程序在不使用任何第三方工具的情况下在银行和 POS 终端设备之间进行通信。假设目前,该程序仅用于通过银行交换 IP 地址 + 端口号与特定银行通信。

首先,假设我通过在 POS 终端刷信用卡获得此输出。

%B1234123412341234
^CardUser/John^030510100000019301000000877000000?;1234123412341234=0305101193010877?

然后我根据这个 wiki link 将这些原始数据分类为轨道 1、格式 B 和轨道 2 .

轨道 1 格式 B

%
B
1234123412341234
^
CardUser/John
^
0305
101
00000019301000000877000000
?

轨道 2

;
1234123412341234
=
0305
101
193010877
?

然后,我将使用这个 code使用 C# 程序读取这些格式。

protected void CardReader_OTC(object sender, EventArgs e)
{
    bool CaretPresent = false;
    bool EqualPresent = false;

    CaretPresent = CardReader.Text.Contains("^");
    EqualPresent = CardReader.Text.Contains("=");

    if (CaretPresent)
    {
        string[] CardData = CardReader.Text.Split('^');
        //B1234123412341234^CardUser/John^030510100000019301000000877000000?

        PersonName.Text = FormatName(CardData[1]);
        CardNumber.Text = FormatCardNumber(CardData[0]);
        CardExpiration.Text = CardData[2].Substring(2, 2) + "/" + CardData[2].Substring(0, 2);
    }
    else if (EqualPresent)
    {
        string[] CardData = CardReader.Text.Split('=');
        //1234123412341234=0305101193010877?

        CardNumber.Text = FormatCardNumber(CardData[0]);
        CardExpiration.Text = CardData[1].Substring(2, 2) + "/" + CardData[1].Substring(0, 2);
    }
}

在我上面的所有代码之后,我想我需要使用 ISO 8583 messaging protocol将我的数据发送到银行。

我的数据将包括

  1. 轨道 1 + 轨道 2 信息。
  2. 为任何类型的购买过程提取的金额。

我希望将这些项目中的 2 项包含在我将发送给银行的 ISO 消息中。

我的问题是:

  1. 这是与银行互动的正确业务流程吗?我想得到任何建议。

  2. 是否可以将这些项目中的两个合并到一个 ISO 消息中,然后发送给银行?

请给我建议、任何引用资料或任何网络链接。

最佳答案

如果您要使用 ISO 8583 消息格式,则需要在以下字段之一中传递卡信息:

  • DE2 = 卡号
  • DE35 = 轨道 II
  • DE45 = 轨道 I

    你可以用 DE35 或 De45 通过 DE2,但没有人同时通过 35 和 45

    接下来你需要传递到期日期,它存储在 DE14 中

    你还需要传递这个是什么类型的交易,也就是DE3的前2位,00代表购买,11代表手工现金,剩下的可以是0000或者你指定账户类型那么第3位和第4位代表账户类型,其余为00,因为这些交易中没有To-Account

    你需要在字段DE4中传递金额

    你需要在DE11中传递一个trace number

    字段 DE41、DE42 和 DE43 也用于标识您正在使用的终端以及拥有此类终端的商户

    字段DE7、DE12用于指定交易的日期/时间

    字段DE49用于指定交易币种

    字段DE18很重要,指定您使用的POS终端的商户类别代码,即该商户遵循的事件类型

    DE19可以用来指定国家

    DE25为录入方式(你用的是芯片、磁条、人工录入?)

    这是您应该遵循的最低要求,但是,这取决于收单银行,他们要求的最低规范是什么

  • 关于c# - POS机与银行之间的支付,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8486129/

    相关文章:

    credit-card - 信用卡的最后 4 位数字有多独特?

    c# - 根据 DateTime 左移计算优先级

    ssl - 带有自签名证书的支付回调 URL https

    c# - 使用 Entity Framework 在 SQL 表中查找所有重复记录

    crash - EXC_BAD_ACES 购买应用内购买时,仅在第二次进入商店后

    android - Unity3d FB.canvas.pay Android 和 iOS 的替代方案

    php - 在Codeigniter中验证信用卡的最佳方法是什么

    c# - 如何在 C# 应用程序中接受信用卡付款?

    c# - 查找/编辑文件中的确切条目

    c# - 无需重新编译即可向 C# 应用程序添加功能的方法