以下这段代码是C解析8583报文,我直接从我们系统粘贴出来的,供大家参考。打日志log部分,请自行更改,TAG标签也可以根据你的55域做相应删减。

typedef struct
{
        char    sFldTag[5];
        char    sFldLen[3];
        int     nFldLen;
        char    sFldVal[65];
} T_F55_Sub_Fld;

/*--------------------------------------------------------------------------
 FUNCTION NAME: TxnChkIcData.
 DESCRIPTION:   pCardNo 卡号
 PARAMETER:     pCardSeqId 卡序列号,域23
                data IC卡数据域,域55
                len 域55头长度
 RETURN:        result :0 -success other-failure
 NOTE: xq 20150617
 *------------------------------------------------------------------------ */
int TxnChkIcData1(const char * pCardNo, const char * pCardSeqId, char *data, int *len)
{
  char  sHexData[255 * 2] = {0};
  char sCardSeqId[4];
  char sCardNo[20];
  char bank_code[9];
  int   nHexDataLen = (*len)*2;
  int nRet = 0;
  char sSrc[512];
  int msg_len = 0;

memset(sCardNo, 0x00, sizeof(sCardNo));
  memset(sCardSeqId, 0x00, sizeof(sCardSeqId));
  memcpy(sCardNo, pCardNo, 19);
  memcpy(sCardSeqId, pCardSeqId, 3);

memcpy(sHexData, data, nHexDataLen);
  vLogErr(0, "nHexDataLen=[%d],sHexData=[%s]",nHexDataLen,sHexData);

/* 解析IC卡数据 */
  T_F55_Sub_Fld  tF55SubFld4[16];
  T_F55_Sub_Fld  tF55SubFld2[15];
  memset(&tF55SubFld4, 0x00, sizeof(T_F55_Sub_Fld) * 15);
  memcpy(tF55SubFld4[0].sFldTag, "9F26", 4);    /* 应用密文 */
  memcpy(tF55SubFld4[1].sFldTag, "9F27", 4);    /* 密文信息数据 */
  memcpy(tF55SubFld4[2].sFldTag, "9F10", 4);    /* 发卡行应用数据 */
  memcpy(tF55SubFld4[3].sFldTag, "9F37", 4);    /* 不可预知数 */
  memcpy(tF55SubFld4[4].sFldTag, "9F36", 4);    /* 应用交易计数器 */
  memcpy(tF55SubFld4[5].sFldTag, "9F02", 4);    /* 授权金额 */
  memcpy(tF55SubFld4[6].sFldTag, "5F2A", 4);    /* 交易货币代码 */
  memcpy(tF55SubFld4[7].sFldTag, "9F1A", 4);    /* 终端国家代码 */
  memcpy(tF55SubFld4[8].sFldTag, "9F03", 4);    /* 其他金额 */
  memcpy(tF55SubFld4[9].sFldTag, "9F33", 4);    /* 终端性能 */
  memcpy(tF55SubFld4[10].sFldTag, "9F34", 4);
  memcpy(tF55SubFld4[11].sFldTag, "9F35", 4);
  memcpy(tF55SubFld4[12].sFldTag, "9F1E", 4);
  memcpy(tF55SubFld4[13].sFldTag, "9F63", 4);  /*银行编码*/
  memcpy(tF55SubFld4[15].sFldTag, "9F09", 4);
  memcpy(tF55SubFld4[14].sFldTag, "9F41", 4);
  memset(&tF55SubFld2, 0x00, sizeof(T_F55_Sub_Fld) * 15);
  memcpy(tF55SubFld2[0].sFldTag, "95", 2);    /* 终端验证结果 */
  memcpy(tF55SubFld2[1].sFldTag, "9A", 2);    /* 交易日期 */
  memcpy(tF55SubFld2[2].sFldTag, "9C", 2);    /* 交易类型 */
  memcpy(tF55SubFld2[3].sFldTag, "82", 2);    /* 应用交互特征 */
  memcpy(tF55SubFld2[4].sFldTag, "91", 4);    /* 发卡行验证数据 */
  memcpy(tF55SubFld2[5].sFldTag, "84", 4);
  memcpy(tF55SubFld2[6].sFldTag, "9A", 4);
  memcpy(tF55SubFld2[7].sFldTag, "9C", 4);

int    nHexDataPos = 0;
  int    nFldLen = 0;
  while (nHexDataPos < nHexDataLen)
  {
    char sTag[5] = {0};
    memcpy(sTag, &sHexData[nHexDataPos], 4);

int i = 0;
    for (i = 0; i < 16; i++)
    {
      if (memcmp(&sHexData[nHexDataPos], tF55SubFld4[i].sFldTag, 4) == 0)
      {
        nHexDataPos += 4;
        memcpy(tF55SubFld4[i].sFldLen, &sHexData[nHexDataPos], 2);
        if(tF55SubFld4[i].sFldLen[0] == '1')
                tF55SubFld4[i].nFldLen = fun(tF55SubFld4[i].sFldLen) * 2;
        else
          tF55SubFld4[i].nFldLen = atol(tF55SubFld4[i].sFldLen) * 2;
        nHexDataPos += 2;
        memcpy(tF55SubFld4[i].sFldVal, &sHexData[nHexDataPos], tF55SubFld4[i].nFldLen);
        nHexDataPos += tF55SubFld4[i].nFldLen;
        break;
      }
     }

if (i == 16)
    {
      memcpy(sTag, &sHexData[nHexDataPos], 2);
      for (i = 0; i < 8; i++)
      {
        if (memcmp(&sHexData[nHexDataPos], tF55SubFld2[i].sFldTag, 2) == 0)
        {
          nHexDataPos += 2;
          memcpy(tF55SubFld2[i].sFldLen, &sHexData[nHexDataPos], 2);
          tF55SubFld2[i].nFldLen = atol(tF55SubFld2[i].sFldLen) * 2;
          nHexDataPos += 2;
          memcpy(tF55SubFld2[i].sFldVal, &sHexData[nHexDataPos], tF55SubFld2[i].nFldLen);
          nHexDataPos += tF55SubFld2[i].nFldLen;
          break;
        }
      }
      if (i == 8)
      {
        break;
      }
    }
  }
#if 0
    vLogErr(0, "tF55SubFld4[0].nFldLen[%d]",tF55SubFld4[0].nFldLen);
    vLogErr(0, "tF55SubFld4[1].nFldLen[%d]",tF55SubFld4[1].nFldLen);
    vLogErr(0, "tF55SubFld4[2].nFldLen[%d]",tF55SubFld4[2].nFldLen);
    vLogErr(0, "tF55SubFld4[3].nFldLen[%d]",tF55SubFld4[3].nFldLen);
    vLogErr(0, "tF55SubFld4[4].nFldLen[%d]",tF55SubFld4[4].nFldLen);
    vLogErr(0, "tF55SubFld4[5].nFldLen[%d]",tF55SubFld4[5].nFldLen);
    vLogErr(0, "tF55SubFld4[6].nFldLen[%d]",tF55SubFld4[6].nFldLen);
    vLogErr(0, "tF55SubFld4[7].nFldLen[%d]",tF55SubFld4[7].nFldLen);
    vLogErr(0, "tF55SubFld4[8].nFldLen[%d]",tF55SubFld4[8].nFldLen);
    vLogErr(0, "tF55SubFld4[9].nFldLen[%d]",tF55SubFld4[9].nFldLen);
    vLogErr(0, "tF55SubFld4[13].nFldLen[%d]",tF55SubFld4[13].nFldLen);

vLogErr(0, "tF55SubFld4[0].sFldVal[%s]",tF55SubFld4[0].sFldVal);
    vLogErr(0, "tF55SubFld4[1].sFldVal[%s]",tF55SubFld4[1].sFldVal);
    vLogErr(0, "tF55SubFld4[2].sFldVal[%s]",tF55SubFld4[2].sFldVal);
    vLogErr(0, "tF55SubFld4[3].sFldVal[%s]",tF55SubFld4[3].sFldVal);
    vLogErr(0, "tF55SubFld4[4].sFldVal[%s]",tF55SubFld4[4].sFldVal);
    vLogErr(0, "tF55SubFld4[5].sFldVal[%s]",tF55SubFld4[5].sFldVal);
    vLogErr(0, "tF55SubFld4[6].sFldVal[%s]",tF55SubFld4[6].sFldVal);
    vLogErr(0, "tF55SubFld4[7].sFldVal[%s]",tF55SubFld4[7].sFldVal);
    vLogErr(0, "tF55SubFld4[8].sFldVal[%s]",tF55SubFld4[8].sFldVal);
    vLogErr(0, "tF55SubFld4[9].sFldVal[%s]",tF55SubFld4[9].sFldVal);
    vLogErr(0, "tF55SubFld4[13].sFldVal[%s]",tF55SubFld4[13].sFldVal);

vLogErr(0, "tF55SubFld2[0].nFldLen[%d]",tF55SubFld2[0].nFldLen);
    vLogErr(0, "tF55SubFld2[1].nFldLen[%d]",tF55SubFld2[1].nFldLen);
    vLogErr(0, "tF55SubFld2[2].nFldLen[%d]",tF55SubFld2[2].nFldLen);
    vLogErr(0, "tF55SubFld2[3].nFldLen[%d]",tF55SubFld2[3].nFldLen);

vLogErr(0, "tF55SubFld2[0].sFldVal[%s]",tF55SubFld2[0].sFldVal);
    vLogErr(0, "tF55SubFld2[1].sFldVal[%s]",tF55SubFld2[1].sFldVal);
    vLogErr(0, "tF55SubFld2[2].sFldVal[%s]",tF55SubFld2[2].sFldVal);
    vLogErr(0, "tF55SubFld2[3].sFldVal[%s]",tF55SubFld2[3].sFldVal);
#endif
}

C解析8583报文55域相关推荐

  1. java解析8583报文55域

    package com.xq.src; import java.util.ArrayList;   import java.util.HashMap;   import java.util.List; ...

  2. java 8583报文解析_java解析8583报文55域

    package com.xq.src; import java.util.ArrayList; import java.util.HashMap; import java.util.List; imp ...

  3. java 8583报文解析_8583报文 55域JAVA的解析

    银联55域 : 本域将根据不同的交易种类包含不同的子域.银联处理中心仅在受理方和发卡方之间传递这些适用于IC卡交易的特有数据,而不对它们进行任何修改和处理.  为适应该子域需要不断变化的情况  ,本域 ...

  4. java 传送解析8583报文_java发送ISO8583报文接口案例

    [实例简介] java发送ISO8583报文实现平安银行支付接口 [实例截图] [核心代码] pingAnBank └── pingAnBank ├── build.xml ├── client │  ...

  5. java 8583报文解析_ISO8583报文工具类(组装和解析报文) | 学步园

    很久没来csdn了.现在的工作地点在银行,妈的,不让上网啊. 写写博客其实是对自己知识的总结,这么长时间了,也该写点东西了.接触银行的项目,避免不了 遇上8583报文.具体介绍就不细讲了,这个网上一大 ...

  6. 银联8583报文规范详解

    银联8583报文规范详解 自己的理解 转载的内容 自己的理解 转载的内容 以下来自转载地址 https://www.jianshu.com/p/203ed7f632cf 一.什么是8583报文规范? ...

  7. 8583报文举例解读及推荐阅读

    一.推荐阅读 https://www.cnblogs.com/fenglan/p/6088690.html 这篇博客生动形象的解释了8583报文,首先推荐给之前一点都不了解8583报文的同学. 然后参 ...

  8. Spring 整合Socket实现8583报文服务

    银行业务需求实现一个8583的报文服务,实现后续业务. 然后作者在网上找了一个改造了一下.主要参考: https://www.tangyuecan.com/2019/01/11/spring-boot ...

  9. 8583报文解析1.0

    8583报文解析1.0 文章目录 8583报文解析1.0 一.规则 1.1:域规范简表 1.2:规范说明 1.2.1: 报文头 1.2.2: 操作类型 1.2.3: 位图:有效域明细 1.2.4:域规 ...

最新文章

  1. error aborting mysql,mysql错误1067,mysql1067错误aborting
  2. Leetcode 95. 不同的二叉搜索树 II 解题思路及C++实现
  3. 【Python】Time库的使用(含实例)
  4. html中盒子模型立体结构图
  5. CCF——图像旋转201503-1
  6. final、finally与finalize的区别
  7. linux怎样判断线程是否暂停_怎样判断股市是否会继续下跌?
  8. CentOS 6,7系统服务管理
  9. CSDN如何修改自己的博客名称
  10. matlab 边缘检测 抠图,ps如何调整边缘的流程:边缘检测、调整边缘、输出(调整边缘抠图...
  11. AtCoder Beginner Contest 161 C Replacing Integer 公式推导
  12. 用jxcell导出图表到excel
  13. 定位服务在iOS 8中不起作用
  14. 如何破解运动世界校园模拟器检测
  15. 深入了解中文版AutoCAD 2022:功能、优势和应用
  16. 物联网导论-自动识别技术
  17. 淘宝二维码显示与隐藏
  18. sqlserver数据库如何快速查看表结构sql
  19. 用ue4怎么制作一个物体故障闪烁的特效
  20. ARM的IRQ模式和FIQ模式

热门文章

  1. root 红米note5_怎么开启红米Note 5的ROOT权限
  2. Microbiome:40年施肥处理后固氮菌及氮固定受抑制
  3. 基于51单片机的RFID一卡通刷卡扣费充值系统设计原理图程序设计
  4. CCNA实验:实验二:交换机和路由器的IOS备份与恢复
  5. Google Earth Engine——可视化的美国加州圣华金河流域的100年气候预测模型
  6. matlab测量直流母线上的电压,基于模糊控制的有源滤波器直流母线电压控制
  7. Segment routing分段路由
  8. PredRNN++: Towards A Resolution of the Deep-in-Time Dilemma in Spatiotemporal Predictive Learning 翻译
  9. pythonGUI实现照片或证件照迅速更换自定义背景底色
  10. 手把手教你撸一个Web汇率计算器