Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
S
sbkclient
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
李定达
sbkclient
Commits
30ab19b4
Commit
30ab19b4
authored
Aug 10, 2017
by
李定达
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
1.支付宝二期完成;2.调整签名到报文中;3.添加mac字段测试完成
parent
1745af69
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
94 additions
and
33 deletions
+94
-33
ZH_Client.suo
+0
-0
ZH_Client/dataprocess.h
+3
-0
ZH_Client/fmglobal.h
+1
-0
ZH_Client/sbk_client.cpp
+90
-33
No files found.
ZH_Client.suo
View file @
30ab19b4
No preview for this file type
ZH_Client/dataprocess.h
View file @
30ab19b4
...
@@ -392,6 +392,9 @@ public:
...
@@ -392,6 +392,9 @@ public:
json_object_foreach
(
root
,
key
,
value
)
json_object_foreach
(
root
,
key
,
value
)
{
{
//去除签名字段
if
(
strcmp
(
"sign"
,
key
)
==
0
)
continue
;
keys
[
i
]
=
std
::
string
(
key
);
keys
[
i
]
=
std
::
string
(
key
);
i
++
;
i
++
;
}
}
...
...
ZH_Client/fmglobal.h
View file @
30ab19b4
...
@@ -23,6 +23,7 @@
...
@@ -23,6 +23,7 @@
#define CRET_FILE_NAME "client.p12"
#define CRET_FILE_NAME "client.p12"
#define JSON_KEY_ONLY "partnerOrderId"
#define JSON_KEY_ONLY "partnerOrderId"
#define JSON_KEY_MAC "mac"
#define JSON_KEY_MAC "mac"
#define JSON_KEY_SIGN "sign"
#define JSON_KEY_FMTEST "test"
#define JSON_KEY_FMTEST "test"
#define CFG_KEY "template"
#define CFG_KEY "template"
...
...
ZH_Client/sbk_client.cpp
View file @
30ab19b4
...
@@ -868,13 +868,17 @@ size_t GetSign(void* buffer, size_t size, size_t nmemb, void *userdata)
...
@@ -868,13 +868,17 @@ size_t GetSign(void* buffer, size_t size, size_t nmemb, void *userdata)
return
size
*
nmemb
;
return
size
*
nmemb
;
}
}
int
GetRSASign
(
const
string
&
text
,
string
&
sign
)
int
GetRSASign
(
string
&
text
,
string
&
sign
)
{
{
char
tmp
[
MAX_SIGN_LEN
]
=
{
0
};
char
tmp
[
MAX_SIGN_LEN
]
=
{
0
};
string
keys
[
256
];
string
keys
[
256
];
string
tmps
;
string
tmps
;
int
len
=
0
;
int
len
=
0
;
json_t
*
root
,
*
reqtype
;
json_error_t
error
;
char
*
tmpp
;
if
((
len
=
DataProcess
::
GetJsonKeyArray
(
keys
,
text
))
==
0
)
if
((
len
=
DataProcess
::
GetJsonKeyArray
(
keys
,
text
))
==
0
)
return
0
;
return
0
;
...
@@ -891,6 +895,25 @@ int GetRSASign(const string &text, string &sign)
...
@@ -891,6 +895,25 @@ int GetRSASign(const string &text, string &sign)
if
(
DataProcess
::
RSASign
(
tmps
.
c_str
(),
tmp
,
MAX_SIGN_LEN
,
global_info
.
localprivatekey
.
c_str
())
==
0
)
if
(
DataProcess
::
RSASign
(
tmps
.
c_str
(),
tmp
,
MAX_SIGN_LEN
,
global_info
.
localprivatekey
.
c_str
())
==
0
)
return
0
;
return
0
;
sign
=
string
(
tmp
);
sign
=
string
(
tmp
);
root
=
json_loads
(
text
.
c_str
(),
0
,
&
error
);
if
(
!
root
)
{
LOG
()
<<
"argv is not json"
;
return
0
;
}
json_object_set
(
root
,
JSON_KEY_SIGN
,
json_string
(
sign
.
data
()));
tmpp
=
json_dumps
(
root
,
JSON_COMPACT
|
JSON_SORT_KEYS
);
text
=
std
::
string
(
tmpp
);
LOG
()
<<
"add sign json : "
<<
text
;
json_decref
(
root
);
return
1
;
return
1
;
}
}
...
@@ -960,32 +983,63 @@ int CheckRSASign()
...
@@ -960,32 +983,63 @@ int CheckRSASign()
int
GetRealSign
()
int
GetRealSign
()
{
{
if
(
!
global_info
.
sign
.
empty
())
{
int
i
=
global_info
.
sign
.
find
(
"
\r\n
sign: "
);
if
(
i
==
-
1
)
json_t
*
root
,
*
sign
=
NULL
;
return
0
;
json_error_t
error
;
char
*
tmp
;
string
tmp
=
global_info
.
sign
.
substr
(
i
+
strlen
(
"
\r\n
sign: "
),
global_info
.
sign
.
length
()
-
1
);
int
j
=
0
;
root
=
json_loads
(
global_info
.
recvbuf
.
data
(),
0
,
&
error
)
;
while
(
j
+
1
<
tmp
.
length
()
-
1
)
if
(
!
root
)
{
{
if
(
tmp
.
at
(
j
)
==
'\r'
&&
tmp
.
at
(
j
+
1
)
==
'\n'
)
LOG
()
<<
"argv is not json"
;
break
;
return
0
;
++
j
;
}
global_info
.
sign
=
tmp
.
substr
(
0
,
j
);
}
}
sign
=
json_object_get
(
root
,
"sign"
);
if
(
sign
==
NULL
||
!
json_is_string
(
sign
))
{
LOG
()
<<
"server return sign not string"
;
return
0
;
return
0
;
}
global_info
.
sign
=
string
(
json_string_value
(
sign
));
LOG
()
<<
"compress json : "
<<
global_info
.
sign
;
json_decref
(
root
);
return
1
;
//if(!global_info.sign.empty())
//{
// int i = global_info.sign.find("\r\nsign: ");
// if(i == -1)
// return 0;
// string tmp = global_info.sign.substr(i + strlen("\r\nsign: "), global_info.sign.length() - 1);
// int j = 0;
// while(j + 1 < tmp.length() - 1)
// {
// if(tmp.at(j) == '\r' && tmp.at(j + 1) == '\n')
// break ;
// ++ j;
// }
// global_info.sign = tmp.substr(0, j);
//}
//return 0;
}
}
int
SendMsg
(
const
std
::
string
&
text
,
const
string
&
url
,
int
iscret
)
int
SendMsg
(
const
std
::
string
&
text
,
const
string
&
url
,
int
iscret
)
{
{
curl_global_init
(
CURL_GLOBAL_ALL
);
curl_global_init
(
CURL_GLOBAL_ALL
);
string
gignbuf
=
text
;
global_info
.
recvbuf
.
clear
();
global_info
.
recvbuf
.
clear
();
CURLcode
rlt
;
CURLcode
rlt
;
...
@@ -1015,14 +1069,14 @@ int SendMsg(const std::string &text, const string &url, int iscret)
...
@@ -1015,14 +1069,14 @@ int SendMsg(const std::string &text, const string &url, int iscret)
string
sign
;
string
sign
;
if
(
GetRSASign
(
text
,
sign
)
==
0
)
if
(
GetRSASign
(
gignbuf
,
sign
)
==
0
)
{
{
global_info
.
error
=
string
(
ERROR_SIGN
);
global_info
.
error
=
string
(
ERROR_SIGN
);
LOG
()
<<
"Get RSA Sign failed"
;
LOG
()
<<
"Get RSA Sign failed"
;
return
0
;
return
0
;
}
}
LOG
()
<<
"get sign : "
<<
sign
;
LOG
()
<<
"get sign : "
<<
sign
;
headers
=
curl_slist_append
(
headers
,
string
(
"sign:"
).
append
(
sign
).
c_str
());
//
headers = curl_slist_append(headers, string("sign:").append(sign).c_str());
}
}
headers
=
curl_slist_append
(
headers
,
"Content-Type:application/json;charset=utf-8"
);
headers
=
curl_slist_append
(
headers
,
"Content-Type:application/json;charset=utf-8"
);
headers
=
curl_slist_append
(
headers
,
"Accept:application/json"
);
headers
=
curl_slist_append
(
headers
,
"Accept:application/json"
);
...
@@ -1031,15 +1085,15 @@ int SendMsg(const std::string &text, const string &url, int iscret)
...
@@ -1031,15 +1085,15 @@ int SendMsg(const std::string &text, const string &url, int iscret)
}
}
else
else
{
{
headers
=
curl_slist_append
(
headers
,
"Content-Type:
text
;charset=utf-8"
);
headers
=
curl_slist_append
(
headers
,
"Content-Type:
application/json
;charset=utf-8"
);
headers
=
curl_slist_append
(
headers
,
"Accept:
text
"
);
headers
=
curl_slist_append
(
headers
,
"Accept:
application/json
"
);
//headers = curl_slist_append(headers, "Authorization:dXBzLWNsaWVudDo2VGk4TjBXNzRyb1A=");
//headers = curl_slist_append(headers, "Authorization:dXBzLWNsaWVudDo2VGk4TjBXNzRyb1A=");
headers
=
curl_slist_append
(
headers
,
"Authorization: Basic dXBzLWNsaWVudDo2VGk4TjBXNzRyb1A="
);
headers
=
curl_slist_append
(
headers
,
"Authorization: Basic dXBzLWNsaWVudDo2VGk4TjBXNzRyb1A="
);
}
}
curl_easy_setopt
(
curl
,
CURLOPT_URL
,
url
.
c_str
());
curl_easy_setopt
(
curl
,
CURLOPT_URL
,
url
.
c_str
());
curl_easy_setopt
(
curl
,
CURLOPT_POST
,
1
);
curl_easy_setopt
(
curl
,
CURLOPT_POST
,
1
);
curl_easy_setopt
(
curl
,
CURLOPT_POSTFIELDS
,
text
.
c_str
());
curl_easy_setopt
(
curl
,
CURLOPT_POSTFIELDS
,
gignbuf
.
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
,
GetSign
);
...
@@ -1052,8 +1106,8 @@ int SendMsg(const std::string &text, const string &url, int iscret)
...
@@ -1052,8 +1106,8 @@ int SendMsg(const std::string &text, const string &url, int iscret)
if
(
rlt
==
CURLE_OK
)
if
(
rlt
==
CURLE_OK
)
{
{
res
=
1
;
res
=
1
;
LOG
()
<<
"recv http head "
<<
global_info
.
sign
;
if
(
global_info
.
useRSA
==
1
&&
iscret
==
0
)
if
(
global_info
.
useRSA
==
1
&&
iscret
==
0
)
GetRealSign
();
GetRealSign
();
LOG
()
<<
"recv msg from:"
<<
url
;
LOG
()
<<
"recv msg from:"
<<
url
;
...
@@ -1194,18 +1248,18 @@ extern "C"
...
@@ -1194,18 +1248,18 @@ extern "C"
if
(
GetRealJson
(
req
,
std
::
string
(
request
))
==
0
)
if
(
GetRealJson
(
req
,
std
::
string
(
request
))
==
0
)
return
0
;
return
0
;
char
outmsg
[
MAX_BUF_LEN
]
=
{
0
};
//
char outmsg[MAX_BUF_LEN] = { 0 };
int
legth
=
0
;
//
int legth = 0;
if
((
legth
=
DataProcess
::
DES3Encode
((
const
unsigned
char
*
)
DES3_KEY
,
req
.
c_str
(),
req
.
length
(),
(
unsigned
char
*
)
outmsg
,
MAX_BUF_LEN
))
==
0
)
//
if((legth = DataProcess::DES3Encode((const unsigned char *)DES3_KEY, req.c_str(), req.length(), (unsigned char *)outmsg, MAX_BUF_LEN)) == 0)
{
//
{
LOG
()
<<
"3DES encode failed"
;
//
LOG() << "3DES encode failed";
return
0
;
//
return 0;
}
//
}
LOG
()
<<
"3DES Encode(base64):"
<<
outmsg
;
//
LOG() << "3DES Encode(base64):" << outmsg ;
#ifndef FM_TESTS
#ifndef FM_TESTS
if
(
SendMsg
(
string
(
outmsg
)
,
global_info
.
cretserverurl
,
1
)
==
0
)
if
(
SendMsg
(
req
,
global_info
.
cretserverurl
,
1
)
==
0
)
{
{
LOG
()
<<
"recive data from:"
<<
global_info
.
cretserverurl
<<
" failed"
;
LOG
()
<<
"recive data from:"
<<
global_info
.
cretserverurl
<<
" failed"
;
return
0
;
return
0
;
...
@@ -1265,7 +1319,8 @@ void testinitclient()
...
@@ -1265,7 +1319,8 @@ void testinitclient()
//char a[] = "{\r\n \"pay_transId\":\"2017052600001162504297\",\r\n \"total_amount\":1,\r\n \"mcoupon_amount\":0,\r\n \"alipay_amount\":1,\r\n \"pay_ebcode\":\"10010\",\r\n \"ver\":1,\r\n \"fmId\":\"SXA1377O27012186844\",\r\n \"pay_date\":\"2017-05-26 17:01:16.004\",\r\n \"statusCode\":100\r\n}";
//char a[] = "{\r\n \"pay_transId\":\"2017052600001162504297\",\r\n \"total_amount\":1,\r\n \"mcoupon_amount\":0,\r\n \"alipay_amount\":1,\r\n \"pay_ebcode\":\"10010\",\r\n \"ver\":1,\r\n \"fmId\":\"SXA1377O27012186844\",\r\n \"pay_date\":\"2017-05-26 17:01:16.004\",\r\n \"statusCode\":100\r\n}";
//char a[] = "{\"businessDate\":\"20170526\",\"code\":\"7310180009462033\",\"operatorId\":\"90001\",\"partnerId\":1443,\"products\":[{\"consume_num\":1,\"discount\":0,\"name\":\"Coffee\",\"number\":0,\"payment\":null,\"pid\":\"3488\",\"price\":3100,\"priceAct\":0,\"salesType\":\"Normal\",\"scope\":null}],\"promotionTag\":null,\"reqType\":71,\"stationId\":\"3\",\"storeId\":\"1713\",\"transAmount\":3100,\"transId\":\"6460\",\"undiscountAmount\":0,\"ver\":1}";
//char a[] = "{\"businessDate\":\"20170526\",\"code\":\"7310180009462033\",\"operatorId\":\"90001\",\"partnerId\":1443,\"products\":[{\"consume_num\":1,\"discount\":0,\"name\":\"Coffee\",\"number\":0,\"payment\":null,\"pid\":\"3488\",\"price\":3100,\"priceAct\":0,\"salesType\":\"Normal\",\"scope\":null}],\"promotionTag\":null,\"reqType\":71,\"stationId\":\"3\",\"storeId\":\"1713\",\"transAmount\":3100,\"transId\":\"6460\",\"undiscountAmount\":0,\"ver\":1}";
//char a[] = "{\r\n \"ver\": 1,\r\n \"reqType\": 71,\r\n \"partnerId\": 1443,\r\n \"stationId\": \"1\",\r\n \"storeId\": \"12344\",\r\n \"operatorId\": \"9\",\r\n \"code\": \"adadadada\"\r\n}";
//char a[] = "{\r\n \"ver\": 1,\r\n \"reqType\": 71,\r\n \"partnerId\": 1443,\r\n \"stationId\": \"1\",\r\n \"storeId\": \"12344\",\r\n \"operatorId\": \"9\",\r\n \"code\": \"adadadada\"\r\n}";
char
a
[]
=
"{
\r\n
\"
businessDate
\"
:
\"
20170601
\"
,
\r\n
\"
code
\"
:
\"
7310188850000277
\"
,
\r\n
\"
operatorId
\"
:
\"
90001
\"
,
\r\n
\"
partnerId
\"
: 1443,
\r\n
\"
partnerOrderId
\"
:
\"
1443171223323
\"
,
\r\n
\"
products
\"
: [
\r\n
{
\r\n
\"
consume_num
\"
: 1,
\r\n
\"
discount
\"
: 0,
\r\n
\"
name
\"
:
\"
Coffee
\"
,
\r\n
\"
number
\"
: 0,
\r\n
\"
payment
\"
: null,
\r\n
\"
pid
\"
:
\"
3488
\"
,
\r\n
\"
price
\"
: 3100,
\r\n
\"
priceAct
\"
: 0,
\r\n
\"
salesType
\"
:
\"
Normal
\"
,
\r\n
\"
scope
\"
: null
\r\n
}
\r\n
],
\r\n
\"
promotionTag
\"
: null,
\r\n
\"
reqType
\"
: 102,
\r\n
\"
stationId
\"
:
\"
9
\"
,
\r\n
\"
storeId
\"
:
\"
12344
\"
,
\r\n
\"
transAmount
\"
: 29,
\r\n
\"
transId
\"
:
\"
1
\"
,
\r\n
\"
undiscountAmount
\"
: 0,
\r\n
\"
ver
\"
: 1
\r\n
}"
;
//char a[] = "{\r\n \"businessDate\": \"20170601\",\r\n \"code\": \"281345679987654321\",\r\n \"operatorId\": \"90001\",\r\n \"partnerId\": 1443,\r\n \"partnerOrderId\": \"1443171223323\",\r\n \"products\": [\r\n {\r\n \"consume_num\": 1,\r\n \"discount\": 0,\r\n \"name\": \"Coffee\",\r\n \"number\": 0,\r\n \"payment\": null,\r\n \"pid\": \"3488\",\r\n \"price\": 3100,\r\n \"priceAct\": 0,\r\n \"salesType\": \"Normal\",\r\n \"scope\": null\r\n }\r\n ],\r\n \"promotionTag\": null,\r\n \"reqType\": 102,\r\n \"stationId\": \"1\",\r\n \"storeId\": \"17607\",\r\n \"transAmount\": 29,\r\n \"transId\": \"1\",\r\n \"undiscountAmount\": 0,\r\n \"ver\": 1\r\n}";
char
a
[]
=
"{
\n
\"
ver
\"
: 1,
\n
\"
code
\"
:
\"
289006089730084695
\"
,
\n
\"
mac
\"
:
\"
C8-D3-FF-A3-D0-FE
\"
,
\n
\"
partnerOrderId
\"
:
\"
28197890622498235
\"
,
\n
\"
transId
\"
:
\"
1
\"
,
\n
\"
storeId
\"
:
\"
17607
\"
,
\n
\"
products
\"
: [
\n
{
\n
\"
salesType
\"
:
\"
Normal
\"
,
\n
\"
number
\"
: 0,
\n
\"
priceAct
\"
: 0,
\n
\"
price
\"
: 3100,
\n
\"
name
\"
:
\"
Coffee
\"
,
\n
\"
discount
\"
: 0,
\n
\"
pid
\"
:
\"
3488
\"
,
\n
\"
consume_num
\"
: 1
\n
}
\n
],
\n
\"
transAmount
\"
: 200001,
\n
\"
businessDate
\"
:
\"
20170731
\"
,
\n
\"
undiscountAmount
\"
: 0,
\n
\"
reqType
\"
: 72,
\n
\"
partnerId
\"
: 1443,
\n
\"
operatorId
\"
:
\"
1000
\"
,
\n
\"
stationId
\"
:
\"
2
\"
,
\n
\"
test
\"
:
\"
test
\"\n
}"
;
char
ls
[]
=
"0|1443|fm9999|1|01|120754391530891|END|"
;
char
ls
[]
=
"0|1443|fm9999|1|01|120754391530891|END|"
;
char
ls1
[]
=
"3|1443|fm9999|1|01|120754391530891|20170717||8888|END|"
;
char
ls1
[]
=
"3|1443|fm9999|1|01|120754391530891|20170717||8888|END|"
;
char
ls2
[]
=
"71|1443|fm9999|1|01|120754391530891|20170717||8888|END|"
;
char
ls2
[]
=
"71|1443|fm9999|1|01|120754391530891|20170717||8888|END|"
;
...
@@ -1285,6 +1340,8 @@ int main()
...
@@ -1285,6 +1340,8 @@ int main()
char
storeid
[]
=
"12344"
;
char
storeid
[]
=
"12344"
;
char
posno
[]
=
"01"
;
char
posno
[]
=
"01"
;
GetRSACret
(
1443
,
"17607"
,
"2"
);
//TestComplementJson();
//TestComplementJson();
//Test_RSASign();
//Test_RSASign();
...
@@ -1312,9 +1369,9 @@ int main()
...
@@ -1312,9 +1369,9 @@ int main()
//GetRSACret(1443, storeid, posno);
//GetRSACret(1443, storeid, posno);
//while(1)
//while(1)
//{
//{
//
GetValue(a, b);
GetValue
(
a
,
b
);
//
LOG() << b;
LOG
()
<<
b
;
// Sleep(30*1000);
// Sleep(30*1000);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment