sdk/qywx-sdk/windows/C_sdk/FinanceSdkDemo/main.cpp

118 lines
4.4 KiB
C++
Raw Normal View History

2025-08-18 09:05:41 +00:00
#include "WeWorkFinanceSdk_C.h"
#include <stdio.h>
#include <stdint.h>
#include <stdlib.h>
#include <string>
using std::string;
#pragma comment(lib, "WeWorkFinanceSdk.lib")
int main(int argc, char* argv[])
{
int ret = 0;
//seq <20><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>ҵ<EFBFBD><EFBFBD><E6B5B5>Ϣ<EFBFBD><CFA2><EFBFBD>ţ<EFBFBD><C5A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ŵ<EFBFBD><C5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD>Ž<EFBFBD><C5BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD>ϴ<EFBFBD><CFB4><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD>ؽ<EFBFBD><D8BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>š<EFBFBD><C5A1>״<EFBFBD><D7B4><EFBFBD>ȡʱseq<65><71>0<EFBFBD><30>sdk<64><EFBFBD><E1B7B5><EFBFBD><EFBFBD>Ч<EFBFBD><D0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2>
//limit <20><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡֵ<C8A1><D6B5>ΧΪ1~1000
//proxy<78><79>passwdΪ<64><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>sdk<64>Ļ<EFBFBD><C4BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD>ӷ<EFBFBD><D3B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD>ô<EFBFBD><C3B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>sdk<64><6B><EFBFBD>ʵ<EFBFBD><CAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"https://qyapi.weixin.qq.com"<22><>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8>curl<72><6C><EFBFBD><EFBFBD>"https://qyapi.weixin.qq.com"<22><><EFBFBD><EFBFBD>֤<EFBFBD><D6A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȷ<EFBFBD><C8B7><EFBFBD><EFBFBD><EFBFBD>ٴ<EFBFBD><D9B4><EFBFBD>sdk<64><6B>
//timeout Ϊ<><CEAA>ȡ<EFBFBD><EFBFBD><EFBFBD>ij<EFBFBD>ʱʱ<CAB1><EFBFBD><E4A3AC>λΪ<CEBB><EFBFBD><EBA3AC><EFBFBD>鳬ʱʱ<CAB1><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ5s<35><73>
//sdkfileid ý<><C3BD><EFBFBD>ļ<EFBFBD>id<69><64><EFBFBD>ӽ<EFBFBD><D3BD>ܺ<EFBFBD><DCBA>ĻỰ<C4BB><EFBFBD>еõ<D0B5>
//savefile ý<><C3BD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><C2B7>
//encrypt_key <20><>ȡ<EFBFBD><EFBFBD><EFBFBD><E6B5B5><EFBFBD>ص<EFBFBD>encrypt_random_key<65><79>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ΢<D2B5>Ź<EFBFBD><C5B9><EFBFBD>̨<EFBFBD><CCA8>rsa<73><61>Կ<EFBFBD><D4BF>Ӧ<EFBFBD><D3A6>˽Կ<CBBD><D4BF><EFBFBD>ܺ<EFBFBD><DCBA>õ<EFBFBD>encrypt_key<65><79>
//encrypt_chat_msg <20><>ȡ<EFBFBD><EFBFBD><EFBFBD><E6B5B5><EFBFBD>ص<EFBFBD>encrypt_chat_msg
//if (argc < 2) {
// printf("./sdktools 1(chatmsg) 2(mediadata) 3(decryptdata)\n");
// printf("./sdktools 1 seq limit proxy passwd timeout\n");
// printf("./sdktools 2 fileid proxy passwd timeout savefile\n");
// printf("./sdktools 3 encrypt_key encrypt_chat_msg\n");
// return -1;
//}
//ʹ<><CAB9>sdkǰ<6B><C7B0>Ҫ<EFBFBD><D2AA>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD>ɹ<EFBFBD><C9B9><EFBFBD><EFBFBD><EFBFBD>sdk<64><6B><EFBFBD><EFBFBD>һֱʹ<D6B1>á<EFBFBD>
//<2F><><EFBFBD><EFBFBD><E8B2A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>sdk<64><6B><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ÿ<EFBFBD><C3BF><EFBFBD>̳߳<DFB3><CCB3><EFBFBD>һ<EFBFBD><D2BB>sdkʵ<6B><CAB5><EFBFBD><EFBFBD>
//<2F><>ʼ<EFBFBD><CABC>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD><D4BC><EFBFBD>ҵ<EFBFBD><D2B5>corpid<69><64>secrectkey<65><79>
WeWorkFinanceSdk_t* sdk = NewSdk();
ret = Init(sdk, "w*********8", "y***********************************I");
if (ret != 0) {
//sdk<64><6B>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD>
DestroySdk(sdk);
printf("init sdk err ret:%d\n", ret);
return -1;
}
int type = strtoul(argv[1], NULL, 10);
if (type == 1) {
//<2F><>ȡ<EFBFBD><EFBFBD>
uint64_t iSeq = strtoul(argv[2], NULL, 10);
uint64_t iLimit = strtoul(argv[3], NULL, 10);
uint64_t timeout = strtoul(argv[6], NULL, 10);
//ÿ<><C3BF>ʹ<EFBFBD><CAB9>GetChatData<74><61>ȡ<EFBFBD>浵ǰ<E6B5B5><C7B0>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>NewSlice<63><65>ȡһ<C8A1><D2BB>chatDatas<61><73><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD>chatDatas<61><73><EFBFBD><EFBFBD><EFBFBD>ݺ󣬻<DDBA><F3A3ACBB><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>FreeSlice<63>ͷš<CDB7>
Slice_t* chatDatas = NewSlice();
ret = GetChatData(sdk, iSeq, iLimit, argv[4], argv[5], timeout, chatDatas);
if (ret != 0) {
FreeSlice(chatDatas);
printf("GetChatData err ret:%d\n", ret);
return -1;
}
printf("GetChatData len:%d data:%s\n", chatDatas->len, chatDatas->buf);
FreeSlice(chatDatas);
}
else if (type == 2) {
//<2F><>ȡý<C8A1><C3BD><EFBFBD>ļ<EFBFBD>
std::string index;
uint64_t timeout = strtoul(argv[5], NULL, 10);
int isfinish = 0;
//ý<><C3BD><EFBFBD>ļ<EFBFBD>ÿ<EFBFBD><C3BF><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>sizeΪ512k<32><6B><EFBFBD><EFBFBD><EFBFBD>˳<EFBFBD><CBB3><EFBFBD>512k<32><6B><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>Ҫ<EFBFBD><D2AA>Ƭ<EFBFBD><C6AC>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>δ<EFBFBD><CEB4>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>mediaData<74>е<EFBFBD>is_finish<73><EFBFBD><E1B7B5>0<EFBFBD><30>ͬʱmediaData<74>е<EFBFBD>outindexbuf<75><EFBFBD><E1B7B5><EFBFBD>´<EFBFBD><C2B4><EFBFBD>ȡ<EFBFBD><C8A1>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>GetMediaData<74><61>indexbuf<75><66>
//indexbufһ<66><D2BB><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD><EFBFBD>Ҳ<EFBFBD><D2B2><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>Range:bytes=524288-1048575<37><35><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD>Ǵ<EFBFBD>524288<38><38>1048575<37>ķ<EFBFBD>Ƭ<EFBFBD><C6AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC>״<EFBFBD><D7B4><EFBFBD>ȡ<EFBFBD><C8A1>д<EFBFBD><D0B4>indexbufΪ<66><CEAA><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƭʱֱ<CAB1><D6B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϴη<CFB4><CEB7>ص<EFBFBD>indexbuf<75><66><EFBFBD>ɡ<EFBFBD>
while (isfinish == 0) {
//ÿ<><C3BF>ʹ<EFBFBD><CAB9>GetMediaData<74><61>ȡ<EFBFBD>浵ǰ<E6B5B5><C7B0>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>NewMediaData<74><61>ȡһ<C8A1><D2BB>mediaData<74><61><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD>mediaData<74><61><EFBFBD><EFBFBD><EFBFBD>ݺ󣬻<DDBA><F3A3ACBB><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>FreeMediaData<74>ͷš<CDB7>
printf("index:%s\n", index.c_str());
MediaData_t* mediaData = NewMediaData();
ret = GetMediaData(sdk, index.c_str(), argv[2], argv[3], argv[4], timeout, mediaData);
if (ret != 0) {
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƭ<EFBFBD><C6AC>ȡʧ<C8A1>ܽ<EFBFBD><DCBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD>÷<EFBFBD>Ƭ<EFBFBD><C6AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7>ʼ<EFBFBD><CABC>ȡ<EFBFBD><C8A1>
FreeMediaData(mediaData);
printf("GetMediaData err ret:%d\n", ret);
return -1;
}
printf("content size:%d isfin:%d outindex:%s\n", mediaData->data_len, mediaData->is_finish, mediaData->outindexbuf);
//<2F><><EFBFBD><EFBFBD>512k<32><6B><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>Ƭ<EFBFBD><C6AC>ȡ<EFBFBD><C8A1><EFBFBD>˴<EFBFBD><CBB4><EFBFBD>Ҫʹ<D2AA><CAB9>׷<EFBFBD><D7B7>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ķ<EFBFBD>Ƭ<EFBFBD><C6AC><EFBFBD><EFBFBD>֮ǰ<D6AE><C7B0><EFBFBD><EFBFBD><EFBFBD>ݡ<EFBFBD>
char file[200];
snprintf(file, sizeof(file), "%s", argv[6]);
FILE* fp = fopen(file, "ab+");
printf("filename:%s \n", file);
if (NULL == fp) {
FreeMediaData(mediaData);
printf("open file err\n");
return -1;
}
fwrite(mediaData->data, mediaData->data_len, 1, fp);
fclose(fp);
//<2F><>ȡ<EFBFBD>´<EFBFBD><C2B4><EFBFBD>ȡ<EFBFBD><C8A1>Ҫʹ<D2AA>õ<EFBFBD>indexbuf
index.assign(string(mediaData->outindexbuf));
isfinish = mediaData->is_finish;
FreeMediaData(mediaData);
}
}
else if (type == 3) {
//<2F><><EFBFBD>ܻỰ<DCBB><EFBFBD><E6B5B5><EFBFBD><EFBFBD>
//sdk<64><6B><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>rsa˽Կ<CBBD><D4BF><EFBFBD><EFBFBD>֤<EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><E6B5B5><EFBFBD><EFBFBD>ֻ<EFBFBD><D6BB><EFBFBD>Լ<EFBFBD><D4BC>ܹ<EFBFBD><DCB9><EFBFBD><EFBFBD>ܡ<EFBFBD>
//<2F>˴<EFBFBD><CBB4><EFBFBD>Ҫ<EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>rsa˽Կ<CBBD><D4BF><EFBFBD><EFBFBD>encrypt_random_key<65><79><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊencrypt_key<65><79><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>sdk<64><6B><EFBFBD><EFBFBD><EFBFBD><EFBFBD>encrypt_chat_msg<73><67>ȡ<EFBFBD><EFBFBD><EFBFBD><E6B5B5><EFBFBD>ġ<EFBFBD>
//ÿ<><C3BF>ʹ<EFBFBD><CAB9>DecryptData<74><61><EFBFBD>ܻỰ<DCBB>浵ǰ<E6B5B5><C7B0>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>NewSlice<63><65>ȡһ<C8A1><D2BB>Msgs<67><73><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD>Msgs<67><73><EFBFBD><EFBFBD><EFBFBD>ݺ󣬻<DDBA><F3A3ACBB><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>FreeSlice<63>ͷš<CDB7>
Slice_t* Msgs = NewSlice();
ret = DecryptData(argv[2], argv[3], Msgs);
printf("chatdata :%s ret :%d\n", Msgs->buf, ret);
FreeSlice(Msgs);
}
DestroySdk(sdk);
return ret;
}