bool GetMac(std::vector<unsigned char>& mac) { if (GetMacType(mac, MIB_IF_TYPE_ETHERNET)) return true; if (GetMacType(mac, IF_TYPE_IEEE80211)) return true; return (GetMacType(mac, 0)); }
/***************************************************************************** ** Descriptions: 获取系统参数,如果没有获取到直接跑错 ** Parameters: struct _TradeData *pstTradeData ** Returned value: ** Created By: huacong 2016.03.04 ** Remarks: *****************************************************************************/ s32 InitSysParam() //Fix me 参数判断 { u8 temp[512] = { 0 }; u8 src[12] = { 0 }; s32 ret = SDK_ERR, len; //TMS 参数初始化 fixme (暂时写死,以后看交易是否跑通) memcpy(gstAppSetting.stTmsParam.TermParamVer, "00000000", 8); memcpy(gstAppSetting.stTmsParam.TMSParamVer, "00000000", 8); memcpy(gstAppSetting.stTmsParam.CapkParamVer, "00000000", 8); memcpy(gstAppSetting.stTmsParam.AidParamVer, "00000000", 8); memcpy(gstAppSetting.stTmsParam.TermParamVerBak, "00000000", 8); memcpy(gstAppSetting.stTmsParam.TMSParamVerBak, "00000000", 8); memcpy(gstAppSetting.stTmsParam.CapkParamVerBak, "00000000", 8); memcpy(gstAppSetting.stTmsParam.AidParamVerBak, "00000000", 8); //脚本标志 if (ReadReverScriptFlag(&gstTradeData.bisHaveReverScriptBag) != SDK_OK) { return SDK_ERR; } //冲正标志 if (ReadReversalFlag(&gstTradeData.bisHaveReversalBag) != SDK_OK) { return SDK_ERR; } Log("wangb", "pstTradeData->bisHaveReversalBag is %d ", gstTradeData.bisHaveReversalBag); //这个地方先顺序执行,后续看是否可以优化为建立一个常用表,依次自动配置 //流水号 memset(temp, 0, sizeof(temp)); if ((len = ProviderGetTagValue(TAG_8583_VoucherNo, temp)) > 0) { u32 numb = atol(temp) + 1; memset(temp, 0, sizeof(temp)); itoa(numb, temp); sprintf(src, "%06s", temp); memcpy(gstSys.asVoucherNo, src, len); } else { return SYS_VOUNO; } //DES gstAppSetting.stKeySystemParam.bIsMk3Des = 1; Log("zbq", "bIsMk3Des = %d", gstAppSetting.stKeySystemParam.bIsMk3Des); //批次号 memset(temp, 0, sizeof(temp)); if ((len = ProviderGetTagValue(TAG_8583_AsBatchNo, temp)) > 0) //Fix me len 更改 { Log("wangb", "TAG_8583_Field6002Type is %s", temp); memcpy(gstSys.asBatchNo, temp, len); } else { return SYS_FILEd6002Type; } //参考号 memset(temp, 0, sizeof(temp)); if (ProviderGetTagValue(TAG_8583_SysRefNo, temp) > 0) // Fix me { memcpy(gstTradeData.asSysRefNo, temp, 12); } else { return SDK_ERR; } //操作员代码 memset(temp, 0, sizeof(temp)); if (ProviderGetTagValue(TAG_8583_UsManNo, temp)) // Fix me { gstTradeData.usManNo = atol(temp); Log("zbq", "usManNo = %d", gstTradeData.usManNo); } else { return SDK_ERR; } //商户号 memset(temp, 0, sizeof(temp)); if ((len = ProviderGetTagValue(TAG_8583_MerchantNo, temp)) > 0) //Fix me { Log("wangb", "TAG_8583_MerchantNo is %s", temp); memcpy(gstAppSetting.stTerminalParam.asMerchantNo, temp, len); } else { return SYS_MerchantNo; } //终端号 memset(temp, 0, sizeof(temp)); if ((len = ProviderGetTagValue(TAG_8583_TerminalNo, temp)) > 0) { Log("wangb", "TAG_8583_TerminalNo is %s", temp); memcpy(gstAppSetting.stTerminalParam.asTerminalNo, temp, len); } else { return SYS_TerminalNo; } //TPDU memset(temp, 0, sizeof(temp)); if (ProviderGetTagValue(TAG_TPDU, temp)) { Log("wangb", "TAG_TPDU is %s", temp); memcpy(gstTradeData.asTpdu, temp, 11); } else { return SYS_TPDU; } //货币代码 memset(temp, 0, sizeof(temp)); if ((len = ProviderGetTagValue(TAG_8583_CurrencyCode, temp)) > 0) { Log("wangb", "TAG_8583_CurrencyCode is %s", temp); // memcpy(pstTradeData->stTerminalParam.asCurrencyCode, temp, len); memcpy(gstAppSetting.stTerminalParam.asCurrencyCode, "156", 3); } else { return SYS_CurrencyCode; } //主密钥索引 memset(temp, 0, sizeof(temp)); if (ProviderGetTagValue(TAG_TRADE_TMKINDEX, temp)) { Log("wangb", "TAG_TRADE_TMKINDEX is %s", temp); gstAppSetting.stKeySystemParam.uiTMkIndex = temp[0]; } else { return SYS_TMKINDEX; } // 主密钥类型 memset(temp, 0, sizeof(temp)); if (ProviderGetTagValue(TAG_TRADE_DESTYPE, temp)) //Fix me { if (strcmp(temp, TAG_NUBSIX) == 0) { gstAppSetting.stKeySystemParam.bIsMk3Des = true; } else if (strcmp(temp, TAG_NUBZER) == 0) { gstAppSetting.stKeySystemParam.bIsMk3Des = false; } } else { return SYS_KeySystemParam; } //是否支持磁道加密 memset(temp, 0, sizeof(temp)); if (ProviderGetTagValue(TAG_TRADE_SUPPORTTDK, temp)) //Fix me { Log("wangb", "TAG_TRADE_SUPPORTTDK is %s ", temp); if (strcmp(temp, TAG_NUBONE) == 0) //Fix me { gstAppSetting.stKeySystemParam.bIsSupportTdk = true; } else if (strcmp(temp, TAG_NUBZER) == 0) { gstAppSetting.stKeySystemParam.bIsSupportTdk = false; } } else { return SYS_SUPPORTTDK; } //mac加密方式 if ((ret = GetMacType(&gstAppSetting.stKeySystemParam.uiMacType)) != SDK_OK) { Log("zbq", "GetMacType Error,code = %d", ret); return SYS_MacType; } Log("wangb", "Out InitSysParam"); //TPK索引暂保留 /* ret = GetWorkKeyIndexByTmk(WORK_KEY_TPK, pstTradeData->stKeySystemParam.uiTMkIndex); if(ret != SDK_ERR) { pstTradeData->stKeySystemParam.uiTpkIndex = ret; } else { return SYS_KEY_TPK; } //TaK索引 暂保留 ret = GetWorkKeyIndexByTmk(WORK_KEY_TAK, pstTradeData->stKeySystemParam.uiTMkIndex); if(ret != SDK_ERR) { pstTradeData->stKeySystemParam.uiTakIndex = ret; } else { return SYSKEY_TAK; } //TdK索引 暂保留 if(pstTradeData->stKeySystemParam.bIsMk3Des && pstTradeData->stKeySystemParam.bIsSupportTdk) { ret = GetWorkKeyIndexByTmk(WORK_KEY_TDK, pstTradeData->stKeySystemParam.uiTMkIndex); if(ret != SDK_ERR) { pstTradeData->stKeySystemParam.uiTakIndex = ret; } else { return SYS_KEY_TDK; } } */ return SDK_OK; }