📄 converse.cpre
字号:
/* * This is a part of the Application Preconsole * - Service Provide - DSI. * Copyright (C) 2000-2000 ABC.SDC. * All rights reserved. * * This source code is only intended as a supplement to the * Application Preconsole Reference and related * electronic documentation provided with the library. * See these sources for detailed information regarding the * Application Preconsole product. * * Update record: * 2001-08-29 Shuming Pang - create implementation file for * converting functions */#include "ap.h"#include "apsp.h"EXEC SQL INCLUDE sqlca;EXEC SQL INCLUDE "dsi.h";EXEC SQL INCLUDE "dsiext.h";PCSTR pszRespCode[][2] ={ {"00", AP_RESPCODE_ACCEPT }, /* 承兑或交易成功 */ {"01", AP_RESPCODE_CARD_REFISSUE }, /* 查发卡方 */ {"02", AP_RESPCODE_CARD_REFISSUE }, /* 查发卡方的特殊条件 */ {"03", AP_RESPCODE_MERCH_INVALID }, /* 无效商户 */ {"04", AP_RESPCODE_CARD_CONFISCATE }, /* 没收卡 */ {"05", AP_RESPCODE_REJECT }, /* 不予承兑 */ {"06", AP_RESPCODE_SYSERR }, /* 出错 */ {"07", AP_RESPCODE_CARD_CONFISCATE }, /* 特殊条件下没收卡 */ {"09", AP_RESPCODE_ORGTRANS_INPROC }, /* 请求正在处理中 */ {"12", AP_RESPCODE_REJECT }, /* 无效交易 */ {"13", AP_RESPCODE_AMT_INVALID }, /* 无效金额 */ {"14", AP_RESPCODE_CARDNO_INVALID }, /* 无效卡号 */ {"15", AP_RESPCODE_CARD_NOTACCEPT }, /* 无此发卡方 */ {"19", AP_RESPCODE_SERVICE_RETRY }, /* 重新送入交易 */ {"20", AP_RESPCODE_REJECT }, /* 无效应答 */ {"21", AP_RESPCODE_REJECT }, /* 不作任何处理 */ {"22", AP_RESPCODE_REJECT }, /* 怀疑操作有误 */ {"23", AP_RESPCODE_FEE_ERR }, /* 不可接受的交易费 */ {"25", AP_RESPCODE_ORGTRANS_NOTEXIST }, /* 未能找到文件上记录 */ {"30", AP_RESPCODE_SYSERR }, /* 格式错误 */ {"31", AP_RESPCODE_CARD_NOTACCEPT }, /* 交换中心不支持的银行 */ {"33", AP_RESPCODE_CARD_CONFISCATE }, /* 过期的卡(没收卡) */ {"34", AP_RESPCODE_CARD_CONFISCATE }, /* 有作弊嫌疑(没收卡) */ {"35", AP_RESPCODE_CARD_CONFISCATE }, /* 与安保部门联系(没收卡)*/ {"36", AP_RESPCODE_CARD_CONFISCATE }, /* 受限制的卡(没收卡)*/ {"37", AP_RESPCODE_CARD_CONFISCATE }, /* 呼受理方安保部门(没收卡)*/ {"38", AP_RESPCODE_CARD_CONFISCATE }, /* PIN输入次数超限(没收卡)*/ {"39", AP_RESPCODE_ACC_NOTEXIST }, /* 无此信用卡帐户 */ {"40", AP_RESPCODE_SERVICE_NOTSUPPORT }, /* 请求的功能尚不支持 */ {"41", AP_RESPCODE_CARD_CONFISCATE }, /* 挂失卡(没收卡)*/ {"42", AP_RESPCODE_ACC_NOTEXIST }, /* 无此帐户 */ {"43", AP_RESPCODE_CARD_CONFISCATE }, /* 被窃卡(没收卡)*/ {"44", AP_RESPCODE_ACC_NOTEXIST }, /* 无此投资帐户 */ {"51", AP_RESPCODE_ACC_BALLACK }, /* 无足够的存款 */ {"52", AP_RESPCODE_ACC_NOTEXIST }, /* 无此支票帐户 */ {"53", AP_RESPCODE_ACC_NOTEXIST }, /* 无此储蓄卡帐户 */ {"54", AP_RESPCODE_CARD_EXPIRED }, /* 过期的卡 */ {"55", AP_RESPCODE_ACCPWD_ERR }, /* 不正确的PIN */ {"56", AP_RESPCODE_ACC_NOTEXIST }, /* 无此卡记录 */ {"57", AP_RESPCODE_SERVICE_NOTSUPPORT }, /* 不允许持卡人进行的交易 */ {"58", AP_RESPCODE_SERVICE_NOTSUPPORT }, /* 不允许终端进行的交易 */ {"59", AP_RESPCODE_REJECT }, /* 有作弊嫌疑 */ {"60", AP_RESPCODE_REJECT }, /* 与安保部门联系 */ {"61", AP_RESPCODE_AMT_OUTLMT }, /* 超出取款金额限制 */ {"62", AP_RESPCODE_REJECT }, /* 受限制的卡 */ {"63", AP_RESPCODE_REJECT }, /* 违反安保规定 */ {"64", AP_RESPCODE_ORGTRANS_AMTERR }, /* 原始金额不正确 */ {"65", AP_RESPCODE_WITHDRAWTIME_OUTLMT }, /* 超出取款次数限制 */ {"66", AP_RESPCODE_REJECT }, /* 呼安保部门 */ {"67", AP_RESPCODE_CARD_CONFISCATE }, /* 捕捉(没收卡)*/ {"68", AP_RESPCODE_REJECT }, /* 收到的回答太迟 */ {"75", AP_RESPCODE_ACCPWD_TIMEOUTLMT }, /* PIN 输入次数超限 */ {"90", AP_RESPCODE_SYS_INTERMIT }, /* 日期切换正在处理 */ {"91", AP_RESPCODE_SYS_INTERMIT }, /* 发卡方或交换中心不能操作 */ {"92", AP_RESPCODE_CARD_NOTACCEPT }, /* 目标机构找不到或无法达到 */ {"93", AP_RESPCODE_REJECT }, /* 交易违法、不能完成 */ {"94", AP_RESPCODE_SYSERR }, /* 重复交易 */ {"95", AP_RESPCODE_SYSERR }, /* 调节控制错 */ {"96", AP_RESPCODE_SYSERR }, /* 系统异常、失效 */ {"97", AP_RESPCODE_REQID_INVALID }, /* ATM/POS 终端号找不到 */ {"98", AP_RESPCODE_SYSERR }, /* 交换中心收不到发卡方应答 */ {"99", AP_RESPCODE_ACCPWD_ERR }, /* PIN 格式错 */ {"A0", AP_RESPCODE_SYSERR }, /* MAC鉴别失败 */ {NULL, NULL }};RESULT GetPan(PXMLSTRU pxmlstruReq, PISO8583STRU piso8583stru){ char szAccNo[AP_LEN_ACCNO + 1]; ASSERT_NORMAL(AP_DEMAND(AP_PATH_ACCNO, szAccNo)); ASSERT_NORMAL(SetBitInIso8583(piso8583stru, BIT_PAN, szAccNo, strlen(szAccNo))); return NORMAL;}RESULT GetTransAmt(PXMLSTRU pxmlstruReq, PISO8583STRU piso8583stru){ char szAmt[AP_LEN_AMT + 1]; char szTransAmt[SIZE_TRANSAMT + 1]; ASSERT_NORMAL(AP_DEMAND(AP_PATH_AMT, szAmt)); sprintf(szTransAmt, "%012.0lf", atof(szAmt) * 100); ASSERT_NORMAL(SetBitInIso8583(piso8583stru, BIT_TRANSAMT, szTransAmt, SIZE_TRANSAMT)); return NORMAL;}RESULT GetTransmissDateTime(PISO8583STRU piso8583stru){ TIMESTRU timestru; char szTransmissDateTime[SIZE_TRANSMISSDATETIME + 1]; timestru = GetTime(); sprintf(szTransmissDateTime, "%02d%02d%02d%02d%02d", timestru.nMon, timestru.nDay, timestru.nHour, timestru.nMin, timestru.nSec); ASSERT_NORMAL(SetBitInIso8583(piso8583stru, BIT_TRANSMISSDATETIME, szTransmissDateTime, SIZE_TRANSMISSDATETIME)); return NORMAL;}RESULT GetTraceNo(PXMLSTRU pxmlstruReq, PISO8583STRU piso8583stru){ char szSeqNo[AP_LEN_SEQNO + 1]; ASSERT_NORMAL(AP_DEMAND(AP_PATH_SEQNO, szSeqNo)); ASSERT_NORMAL(SetBitInIso8583(piso8583stru, BIT_TRACENO, szSeqNo + 6, SIZE_TRACENO)); return NORMAL;}RESULT GetLocalTransDate(PXMLSTRU pxmlstruReq, PISO8583STRU piso8583stru){ char szReqDate[AP_LEN_DATE + 1]; ASSERT_NORMAL(AP_DEMAND(AP_PATH_REQDATE, szReqDate)); ASSERT_NORMAL(SetBitInIso8583(piso8583stru, BIT_LOCALTRANSDATE, szReqDate + 4, SIZE_LOCALTRANSDATE)); return NORMAL;}RESULT GetLocalTransTime(PXMLSTRU pxmlstruReq, PISO8583STRU piso8583stru){ char szReqTime[AP_LEN_TIME + 1]; ASSERT_NORMAL(AP_DEMAND(AP_PATH_REQTIME, szReqTime)); ASSERT_NORMAL(SetBitInIso8583(piso8583stru, BIT_LOCALTRANSTIME, szReqTime, SIZE_LOCALTRANSTIME)); return NORMAL;}RESULT GetMerchType(PXMLSTRU pxmlstruReq, PISO8583STRU piso8583stru){ char szMerchType[AP_LEN_MERCHTYPE + 1]; char szReqType[AP_LEN_REQTYPE + 1]; ASSERT_NORMAL(AP_DEMAND(AP_PATH_REQTYPE, szReqType)); if (strcmp(szReqType, AP_REQTYPE_ATM) == 0) strcpy(szMerchType, "6011"); else ASSERT_NORMAL(AP_DEMAND(AP_PATH_MERCHTYPE, szMerchType)); ASSERT_NORMAL(SetBitInIso8583(piso8583stru, BIT_MERCHTYPE, szMerchType, SIZE_MERCHTYPE)); return NORMAL;}RESULT GetEntryMode(PXMLSTRU pxmlstruReq, PISO8583STRU piso8583stru){ char szTrackVerify[1 + 1]; char szEntryMode[SIZE_ENTRYMODE + 1]; char szAccPwd[AP_LEN_ACCPWD + 1]; ASSERT_NORMAL(AP_DEMAND(AP_PATH_TRACKVERIFY, szTrackVerify)); if (strcmp(szTrackVerify, "Y") == 0) strcpy(szEntryMode, "02"); else strcpy(szEntryMode, "01"); if (AP_DEMAND(AP_PATH_ACCPWD, szAccPwd) == NORMAL) strcat(szEntryMode, "1"); else strcat(szEntryMode, "2"); ASSERT_NORMAL(SetBitInIso8583(piso8583stru, BIT_ENTRYMODE, szEntryMode, SIZE_ENTRYMODE)); return NORMAL;}RESULT GetConditionCode(PXMLSTRU pxmlstruReq, PISO8583STRU piso8583stru){ char szReqType[AP_LEN_REQTYPE + 1]; char szTransCode[AP_LEN_TRANSCODE + 1]; char szConditionCode[SIZE_CONDITIONCODE + 1]; ASSERT_NORMAL(AP_DEMAND(AP_PATH_REQTYPE, szReqType)); ASSERT_NORMAL(AP_DEMAND(AP_PATH_TRANSCODE, szTransCode)); if (strcmp(szReqType, AP_REQTYPE_ATM) == 0) strcpy(szConditionCode, "02"); else if (strcmp(szTransCode, AP_TRANSCODE_CS_AUTH) == 0 || strcmp(szTransCode, AP_TRANSCODE_CS_AUTHSETTLE) == 0) strcpy(szConditionCode, "06"); else strcpy(szConditionCode, "00"); ASSERT_NORMAL(SetBitInIso8583(piso8583stru, BIT_CONDITIONCODE, szConditionCode, SIZE_CONDITIONCODE)); return NORMAL;}RESULT GetPinCaptureCode(PXMLSTRU pxmlstruReq, PISO8583STRU piso8583stru){ char szAccPwd[AP_LEN_ACCPWD + 1]; if (AP_DEMAND(AP_PATH_ACCPWD, szAccPwd) == NORMAL) ASSERT_NORMAL(SetBitInIso8583(piso8583stru, BIT_PINCAPTURECODE, "06", SIZE_PINCAPTURECODE)); return NORMAL;}RESULT GetAcqId(PXMLSTRU pxmlstruReq, PISO8583STRU piso8583stru){ char szArea[AP_LEN_AREA + 1]; char szAcqId[SIZE_ACQID_MAX + 1]; ASSERT_NORMAL(AP_DEMAND(AP_PATH_AREA, szArea)); strcpy(szAcqId, AP_INST_ABC); strcat(szAcqId, szArea); ASSERT_NORMAL(SetBitInIso8583(piso8583stru, BIT_ACQID, szAcqId, strlen(szAcqId))); return NORMAL;}RESULT GetForwardId(PISO8583STRU piso8583stru){ char szArea[AP_LEN_AREA + 1]; char szForwardId[SIZE_FORWARDID_MAX + 1]; ASSERT_NORMAL(ApGetArea(AP_REQID_DSI, szArea)); strcpy(szForwardId, AP_INST_ABC); strcat(szForwardId, szArea); ASSERT_NORMAL(SetBitInIso8583(piso8583stru, BIT_FORWARDID, szForwardId, strlen(szForwardId))); return NORMAL;}RESULT GetTrack2(PXMLSTRU pxmlstruReq, PISO8583STRU piso8583stru){ char szTrackVerify[1 + 1]; char szTrack2[AP_LEN_TRACK2 + 1]; ASSERT_NORMAL(AP_DEMAND(AP_PATH_TRACKVERIFY, szTrackVerify)); if (strcmp(szTrackVerify, "Y") == 0) { ASSERT_NORMAL(AP_DEMAND(AP_PATH_TRACK2, szTrack2)); ASSERT_NORMAL(SetBitInIso8583(piso8583stru, BIT_TRACK2, szTrack2, strlen(szTrack2))); } return NORMAL;}RESULT GetTrack3(PXMLSTRU pxmlstruReq, PISO8583STRU piso8583stru){ char szTrackVerify[1 + 1]; char szTrack3[AP_LEN_TRACK3 + 1]; ASSERT_NORMAL(AP_DEMAND(AP_PATH_TRACKVERIFY, szTrackVerify)); if (strcmp(szTrackVerify, "Y") == 0) { if (AP_DEMAND(AP_PATH_TRACK3, szTrack3) != NORMAL) return NORMAL; ASSERT_NORMAL(SetBitInIso8583(piso8583stru, BIT_TRACK3, szTrack3, strlen(szTrack3))); } return NORMAL;}RESULT GetRetrievalRefNo(PXMLSTRU pxmlstruReq, PISO8583STRU piso8583stru){ char szSeqNo[AP_LEN_SEQNO + 1]; ASSERT_NORMAL(AP_DEMAND(AP_PATH_SEQNO, szSeqNo)); ASSERT_NORMAL(SetBitInIso8583(piso8583stru, BIT_RETRIEVALREFNO, szSeqNo, SIZE_RETRIEVALREFNO)); return NORMAL;}RESULT GetAuthResp(PXMLSTRU pxmlstruReq, PISO8583STRU piso8583stru){ char szAuthCode[AP_LEN_AUTHCODE + 1]; ASSERT_NORMAL(AP_DEMAND(AP_PATH_AUTHCODE, szAuthCode)); ASSERT_NORMAL(SetBitInIso8583(piso8583stru, BIT_AUTHRESP, szAuthCode, SIZE_AUTHRESP)); return NORMAL;}RESULT GetTermId(PXMLSTRU pxmlstruReq, PISO8583STRU piso8583stru){ char szReqId[AP_LEN_ID + 1]; ASSERT_NORMAL(AP_DEMAND(AP_PATH_REQID, szReqId)); ASSERT_NORMAL(SetBitInIso8583(piso8583stru, BIT_TERMID, szReqId, SIZE_TERMID)); return NORMAL;}RESULT GetAcceptorId(PXMLSTRU pxmlstruReq, PISO8583STRU piso8583stru){ char szMerchNo[AP_LEN_MERCHNO + 1]; char szReqType[AP_LEN_REQTYPE + 1]; ASSERT_NORMAL(AP_DEMAND(AP_PATH_REQTYPE, szReqType)); if (strcmp(szReqType, AP_REQTYPE_ATM) == 0) strcpy(szMerchNo, "000000000000000"); else ASSERT_NORMAL(AP_DEMAND(AP_PATH_MERCHNO, szMerchNo)); ASSERT_NORMAL(SetBitInIso8583(piso8583stru, BIT_ACCEPTORID, szMerchNo, SIZE_ACCEPTORID)); return NORMAL;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -