專案中遇到對接【MIS刷卡系統介面文件(for WINDOWS)】的同學可以參考使用
1. 介面呼叫事項需使用DllImport呼叫銀聯提供的/gmc/posinf.dll所以引數需連續拼接,引數為NULL需空格佔用引數均為byte[]型別長度部分長度單位為位元組2. 動態庫呼叫dll呼叫(posinf.dl)函式名為:int bankall (char * request,char *response),其中第一個引數為傳入引數。
3. C#呼叫方法 public static string UnionPay(Parameter m) { try { string request = string.Empty; byte[] response = new byte[2000]; request = m.CreditCardType; request += GetContent(m.POSMachine, 8, " "); request += GetContent(m.POSEmployee, 8, " "); request += m.TypeFlag; request += GetContent((Convert.ToDecimal(m.Amount) * 100).ToString("0"), 12, "0"); request += m.Date; request += GetContent(m.ReferenceNum, 12, " "); request += GetContent(m.VoucherNo, 6, " "); request += getTreeNumRandom(); request += m.ReservedDomain;//GetContent("", 500, " "); bankall(System.Text.Encoding.Default.GetBytes(request), response); Thread.Sleep(1000); return System.Text.Encoding.Default.GetString(response); } catch (Exception) { return "01"; } }
4. 呼叫引數 public class Parameter { /// <summary> /// 刷卡型別(2) /// </summary> public string CreditCardType { get; set; } /// <summary> /// POS機號(8) /// </summary> public string POSMachine { get; set; } /// <summary> /// POS員工號(8) /// </summary> public string POSEmployee { get; set; } /// <summary> /// 交易型別標誌(2) /// </summary> public string TypeFlag { get; set; } /// <summary> /// 金額(12) /// </summary> public string Amount { get; set; } /// <summary> /// 原交易日期(8) /// </summary> public string Date { get; set; } /// <summary> /// 原交易參考號(12) /// </summary> public string ReferenceNum { get; set; } /// <summary> /// 原憑證號(6) /// </summary> public string VoucherNo { get; set; } /// <summary> /// LRC校驗(3) /// </summary> public string LRCCheck { get; set; } /// <summary> /// 保留域(500) /// </summary> public string ReservedDomain { get; set; } }
5. 呼叫引數 /// <summary> /// 引數長度不夠增加 /// </summary> /// <param name="str">引數</param> /// <param name="leng">引數長度</param> /// <param name="type">佔用引數</param> /// <returns></returns> public static string GetContent(string str, int leng, string type) { string text = str; int strlen = str.Length; if (strlen < leng) { for (int i = strlen; i < leng; i++) { if (type == "0") { text = type + text; } else { text = text + type; } } } else if (strlen > leng) { text = str.Substring(0, leng); } else if (strlen == leng) { text = str; } return text; }
6. 獲得三位的隨機數 /// <summary> /// 獲得三位的隨機數 /// </summary> /// <returns></returns> public static string getTreeNumRandom() { Random ro = new Random(); int iResult; int iUp = 999; int iDown = 100; iResult = ro.Next(iDown, iUp); return iResult.ToString().Trim(); }
最新評論