Commit b8703dfa by wuyang.zou

fix

1、整理 Upp 发版提测范围  测试机器范围  Pilot门店起步范围
2、在 fmclient 获取 证书公私钥时,将 dllVerison + serverUrl 信息上传
parent d09eda57
>>>>>>>>>>>>>>>>Apply For QA , Test Scope>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>Apply For QA , Test Scope>>>>>>>>>>>>>>>>>>
3.2.1、微信支付 销售 / 退货
3.2.2、支付宝支付 销售 / 退货
3.2.3、现金支付 销售 / 退货
3.2.4、券支付 销售 / 退货
3.2.5、星礼卡支付 销售 / 退货
3.2.6、商品券+代金券+折扣券 【cmb券不走Upp 核销】 销售 / 退货
3.2.7、银联支付 销售 / 退货
3.2.8、点2杯饮品,其中1杯使用指定BOGO折扣,
点选折扣后使用饮品券兑换,能使用成功 销售 / 退货
3.2.9、打印日结单
新增的测试点:
3.3.0、会员通场景下的招行券的兑换和冲正
3.3.1、星礼卡的查询、激活、退卡、充值和取消充值
3.3.2、支付宝微信签到
----------------------------------------------------------------------------------------
>>>>>>>>>>>>>>>>Test Pos Machine>>>>>>>>>>>>>>>>>>
测试机:10.73.194.223(EC),
10.73.194.216 (CCO),
10.73.194.109 (Roastery)
----------------------------------------------------------------------------------------
>>>>>>>>>>>>>>>>>>Pilot Store>>>>>>>>>>>>>>>>>>>>>>>>>>>>
广州区域店
【广州保利香槟花园店 020-38373501/020-38373502 31835 * 】
【广州黄埔大道西店 020-89817920/020-89819597 51889 * 】
【广州太阳新天地店 020-37887461/020-37887460 29199 * 】
【广州邦华环球国际分店 020-61972251/020-61972252 20145 * 】
【广州花城汇四店 020-37276403/020-37276352 57311 * 】
---------------------------------
【广州花城湾店 020-37260486/020-37261073 22371 * 】
【广州华亿丽晶店 020-38255530/020-38788740 16171 * 】
【广州南国商苑店 020-38686150/020-38686151 15999 * 】
【广州中国联通大厦店 020-22088718/020-22088719 16486 * 】
----------------------------------------------------------------------------------------
>>>>>>>>>>>>>>>>>>Test Coupon + TransID >>>>>>>>>>>>>>>>>>>>>>>>>>>>
支付宝: 299900002222123456
券支付: 7310292370021909232=A9CFD5E5D4843E83
----------------------------------------------------------------------------------------
\ No newline at end of file
...@@ -372,14 +372,14 @@ public: ...@@ -372,14 +372,14 @@ public:
} }
/*********************************** /***********************************
*GetJsonKeyArray : 获取json中非array非object的key *GetKeyListFromJson : 获取json中非array非object的key
*keys :json的key数组 *keys :json的key数组
*json : json字符串 *json : json字符串
*返回 :0 失败; 非0表示key的数量 *返回 :0 失败; 非0表示key的数量
***********************************/ ***********************************/
static int GetJsonKeyArray(std::string* keys,const std::string &json) static int GetKeyListFromJson(std::string* keys,const std::string &json)
{ {
LOG() << "GetJsonKeyArray"; LOG() << "GetKeyListFromJson";
Document root; Document root;
Value value; Value value;
...@@ -426,13 +426,13 @@ public: ...@@ -426,13 +426,13 @@ public:
} }
/*********************************** /***********************************
*GetValueFromJson : 按照顺序 *GetValueListFromJson : 按照顺序
*keys :json的key数组 *keys :json的key数组
*json : length数组长度 *json : length数组长度
***********************************/ ***********************************/
static int GetValueFromJson(const std::string *keys, int length, const std::string &json, std::string &outmsg) static int GetValueListFromJson(const std::string *keys, int length, const std::string &json, std::string &outmsg)
{ {
LOG() <<"GetValueFromJson"; LOG() <<"GetValueListFromJson";
Document root; Document root;
Value value; Value value;
int num; int num;
......
...@@ -161,18 +161,18 @@ int CheckRBK() { ...@@ -161,18 +161,18 @@ int CheckRBK() {
} }
// 载入本地证书文件中 公钥+私钥数据; // 载入本地证书文件中 公钥+私钥数据;
void LoadCret() /*
void LoadLocalCret()
{ {
global_info.serverpublickey.clear(); global_info.serverpublickey.clear();
global_info.localprivatekey.clear(); global_info.localprivatekey.clear();
string filepath; string filepath;
FileSys::GetProcPath(filepath); FileSys::GetProcPath(filepath);
filepath.append(CRET_FILE_NAME); filepath.append(CRET_FILE_NAME);
std::ifstream filestm(filepath); std::ifstream filestm(filepath);
if ( _access(filepath.c_str(),0) != 0 ) { if ( _access(filepath.c_str(),0) != 0 ) {
LOG() << "LoadCretFun:: Not Found " << filepath; LOG() << "LoadLocalCret:: Not Found " << filepath;
return ; return ;
} }
...@@ -181,7 +181,7 @@ void LoadCret() ...@@ -181,7 +181,7 @@ void LoadCret()
filestm.seekg(0, std::ios::beg); filestm.seekg(0, std::ios::beg);
if(length == 0) { if(length == 0) {
LOG() <<"Error:: LoadCretFun:: "<< CRET_FILE_NAME <<" File size 0" ; LOG() <<"LoadLocalCret:: "<< CRET_FILE_NAME <<" File size 0" ;
filestm.close(); filestm.close();
return ; return ;
} }
...@@ -195,15 +195,16 @@ void LoadCret() ...@@ -195,15 +195,16 @@ void LoadCret()
if (DataProcess::DES3Decode((const unsigned char *)DES3_KEY_STR.c_str(), req, strlen(req), if (DataProcess::DES3Decode((const unsigned char *)DES3_KEY_STR.c_str(), req, strlen(req),
(unsigned char *)rps, MAX_BUF_LEN) == 0 ) (unsigned char *)rps, MAX_BUF_LEN) == 0 )
{ {
LOG() <<"LoadCretFun:: "<< CRET_FILE_NAME <<" DES3Decode Failed "; LOG() <<"LoadLocalCret:: "<< CRET_FILE_NAME <<" DES3Decode Failed ";
remove(filepath.c_str()); remove(filepath.c_str());
return ; return ;
} }
// 后续代码基本没有机会走下去了;
Document root; Document root;
root.Parse(rps); root.Parse(rps);
if ( root.HasParseError() ) { if ( root.HasParseError() ) {
LOG() <<"Error:: LoadCretFun:: "<< CRET_FILE_NAME<< "DES3Decode Return argv is not json"; LOG() <<"LoadLocalCret:: "<< CRET_FILE_NAME<< " DES3Decode Return Argv Is Not Json";
return ; return ;
} }
...@@ -211,39 +212,40 @@ void LoadCret() ...@@ -211,39 +212,40 @@ void LoadCret()
if ( root.HasMember("statusCode") ) { if ( root.HasMember("statusCode") ) {
statusCode = root["statusCode"]; statusCode = root["statusCode"];
} else { } else {
LOG() <<"Error:: LoadCretFun:: "<< "DES3Decode Result's statusCode No Exist"; LOG() <<"LoadLocalCret:: "<< " DES3Decode Result's statusCode No Exist";
return; return;
} }
if ( !statusCode.IsInt() ) { if ( !statusCode.IsInt() ) {
LOG() <<"Error:: LoadCretFun:: " << "DES3Decode Result's statusCode error"; LOG() <<"LoadLocalCret:: " << " DES3Decode Result's statusCode Error";
} }
int code = statusCode.GetInt(); int code = statusCode.GetInt();
if(code == 100) { if(code == 100) {
Value serverpublickey; Value serverPublicKey;
Value localprivatekey; Value localPrivateKey;
if ( root.HasMember("serverPublicKey") && root.HasMember("clientPrivateKey") ) { if ( root.HasMember("serverPublicKey") && root.HasMember("clientPrivateKey") ) {
serverpublickey = root["serverPublicKey"]; serverPublicKey = root["serverPublicKey"];
localprivatekey = root["clientPrivateKey"]; localPrivateKey = root["clientPrivateKey"];
} else { } else {
LOG() <<"Error:: LoadCretFun:: " << "serverpublickey or localprivatekey No Exist "; LOG() <<"LoadLocalCret:: " << " serverPublicKey or clientPrivateKey No Exist ";
return; return;
} }
if(serverpublickey == NULL || !serverpublickey.IsString() || if(serverPublicKey == NULL || !serverPublicKey.IsString() ||
localprivatekey == NULL || !localprivatekey.IsString() ) localPrivateKey == NULL || !localPrivateKey.IsString() )
{ {
LOG() <<"Error:: LoadCretFun:: " << "serverpublickey or localprivatekey error"; LOG() <<"LoadLocalCret:: " << " serverPublicKey or localPrivateKey Error ";
return; return;
} }
global_info.serverpublickey = string(serverpublickey.GetString()); global_info.serverpublickey = string(serverPublicKey.GetString());
global_info.localprivatekey = string(localprivatekey.GetString()); global_info.localprivatekey = string(localPrivateKey.GetString());
LOG() <<"LoadCretFun:: "<< "server public key: " << global_info.serverpublickey; LOG() <<"LoadLocalCret:: "<< "Get Server Public Key: " << global_info.serverpublickey;
LOG() <<"LoadCretFun:: "<< "client private key: " << global_info.localprivatekey; LOG() <<"LoadLocalCret:: "<< "Get Client Private Key: " << global_info.localprivatekey;
} }
} }
*/
// 初始化 客户端相关数据: 读取配置+内存中无证书则载入本地证书文件数据+.... // 初始化 客户端相关数据: 读取配置+内存中无证书则载入本地证书文件数据+....
int InitClient() int InitClient()
...@@ -280,8 +282,11 @@ int InitClient() ...@@ -280,8 +282,11 @@ int InitClient()
LOG() <<"InitClientFun:: " <<"---->Memory privateKey: "<<global_info.localprivatekey LOG() <<"InitClientFun:: " <<"---->Memory privateKey: "<<global_info.localprivatekey
<<" ---->Memory publicKey: "<<global_info.serverpublickey; <<" ---->Memory publicKey: "<<global_info.serverpublickey;
/*
// 没有意义读取本地 证书文件, Dll初次被调用就会 从 Upp Server 下载最新的证书公私钥;
if(global_info.serverpublickey.empty() || global_info.localprivatekey.empty()) if(global_info.serverpublickey.empty() || global_info.localprivatekey.empty())
LoadCret(); LoadLocalCret();
*/
return 1; return 1;
} }
...@@ -403,6 +408,7 @@ int ProcessPosReqData(const char *indata, int *needcheck, int *reqType_i, string ...@@ -403,6 +408,7 @@ int ProcessPosReqData(const char *indata, int *needcheck, int *reqType_i, string
// Dll Program First Be Loaded, Must GetRSACret From Upp Svr: 参数: 商户号 + 门店号 + Pos机编号 (获取证书 公私秘钥); // Dll Program First Be Loaded, Must GetRSACret From Upp Svr: 参数: 商户号 + 门店号 + Pos机编号 (获取证书 公私秘钥);
if ( initflag == 0 ) { if ( initflag == 0 ) {
LOG() << "ProcessPosReqDataFun:: First Load Dll, Need GetRSACret From Upp Svr, Begin---->"; LOG() << "ProcessPosReqDataFun:: First Load Dll, Need GetRSACret From Upp Svr, Begin---->";
if ( GetRSACret( (int)partnerId.GetInt(), storeId.GetString(), stationId.GetString() ) == 1 ) { if ( GetRSACret( (int)partnerId.GetInt(), storeId.GetString(), stationId.GetString() ) == 1 ) {
LOG() << "ProcessPosReqDataFun:: First Load Dll, GetRSACret From Upp Svr Finished And Success"; LOG() << "ProcessPosReqDataFun:: First Load Dll, GetRSACret From Upp Svr Finished And Success";
initflag = 1; initflag = 1;
...@@ -571,7 +577,7 @@ __declspec(dllexport) int __stdcall GetValue(char *indata, char *outdata) ...@@ -571,7 +577,7 @@ __declspec(dllexport) int __stdcall GetValue(char *indata, char *outdata)
LOG() <<"<******* Dll-GetValue() Version:: "<< DLL_VERSION << " *******>"; LOG() <<"<******* Dll-GetValue() Version:: "<< DLL_VERSION << " *******>";
int reqType_i = 0; int reqType_i = 0;
//读取配置文件 //读取配置文件 (但不读 证书文件 client.p12)
if(InitClient() == 0) { if(InitClient() == 0) {
strcpy(outdata, ERROR_CLIENT_CFG); strcpy(outdata, ERROR_CLIENT_CFG);
LOG() <<"Error:: "<< "return json to pos" << outdata; LOG() <<"Error:: "<< "return json to pos" << outdata;
...@@ -717,7 +723,7 @@ size_t GetDataForServer(void* buffer, size_t size, size_t nmemb, void *userdata) ...@@ -717,7 +723,7 @@ size_t GetDataForServer(void* buffer, size_t size, size_t nmemb, void *userdata)
} }
// Curl 请求 设置 CURLOPT_HEADERFUNCTION;读取 UppSvr 返回 headers 中的签名; // Curl 请求 设置 CURLOPT_HEADERFUNCTION;读取 UppSvr 返回 headers 中的签名;
size_t GetSign(void* buffer, size_t size, size_t nmemb, void *userdata) size_t GetSignFromResp(void* buffer, size_t size, size_t nmemb, void *userdata)
{ {
unsigned int i = size * nmemb; unsigned int i = size * nmemb;
global_info.sign.append((const char *)buffer, i); global_info.sign.append((const char *)buffer, i);
...@@ -733,12 +739,12 @@ int GetRSASign(const string &text, string &sign) ...@@ -733,12 +739,12 @@ int GetRSASign(const string &text, string &sign)
string tmps; string tmps;
int len = 0; int len = 0;
if((len = DataProcess::GetJsonKeyArray(keys, text)) == 0) if((len = DataProcess::GetKeyListFromJson(keys, text)) == 0)
return 0; return 0;
DataProcess::SortString(keys, len); DataProcess::SortString(keys, len);
if(DataProcess::GetValueFromJson(keys, len, text, tmps) == 0) if(DataProcess::GetValueListFromJson(keys, len, text, tmps) == 0)
return 0; return 0;
LOG() << "GetRSASign:: Before Sign data: " << tmps; LOG() << "GetRSASign:: Before Sign data: " << tmps;
...@@ -802,14 +808,14 @@ int CheckRSASignData() ...@@ -802,14 +808,14 @@ int CheckRSASignData()
LOG() << "CheckRSASignData:: Get Sign From Upp Svr Return: " << global_info.sign; LOG() << "CheckRSASignData:: Get Sign From Upp Svr Return: " << global_info.sign;
// 初步猜测 仅遍历最外层 Json-key 集合; // 初步猜测 仅遍历最外层 Json-key 集合;
if( ( len = DataProcess::GetJsonKeyArray(keys, global_info.recvbuf) ) == 0) if( ( len = DataProcess::GetKeyListFromJson(keys, global_info.recvbuf) ) == 0)
return 0; return 0;
// 初步猜测根据 Key字母升序排序; // 初步猜测根据 Key字母升序排序;
DataProcess::SortString(keys, len); DataProcess::SortString(keys, len);
// 根据Key查找出其Value 并输出; // 根据Key查找出其Value 并输出;
if(DataProcess::GetValueFromJson(keys, len, global_info.recvbuf, tmps) == 0) if(DataProcess::GetValueListFromJson(keys, len, global_info.recvbuf, tmps) == 0)
return 0; return 0;
LOG() << "CheckRSASignData:: Begin Check Recv Sign Data , Sort Keys Length: "<<len LOG() << "CheckRSASignData:: Begin Check Recv Sign Data , Sort Keys Length: "<<len
...@@ -897,7 +903,7 @@ int SendMsg(const std::string &text, const string &url, int getCertification) ...@@ -897,7 +903,7 @@ int SendMsg(const std::string &text, const string &url, int getCertification)
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, text.c_str()); curl_easy_setopt(curl, CURLOPT_POSTFIELDS, text.c_str());
curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers); curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, GetDataForServer); curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, GetDataForServer);
curl_easy_setopt(curl, CURLOPT_HEADERFUNCTION, GetSign); curl_easy_setopt(curl, CURLOPT_HEADERFUNCTION, GetSignFromResp);
curl_easy_setopt(curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC); curl_easy_setopt(curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L); curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L);
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0); curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0);
...@@ -923,10 +929,10 @@ int SendMsg(const std::string &text, const string &url, int getCertification) ...@@ -923,10 +929,10 @@ int SendMsg(const std::string &text, const string &url, int getCertification)
// 检查证书(公钥+私钥) 并更新最新 证书数据到 证书文件中; // 检查证书(公钥+私钥) 并更新最新 证书数据到 证书文件中;
// Return: 1:成功 0:失败 // Return: 1:成功 0:失败
int CheckCret() { int CheckAndSaveCret() {
if(global_info.recvbuf.size() == 0) { if(global_info.recvbuf.size() == 0) {
LOG() << "CheckCret:: Recv Buf Is NULL"; LOG() << "CheckAndSaveCret:: Recv Buf Is NULL";
return 0; return 0;
} }
...@@ -936,11 +942,11 @@ int CheckCret() { ...@@ -936,11 +942,11 @@ int CheckCret() {
if ( ( legth = DataProcess::DES3Decode((const unsigned char *)DES3_KEY_STR.c_str(), if ( ( legth = DataProcess::DES3Decode((const unsigned char *)DES3_KEY_STR.c_str(),
global_info.recvbuf.c_str(), global_info.recvbuf.length(), (unsigned char *)outmsg, MAX_BUF_LEN) ) == 0 ) global_info.recvbuf.c_str(), global_info.recvbuf.length(), (unsigned char *)outmsg, MAX_BUF_LEN) ) == 0 )
{ {
LOG() << "CheckCret:: 3DES encode failed"; LOG() << "CheckAndSaveCret:: 3DES encode failed";
return 0; return 0;
} }
LOG() << "CheckCret:: 3DES Decode: " << outmsg ; LOG() << "CheckAndSaveCret:: 3DES Decode: " << outmsg ;
Document root; Document root;
#ifdef FM_TESTS #ifdef FM_TESTS
...@@ -951,14 +957,14 @@ int CheckCret() { ...@@ -951,14 +957,14 @@ int CheckCret() {
#endif #endif
if(root.HasParseError()) { if(root.HasParseError()) {
LOG() << "CheckCret:: Argv Is Not Json :" << root.GetParseError(); LOG() << "CheckAndSaveCret:: Argv Is Not Json :" << root.GetParseError();
return 0; return 0;
} }
Value statusCode; Value statusCode;
statusCode = root["statusCode"]; statusCode = root["statusCode"];
if ( statusCode.IsNull() || !statusCode.IsInt() ) { if ( statusCode.IsNull() || !statusCode.IsInt() ) {
LOG() << "statusCode error"; LOG() << "CheckAndSaveCret:: statusCode error";
return 0; return 0;
} }
...@@ -977,14 +983,14 @@ int CheckCret() { ...@@ -977,14 +983,14 @@ int CheckCret() {
return 0; return 0;
} }
Value serverpublickey; Value serverPublicKey;
Value localprivatekey; Value localPrivateKey;
serverpublickey = root["serverPublicKey"]; serverPublicKey = root["serverPublicKey"];
localprivatekey = root["clientPrivateKey"]; localPrivateKey = root["clientPrivateKey"];
if (serverpublickey.IsNull() || !serverpublickey.IsString() || localprivatekey.IsNull() || !localprivatekey.IsString()) if (serverPublicKey.IsNull() || !serverPublicKey.IsString() || localPrivateKey.IsNull() || !localPrivateKey.IsString())
{ {
LOG() << "CheckCret:: serverpublickey or localprivatekey error"; LOG() << "CheckAndSaveCret:: serverPublicKey Or localPrivateKey Error";
return 0; return 0;
} }
...@@ -992,11 +998,11 @@ int CheckCret() { ...@@ -992,11 +998,11 @@ int CheckCret() {
filestm.flush(); filestm.flush();
filestm.close(); filestm.close();
global_info.serverpublickey = string((char*)serverpublickey.GetString()); global_info.serverpublickey = string((char*)serverPublicKey.GetString());
global_info.localprivatekey = string((char*)localprivatekey.GetString()); global_info.localprivatekey = string((char*)localPrivateKey.GetString());
LOG() << "CheckCret:: Server Public Key: " << global_info.serverpublickey; LOG() << "CheckAndSaveCret:: Server Public Key: " << global_info.serverpublickey;
LOG() << "CheckCret:: Client Private Key: " << global_info.localprivatekey; LOG() << "CheckAndSaveCret:: Client Private Key: " << global_info.localprivatekey;
} else { } else {
return 0; return 0;
} }
...@@ -1008,7 +1014,7 @@ int CheckCret() { ...@@ -1008,7 +1014,7 @@ int CheckCret() {
/*************************GetCret :从签名服务获取************/ /*************************GetCret :从签名服务获取************/
// 根据: 商户号 + 门店号 + POS编号 + POS机器MAC地址DES3Encode后密文,获取 RSA 签名证书(公私 秘钥) // 根据: 商户号 + 门店号 + POS编号 + POS机器MAC地址DES3Encode后密文,获取 RSA 签名证书(公私 秘钥)
// 调用 SendMsg(string(request), global_info.cretserverurl, 1) 进行获取证书操作: 尾部参数 1: 标识单纯获取证书; // 调用 SendMsg(string(request), global_info.cretserverurl, 1) 进行获取证书操作: 尾部参数 1: 标识单纯获取证书;
// 调用 CheckCret() 将最新证书(公私 秘钥) 存储本地; // 调用 CheckAndSaveCret() 将最新证书(公私 秘钥) 存储本地;
int GetRSACret(int partnerId,const char *storeID,const char *posNo) int GetRSACret(int partnerId,const char *storeID,const char *posNo)
{ {
LOG() << "GetRSACret:: Begin:: ---->"; LOG() << "GetRSACret:: Begin:: ---->";
...@@ -1028,7 +1034,7 @@ int GetRSACret(int partnerId,const char *storeID,const char *posNo) ...@@ -1028,7 +1034,7 @@ int GetRSACret(int partnerId,const char *storeID,const char *posNo)
//获取mac地址 //获取mac地址
std::string macOut; std::string macOut;
Tool::GetMacByGetAdaptersAddresses(macOut); Tool::GetMacByAdaptersAddresses(macOut);
LOG() <<"GetRSACret:: Pos Machine Mac Info: "<< macOut; LOG() <<"GetRSACret:: Pos Machine Mac Info: "<< macOut;
char outmsg[MAX_BUF_LEN] = { 0 }; char outmsg[MAX_BUF_LEN] = { 0 };
...@@ -1046,7 +1052,7 @@ int GetRSACret(int partnerId,const char *storeID,const char *posNo) ...@@ -1046,7 +1052,7 @@ int GetRSACret(int partnerId,const char *storeID,const char *posNo)
char request[MAX_BUF_LEN] = { 0 }; char request[MAX_BUF_LEN] = { 0 };
sprintf_s(request, MAX_BUF_LEN, REQUEST_CRET, partnerId, storeID, posNo, outmsg, global_info.posType); sprintf_s(request, MAX_BUF_LEN, REQUEST_CRET, partnerId, storeID, posNo, outmsg, global_info.posType, DLL_VERSION, global_info.serverurl.c_str() );
LOG() <<"GetRSACret:: DownloadRsaKey Req Upp Svr Body: "<< request; LOG() <<"GetRSACret:: DownloadRsaKey Req Upp Svr Body: "<< request;
...@@ -1054,6 +1060,7 @@ int GetRSACret(int partnerId,const char *storeID,const char *posNo) ...@@ -1054,6 +1060,7 @@ int GetRSACret(int partnerId,const char *storeID,const char *posNo)
// 未定义宏: FM_TESTS // 未定义宏: FM_TESTS
#ifndef FM_TESTS #ifndef FM_TESTS
// 请求获取证书公私钥;
if ( SendMsg(string(request), global_info.cretserverurl, 1) == 0 ) { if ( SendMsg(string(request), global_info.cretserverurl, 1) == 0 ) {
LOG() << "GetRSACret:: Error: "<< "Recive Data From: " << global_info.cretserverurl << " Failed"; LOG() << "GetRSACret:: Error: "<< "Recive Data From: " << global_info.cretserverurl << " Failed";
return 0; return 0;
...@@ -1063,8 +1070,8 @@ int GetRSACret(int partnerId,const char *storeID,const char *posNo) ...@@ -1063,8 +1070,8 @@ int GetRSACret(int partnerId,const char *storeID,const char *posNo)
#ifdef FM_TESTS #ifdef FM_TESTS
global_info.recvbuf = string(outmsg); global_info.recvbuf = string(outmsg);
#endif #endif
// 检查 从 Upp Server 获得的证书公私钥,并将 ①证书存储到本地文件,②公私钥存储在内存;
if ( CheckCret() == 0 ) { if ( CheckAndSaveCret() == 0 ) {
LOG() << "GetRSACret:: Error: "<< "Check Cret failed"; LOG() << "GetRSACret:: Error: "<< "Check Cret failed";
return 0; return 0;
} }
......
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
#define MAX_SIGN_LEN 256 #define MAX_SIGN_LEN 256
#define CFG_FILE_NAME "fmclient.cfg" #define CFG_FILE_NAME "fmclient.cfg"
#define RBG_FILE_NAME "fmclient.rbk" #define RBG_FILE_NAME "fmclient.rbk"
#define REQUEST_CRET "{\"ver\": 1,\"reqType\": 99,\"partnerId\":%d,\"storeId\":\"%s\",\"stationId\": \"%s\",\"mac\":\"%s\",\"posType\":%d}" #define REQUEST_CRET "{\"ver\": 1,\"reqType\": 99,\"partnerId\":%d,\"storeId\":\"%s\",\"stationId\": \"%s\",\"mac\":\"%s\",\"posType\":%d,\"dllVersion\":\"%s\",\"serverUrl\":\"%s\"}"
//CCO-1438 //CCO-1438
#define CCO_DES3_KEY "ABCD@#9876DFSAAWKLDEOPDD" #define CCO_DES3_KEY "ABCD@#9876DFSAAWKLDEOPDD"
......
...@@ -21,7 +21,7 @@ using namespace rapidjson; ...@@ -21,7 +21,7 @@ using namespace rapidjson;
class Tool { class Tool {
public: public:
static int GetMacByGetAdaptersAddresses(std::string& macOUT) { static int GetMacByAdaptersAddresses(std::string& macOut) {
bool ret = 0; bool ret = 0;
ULONG outBufLen = sizeof(IP_ADAPTER_ADDRESSES); ULONG outBufLen = sizeof(IP_ADAPTER_ADDRESSES);
...@@ -53,7 +53,8 @@ public: ...@@ -53,7 +53,8 @@ public:
int (pCurrAddresses->PhysicalAddress[3]), int (pCurrAddresses->PhysicalAddress[3]),
int (pCurrAddresses->PhysicalAddress[4]), int (pCurrAddresses->PhysicalAddress[4]),
int (pCurrAddresses->PhysicalAddress[5])); int (pCurrAddresses->PhysicalAddress[5]));
macOUT = acMAC;
macOut = acMAC;
ret = 1; ret = 1;
break; break;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment