⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 converse.cpre

📁 商业银行前置系统
💻 CPRE
📖 第 1 页 / 共 3 页
字号:
    if (AP_DEMAND(AP_PATH_MERCHTYPE, szMerchType) != NORMAL)    {        ASSERT_NORMAL(AP_DEMAND(AP_PATH_REQTYPE, szReqType));        if (strcmp(szReqType, AP_REQTYPE_DSI) == 0)             ASSERT_NORMAL(AP_DEMAND(AP_PATH_ORGREQTYPE, szReqType));        if (strcmp(szReqType, AP_REQTYPE_TERM) == 0)            strcpy(szMerchType, "6010");                else if (strcmp(szReqType, AP_REQTYPE_ATM) == 0)            strcpy(szMerchType, "6011");                else            ASSERT_NORMAL(INVALID);    }    ASSERT_NORMAL(SetBitInIso8583(piso8583stru, BIT_MERCHTYPE, szMerchType,                                  SIZE_MERCHTYPE));    return NORMAL;}/* * 产生ISO8583报文的服务点输入方式。 */  RESULT GetEntryMode(PCXMLSTRU pxmlstruReq, PISO8583STRU piso8583stru){    char szEntryMode[SIZE_ENTRYMODE + 1];    char szTrackVerify[1 + 1];    char szAccPwd[AP_LEN_ACCPWD + 1];        bufclr(szEntryMode);    bufclr(szTrackVerify);        if (AP_DEMAND(AP_PATH_TRACKVERIFY, szTrackVerify) != NORMAL)        szTrackVerify[0] = 'N';    if (szTrackVerify[0] == 'Y')        memcpy(szEntryMode, "02", 2);    else        memcpy(szEntryMode, "01", 2);    if (AP_DEMAND(AP_PATH_ACCPWD, szAccPwd) == NORMAL)        memcpy(&szEntryMode[2], "1", 1);    else        memcpy(&szEntryMode[2], "2", 1);    ASSERT_NORMAL(SetBitInIso8583(piso8583stru, BIT_ENTRYMODE, szEntryMode,                                  SIZE_ENTRYMODE));    return NORMAL;}/* * 产生ISO8583报文的服务点条件码。 */ RESULT GetConditionCode(PCXMLSTRU pxmlstruReq, PISO8583STRU piso8583stru){    char szConditionCode[SIZE_CONDITIONCODE + 1];    char szTransCode[AP_LEN_TRANSCODE + 1];    char szReqType[AP_LEN_REQTYPE + 1];        bufclr(szTransCode);    bufclr(szReqType);    bufclr(szConditionCode);        ASSERT_NORMAL(AP_DEMAND(AP_PATH_REQTYPE, szReqType));    if (strcmp(szReqType, AP_REQTYPE_DSI) == 0)        ASSERT_NORMAL(AP_DEMAND(AP_PATH_ORGREQTYPE, szReqType));    ASSERT_NORMAL(AP_DEMAND(AP_PATH_TRANSCODE, szTransCode));    if (strcmp(szTransCode, AP_TRANSCODE_CS_CANCEL) == 0)        ASSERT_NORMAL(AP_DEMAND(AP_PATH_ORGTRANSCODE, 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;}/* * 产生ISO8583报文的接受PIN最大长度。 */ RESULT GetPinCaptureCode(PCXMLSTRU pxmlstruReq, PISO8583STRU piso8583stru){           ASSERT_NORMAL(SetBitInIso8583(piso8583stru, BIT_PINCAPTURECODE, "06",                                  SIZE_PINCAPTURECODE));    return NORMAL;}/* * 产生ISO8583报文的手续费。 */ RESULT GetTransFee(PCXMLSTRU pxmlstruReq, PISO8583STRU piso8583stru){    char szFee[AP_LEN_FEE + 1];    double dFee;        bufclr(szFee);        if (AP_DEMAND(AP_PATH_FEE, szFee) != NORMAL)        dFee = 0.0;    else        dFee = atof(szFee) * 100.0;    szFee[0] = 'C';    sprintf(&szFee[1], "%08.0lf", dFee);    ASSERT_NORMAL(SetBitInIso8583(piso8583stru, BIT_TRANSFEE, szFee,                                   SIZE_TRANSFEE));    return NORMAL;}/* * 产生ISO8583报文的受理方机构标识。 */RESULT GetAcqId(PCXMLSTRU pxmlstruReq, PISO8583STRU piso8583stru){    char szAcqId[SIZE_ACQID_MAX + 1];    char szSettleNo[LEN_SETTLENO + 1];    char szBankNo[LEN_BANKNO + 1];    ASSERT_NORMAL(AP_DEMAND_CFG(PATH_SETTLENO, szSettleNo));    ASSERT_NORMAL(AP_DEMAND_CFG(PATH_BANKNO, szBankNo));        bufclr(szAcqId);    sprintf(szAcqId, "63%4.4s%5.5s", szSettleNo, szBankNo);    ASSERT_NORMAL(SetBitInIso8583(piso8583stru, BIT_ACQID, szAcqId,                                  SIZE_ACQID_MAX));    return NORMAL;}/* * 产生ISO8583报文的发卡方机构代码。 */ RESULT GetForwardId(PCXMLSTRU pxmlstruReq, PISO8583STRU piso8583stru){    ASSERT_NORMAL(SetBitInIso8583(piso8583stru, BIT_FORWARDID, "63000000000",                                  SIZE_FORWARDID_MAX));    return NORMAL;}/* * 产生ISO8583报文的第二磁道。 */RESULT GetTrack2(PCXMLSTRU pxmlstruReq, PISO8583STRU piso8583stru){    char szTrack2[AP_LEN_TRACK2 + 1];    char szTrackVerify[1 + 1];        bufclr(szTrack2);    bufclr(szTrackVerify);    AP_DEMAND(AP_PATH_TRACKVERIFY, szTrackVerify);    if (szTrackVerify[0] == 'Y')        ASSERT_NORMAL(AP_DEMAND(AP_PATH_TRACK2, szTrack2));    else        InitString(szTrack2, '0', AP_LEN_TRACK2);    ASSERT_NORMAL(SetBitInIso8583(piso8583stru, BIT_TRACK2, szTrack2,                                  strlen(szTrack2)));    return NORMAL;}/* * 产生ISO8583报文的第三磁道。 */RESULT GetTrack3(PCXMLSTRU pxmlstruReq, PISO8583STRU piso8583stru){    char szTrack3[AP_LEN_TRACK3 + 1];    char szTrackVerify[1 + 1];        bufclr(szTrack3);    bufclr(szTrackVerify);    AP_DEMAND(AP_PATH_TRACKVERIFY, szTrackVerify);    if (szTrackVerify[0] == 'Y')        ASSERT_NORMAL(AP_DEMAND(AP_PATH_TRACK3, szTrack3));    else        InitString(szTrack3, '0', AP_LEN_TRACK3);    ASSERT_NORMAL(SetBitInIso8583(piso8583stru, BIT_TRACK3, szTrack3,                                  strlen(szTrack3)));    return NORMAL;}/* * 产生ISO8583报文的受理方流水号。 */RESULT GetRetrievalRefNo(PCXMLSTRU pxmlstruReq, PISO8583STRU piso8583stru){    char szSeqNo[AP_LEN_SEQNO + 1];        bufclr(szSeqNo);    ASSERT_NORMAL(AP_DEMAND(AP_PATH_SEQNO, szSeqNo));    ASSERT_NORMAL(SetBitInIso8583(piso8583stru, BIT_RETRIEVALREFNO, szSeqNo,                                  SIZE_RETRIEVALREFNO));    return NORMAL;}/* * 产生ISO8583报文的服务限制码。 */  RESULT GetServiceCode(PCXMLSTRU pxmlstruReq, PISO8583STRU piso8583stru){    char szReqType[AP_LEN_REQTYPE + 1];     char szServiceCode[SIZE_SERVICECODE + 1];        bufclr(szReqType);    bufclr(szServiceCode);    /*     * 注意服务限制码定义为:     *   测试环境:011-POS 001-ATM 101-TERM     *   生产环境:010-POS 000-ATM 100-TERM     */    if (IsManualAuth(pxmlstruReq))    {        ASSERT_NORMAL(SetBitInIso8583(piso8583stru, BIT_SERVICECODE,                                      SERVICECODE_POS, SIZE_SERVICECODE));        return NORMAL;    }        ASSERT_NORMAL(AP_DEMAND(AP_PATH_REQTYPE, szReqType));        /*     * 根据请求类型填写ISO8584的40域,如果请求来至区域中心,只能根据交易码进行     * 区分,如果为撤消交易,必须根据原交易码。     */    if (strcmp(szReqType, AP_REQTYPE_DSI) == 0)    {        char szTransCode[AP_LEN_TRANSCODE + 1];                bufclr(szTransCode);        ASSERT_NORMAL(AP_DEMAND(AP_PATH_TRANSCODE, szTransCode));                if (strcmp(szTransCode, AP_TRANSCODE_CS_CANCEL) == 0)        {            bufclr(szTransCode);            ASSERT_NORMAL(AP_DEMAND(AP_PATH_ORGTRANSCODE, szTransCode));        }        if (strcmp(szTransCode, AP_TRANSCODE_CS_CONSUME) == 0 ||            strcmp(szTransCode, AP_TRANSCODE_CS_REFUND) == 0 ||            strcmp(szTransCode, AP_TRANSCODE_CS_AUTH) == 0 ||            strcmp(szTransCode, AP_TRANSCODE_CS_AUTHSETTLE) == 0)            strcpy(szServiceCode, SERVICECODE_POS);        else            strcpy(szServiceCode, SERVICECODE_ATM);    }    else if (strcmp(szReqType, AP_REQTYPE_POS) == 0)        strcpy(szServiceCode, SERVICECODE_POS);            else if (strcmp(szReqType, AP_REQTYPE_ATM) == 0)        strcpy(szServiceCode, SERVICECODE_ATM);        else if (strcmp(szReqType, AP_REQTYPE_TERM) == 0)        strcpy(szServiceCode, SERVICECODE_TERM);            else        ASSERT_NORMAL(INVALID);            ASSERT_NORMAL(SetBitInIso8583(piso8583stru, BIT_SERVICECODE, szServiceCode,                                  SIZE_SERVICECODE));    return NORMAL;}/* * 产生ISO8583报文的受理方终端号。 */  RESULT GetTermId(PCXMLSTRU pxmlstruReq, PISO8583STRU piso8583stru){    char szReqId[AP_LEN_ID + 1];        bufclr(szReqId);    ASSERT_NORMAL(AP_DEMAND(AP_PATH_REQID, szReqId));            ASSERT_NORMAL(SetBitInIso8583(piso8583stru, BIT_TERMID, szReqId,                                  SIZE_TERMID));    return NORMAL;}/* * 产生ISO8583报文的商户代码。 */  RESULT GetAcceptorId(PCXMLSTRU pxmlstruReq, PISO8583STRU piso8583stru){    char szMerchNo[AP_LEN_MERCHNO + 1];         bufclr(szMerchNo);        if (AP_DEMAND(AP_PATH_MERCHNO, szMerchNo) != NORMAL)        InitString(szMerchNo, ' ', SIZE_ACCEPTORID);    ASSERT_NORMAL(SetBitInIso8583(piso8583stru, BIT_ACCEPTORID, szMerchNo,                                  SIZE_ACCEPTORID));    return NORMAL;}/* * 产生ISO8583报文的受理方名称。 */  RESULT GetAcceptorName(PCXMLSTRU pxmlstruReq, PISO8583STRU piso8583stru){    char szMerchName[AP_LEN_MERCHNAME + 1];    char szArea[AP_LEN_AREA + 1];    char szCountryCode[LEN_COUNTRYCODE + 1];    char szDistrictCode[LEN_DISTRICTCODE + 1];    char szAcceptorName[SIZE_ACCEPTORNAME + 1];    UINT nLen;        bufclr(szMerchName);    bufclr(szArea);    bufclr(szCountryCode);    bufclr(szDistrictCode);        InitString(szAcceptorName, ' ', SIZE_ACCEPTORNAME);    ASSERT_NORMAL(AP_DEMAND(AP_PATH_AREA, szArea));    ASSERT_NORMAL(AP_DEMAND_CFG(PATH_COUNTRYCODE, szCountryCode));    ASSERT_NORMAL(AP_DEMAND_CFG(PATH_DISTRICTCODE, szDistrictCode));    memcpy(&szAcceptorName[0], szCountryCode, LEN_COUNTRYCODE);    memcpy(&szAcceptorName[3], szDistrictCode, LEN_DISTRICTCODE);    memcpy(&szAcceptorName[3 + 2], szArea, 3);        if (AP_DEMAND(AP_PATH_MERCHNAME, szMerchName) == NORMAL)    {        nLen = strlen(szMerchName);        memcpy(&szAcceptorName[3 + 2 + 3], szMerchName, min(nLen, 32));    }        ASSERT_NORMAL(SetBitInIso8583(piso8583stru, BIT_ACCEPTORNAME,                                  szAcceptorName, SIZE_ACCEPTORNAME));    return NORMAL;}/* * 产生ISO8583报文的货币代码。 */ RESULT GetCurrCode(PCXMLSTRU pxmlstruReq, PISO8583STRU piso8583stru){    char szCurrType[AP_LEN_CURRTYPE + 1];        bufclr(szCurrType);    if (AP_DEMAND(AP_PATH_CURRTYPE, szCurrType) != NORMAL)        strcpy(szCurrType, "156");        ASSERT_NORMAL(SetBitInIso8583(piso8583stru, BIT_CURRCODE, szCurrType,                                  SIZE_CURRCODE));    return NORMAL;}/* * 产生ISO8583报文的密码。(把XML密码的明文转为ISO8583的密文) */ RESULT GetPin(PCXMLSTRU pxmlstruReq, PISO8583STRU piso8583stru){    char szAccPwd[AP_LEN_ACCPWD + 1], szAccNo[AP_LEN_ACCNO + 1];     UCHAR cPin[SIZE_PIN], cPik[SIZE_KEY];    bufclr(szAccPwd);    bufclr(szAccNo);    bufclr(cPin);    bufclr(cPik);        if (AP_DEMAND(AP_PATH_ACCPWD, szAccPwd) != NORMAL)        memset(szAccPwd, '0', AP_LEN_ACCPWD);    ASSERT_NORMAL(AP_DEMAND(AP_PATH_ACCNO, szAccNo));    ASSERT_NORMAL(GetKey("PIK", cPik, NULL));    ASSERT_NORMAL(Ansix98(cPin, szAccPwd, AP_LEN_ACCPWD, cPik, szAccNo, TRUE));    ASSERT_NORMAL(SetBitInIso8583(piso8583stru, BIT_PIN, cPin, SIZE_PIN));    return NORMAL;}/* * 产生ISO8583报文的证件号码。 */ RESULT GetIdNo(PCXMLSTRU pxmlstruReq, PISO8583STRU piso8583stru){    char szCertType[AP_LEN_CERTTYPE + 1], szCertNo[AP_LEN_CERTNO + 1];    char szAccName[AP_LEN_ACCNAME + 1];    char szIdNo[SIZE_IDNO_MAX + 1];    UINT nLen;        bufclr(szCertType);    bufclr(szCertNo);    bufclr(szAccName);        InitString(szIdNo, ' ', SIZE_IDNO_MAX);    AP_DEMAND(AP_PATH_CERTTYPE, szCertType);    AP_DEMAND(AP_PATH_CERTNO, szCertNo);    AP_DEMAND(AP_PATH_ACCNAME, szAccName);    memcpy(szIdNo, szCertType, strlen(szCertType));    memcpy(&szIdNo[1], szCertNo, strlen(szCertNo));        nLen = strlen(szAccName);    memcpy(&szIdNo[20 + 1], szAccName, min(20, nLen));        ASSERT_NORMAL(SetBitInIso8583(piso8583stru, BIT_IDNO, szIdNo,                                  SIZE_IDNO_MAX));    return NORMAL;}/* * 产生ISO8583报文的新密码。(把XML新密码的明文转为ISO8583的密文) */ RESULT GetNewPin(PCXMLSTRU pxmlstruReq, PISO8583STRU piso8583stru){    char szAccNewPwd[AP_LEN_ACCPWD + 1], szAccNo[AP_LEN_ACCNO + 1];     UCHAR cNewPin[SIZE_PIN], cPik[SIZE_KEY];    bufclr(szAccNewPwd);    bufclr(szAccNo);    bufclr(cNewPin);    bufclr(cPik);        ASSERT_NORMAL(AP_DEMAND(AP_PATH_ACCNEWPWD, szAccNewPwd));    ASSERT_NORMAL(AP_DEMAND(AP_PATH_ACCNO, szAccNo));    ASSERT_NORMAL(GetKey("PIK", cPik, NULL));    ASSERT_NORMAL(Ansix98(cNewPin, szAccNewPwd, AP_LEN_ACCPWD, cPik, szAccNo,                          TRUE));                              ASSERT_NORMAL(SetBitInIso8583(piso8583stru, BIT_NEWPIN, cNewPin, SIZE_PIN));    return NORMAL;}/* * 产生ISO8583报文的对帐结果码。 */ RESULT GetSettleCode(PCXMLSTRU pxmlstruReq, PISO8583STRU piso8583stru){    char szRespCode[AP_LEN_RESPCODE + 1];     char szSettleCode[1 + 1];    bufclr(szRespCode);    bufclr(szSettleCode);        ASSERT_NORMAL(AP_DEMAND(AP_PATH_RESPCODE, szRespCode));        if (strcmp(szRespCode, AP_RESPCODE_ACCEPT) == 0)        szSettleCode[0] = '1';        else if (strcmp(szRespCode, AP_RESPCODE_SETTLE_NOTEQUAL) == 0)        szSettleCode[0] = '2';        else         szSettleCode[0] = '3';    ASSERT_NORMAL(SetBitInIso8583(piso8583stru, BIT_SETTLECODE, szSettleCode,                                  SIZE_SETTLECODE));    return NORMAL;}RESULT GetReason(PCXMLSTRU pxmlstruReq, PISO8583STRU piso8583stru){    ASSERT_NORMAL(SetBitInIso8583(piso8583stru, BIT_REASON, "9020", SIZE_REASON));    return NORMAL;}/* End of this file */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -