我想编写程序在不使用任何第三方工具的情况下在银行和 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 + 轨道 2 信息。
- 为任何类型的购买过程提取的金额。
我希望将这些项目中的 2 项包含在我将发送给银行的 ISO 消息中。
我的问题是:
这是与银行互动的正确业务流程吗?我想得到任何建议。
是否可以将这些项目中的两个合并到一个 ISO 消息中,然后发送给银行?
请给我建议、任何引用资料或任何网络链接。
最佳答案
如果您要使用 ISO 8583 消息格式,则需要在以下字段之一中传递卡信息:
你可以用 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/