我想制作程序在不使用任何第三方工具的情况下在银行和 POS 终端设备之间进行对话。假设,目前该程序仅用于通过银行切换IP地址+端口号与特定银行通话。
首先,让我们假设我通过在 POS 终端刷信用卡来获得此输出。
%B1234123412341234
^CardUser/John^030510100000019301000000877000000?;1234123412341234=0305101193010877?
然后我根据这个 wiki link 将这些原始数据分类为 Track 1、Format B 和 Track 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 将我的数据发送到银行。
我的数据将包括
我希望将这些项目中的 2 个包含在我将发送给银行的 ISO 消息中。
我的问题是:
请给我建议、任何引用资料或任何网络链接。
最佳答案
如果要使用 ISO 8583 消息格式,则需要在以下字段之一中传递卡信息:
你可以通过 DE2 和 DE35 或 De45 但没有人同时通过 35 和 45
接下来您需要传递存储在 DE14 中的到期日期
您还需要传递这是什么类型的交易,这是DE3的前2位数字,购买时为00,手动取款时为11,其余可以是0000,或者如果您指定帐户类型,则数字3和4 代表账户类型,其余为 00,因为这些交易中没有 To-Account
您需要在字段 DE4 中传递金额
您需要在 DE11 中传递跟踪号
字段 DE41、DE42 和 DE43 也用于识别您正在使用的终端和拥有此类终端的商家
字段 DE7、DE12 用于指定交易的日期/时间
字段 DE49 用于指定交易货币
字段 DE18 对于指定您使用的 POS 终端的商户类别代码很重要,这是该商户遵循的事件类型
DE19可用于指定国家
DE25为录入方式(你用的是芯片、磁条、手动录入?)
这是您应该遵循的最低要求,但是,这取决于收单银行,他们要求的最低规范是什么
关于c# - POS终端与银行之间的支付,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8486129/