Commit e81624bf by 李定达

1.调整日志打印路径;2.调整dll加载路径;3.日结单功能实现

parent ffcf864b
build-sbkpay-Desktop_Qt_5_5_1_MinGW_32bit-Debug/ build-sbkpay-Desktop_Qt_5_5_1_MinGW_32bit-Debug/
build-sbkpay-Desktop_Qt_5_5_1_MSVC2010_32bit-Debug/ build-sbkpay-Desktop_Qt_5_5_1_MSVC2010_32bit-Debug/
build-sbkpay-Desktop_Qt_5_5_1_MSVC2010_32bit-Release/
...@@ -11,9 +11,30 @@ ...@@ -11,9 +11,30 @@
#include <QJsonObject> #include <QJsonObject>
#include <QEventLoop> #include <QEventLoop>
#include <QJsonDocument> #include <QJsonDocument>
#include <Windows.h>
typedef int (* GetValue) (char *, char *); EXTERN_C IMAGE_DOS_HEADER __ImageBase;
typedef int (* GetRSACret)(int ,const char *,const char *);
typedef int (__stdcall *GetValue) (char *, char *);
typedef int (__stdcall *GetRSACret)(int ,const char *,const char *);
void Control::GetProcPath(char * pathBuf)
{
int curPos;
GetModuleFileNameA((HMODULE)&__ImageBase, pathBuf, MAX_PATH);
curPos = strlen(pathBuf) - 1;
while('\\' != pathBuf[curPos])
{
curPos--;
}
curPos++;
pathBuf[curPos] = '\0';
}
Control::Control(QObject *parent) : QObject(parent), _widget(NULL) Control::Control(QObject *parent) : QObject(parent), _widget(NULL)
{ {
...@@ -72,7 +93,14 @@ void Control::InitModel() ...@@ -72,7 +93,14 @@ void Control::InitModel()
bool Control::SendMessageToPayMent(const QJsonObject &json, QByteArray &outdata, QString &error) bool Control::SendMessageToPayMent(const QJsonObject &json, QByteArray &outdata, QString &error)
{ {
QLibrary lib(qApp->applicationDirPath() + "/" + "FreemudWrapper.dll");
char mod[MAX_PATH] = { 0 };
GetProcPath(mod);
QLibrary lib(QString(mod) + "\\" + "FreemudWrapper.dll");
QLOG_INFO() << QString(mod) + "\\" + "FreemudWrapper.dll";
if(lib.load()) if(lib.load())
{ {
...@@ -121,7 +149,11 @@ bool Control::SendMessageToPayMent(const QJsonObject &json, QByteArray &outdata, ...@@ -121,7 +149,11 @@ bool Control::SendMessageToPayMent(const QJsonObject &json, QByteArray &outdata,
bool Control::GetRSA(QString &error) bool Control::GetRSA(QString &error)
{ {
QLibrary lib(qApp->applicationDirPath() + "/" + "FreemudWrapper.dll"); char mod[MAX_PATH] = { 0 };
GetProcPath(mod);
QLibrary lib(QString(mod) + "\\" + "FreemudWrapper.dll");
int rlt = 0; int rlt = 0;
error.clear(); error.clear();
...@@ -136,7 +168,7 @@ bool Control::GetRSA(QString &error) ...@@ -136,7 +168,7 @@ bool Control::GetRSA(QString &error)
QEventLoop loop; QEventLoop loop;
QtConcurrent::run( [ this, &loop, &rlt, &error, getrsacret]() QtConcurrent::run( [ this, &loop, &rlt, &error, getrsacret]()
{ {
int i = FMTool::GetString(_request.Reserved1, 48).toInt(); int i = FMTool::GetString(_request.PlatNo, 4).toInt();
QString storeID = FMTool::GetString(_request.StoreNo, 20); QString storeID = FMTool::GetString(_request.StoreNo, 20);
QString PosNO = FMTool::GetString(_request.DeviceNo, 6); QString PosNO = FMTool::GetString(_request.DeviceNo, 6);
rlt = getrsacret(i, storeID.toLatin1().data(), PosNO.toLatin1().data()); rlt = getrsacret(i, storeID.toLatin1().data(), PosNO.toLatin1().data());
...@@ -213,6 +245,8 @@ void Control::Request(ReqType type, QStringList list) ...@@ -213,6 +245,8 @@ void Control::Request(ReqType type, QStringList list)
if(rlt) if(rlt)
rlt = Control::GetJson(type, rtjson, outdata, error); rlt = Control::GetJson(type, rtjson, outdata, error);
else
SetResPonseWithMessage("23", error);
_lock.lock(); _lock.lock();
if(_widget != NULL) if(_widget != NULL)
......
...@@ -18,6 +18,10 @@ public: ...@@ -18,6 +18,10 @@ public:
void Start(const char *indata, char *outdata); void Start(const char *indata, char *outdata);
static void GetProcPath(char *pathBuf);
signals:
void Exits();
private: private:
void GetResponse(QString errormessage, AlipayResponse &response); void GetResponse(QString errormessage, AlipayResponse &response);
......
...@@ -128,8 +128,8 @@ public: ...@@ -128,8 +128,8 @@ public:
static void SetString(void *beginptr, int size, const QString &in) static void SetString(void *beginptr, int size, const QString &in)
{ {
char buf[MAX_CHILED_LEN] = { 0 }; char buf[MAX_PRINT_LEN] = { 0 };
char tmpbuf[MAX_CHILED_LEN] = { 0 }; char tmpbuf[MAX_PRINT_LEN] = { 0 };
memset(beginptr, ' ', size); memset(beginptr, ' ', size);
...@@ -138,9 +138,9 @@ public: ...@@ -138,9 +138,9 @@ public:
strcpy(buf, in.toUtf8().data()); strcpy(buf, in.toUtf8().data());
int len = UTF8ToGBK((unsigned char *)buf, (unsigned char *)tmpbuf, MAX_CHILED_LEN); int len = UTF8ToGBK((unsigned char *)buf, (unsigned char *)tmpbuf, MAX_PRINT_LEN);
strncpy((char *)beginptr, tmpbuf, len - 1); memcpy((char *)beginptr, tmpbuf, len - 1);
//qDebug() << tmpbuf; //qDebug() << tmpbuf;
......
...@@ -24,6 +24,7 @@ ...@@ -24,6 +24,7 @@
#define JSON_KEY_FMID "fmId" #define JSON_KEY_FMID "fmId"
#define JSON_KEY_TRANSAMOUNT "transAmount" #define JSON_KEY_TRANSAMOUNT "transAmount"
#define JSON_KEY_REFUNDAMOUT "refundAmount" #define JSON_KEY_REFUNDAMOUT "refundAmount"
#define JSON_KEY_ENDTIME "endTime"
//response //response
#define JSON_KEY_MESSAGE "message" #define JSON_KEY_MESSAGE "message"
...@@ -33,6 +34,7 @@ ...@@ -33,6 +34,7 @@
#define JSON_KEY_PRINT "print" #define JSON_KEY_PRINT "print"
#define JSON_KEY_UNAMOUNT "undiscountAmount" #define JSON_KEY_UNAMOUNT "undiscountAmount"
#define JSON_KEY_PARTORDERID "partnerOrderId"
//array products //array products
#define JSON_KEY_PRODUCTS "products" #define JSON_KEY_PRODUCTS "products"
......
...@@ -23,7 +23,7 @@ HostWidget::HostWidget(QWidget *parent) : ...@@ -23,7 +23,7 @@ HostWidget::HostWidget(QWidget *parent) :
_curr_show_widget = NULL; _curr_show_widget = NULL;
ui->btn_mananger_print->setEnabled(false); //ui->btn_mananger_print->setEnabled(false);
ui->btn_mananger_check->setEnabled(false); ui->btn_mananger_check->setEnabled(false);
InitWidget(); InitWidget();
...@@ -61,7 +61,8 @@ void HostWidget::ShowWidget(QWidget *showwidget) ...@@ -61,7 +61,8 @@ void HostWidget::ShowWidget(QWidget *showwidget)
} }
_widgetlist.at(i)->hide(); _widgetlist.at(i)->hide();
} }
this->show(); //this->show();
this->showFullScreen();
} }
void HostWidget::InitWidget() void HostWidget::InitWidget()
...@@ -150,18 +151,6 @@ void HostWidget::ShowWithRequest(AlipayRequest request) ...@@ -150,18 +151,6 @@ void HostWidget::ShowWithRequest(AlipayRequest request)
ui->btn_pay_exit->setText(QString::fromLocal8Bit("取消退款")); ui->btn_pay_exit->setText(QString::fromLocal8Bit("取消退款"));
ui->label_pay_money->setText(QString::fromLocal8Bit("退款 ¥ %1").arg(Amount)); ui->label_pay_money->setText(QString::fromLocal8Bit("退款 ¥ %1").arg(Amount));
} }
if(reqtype.compare("80") == 0)
{
ShowWidget(ui->pay);
_curr_show_widget = ui->pay;
}
if(reqtype.compare("90") == 0)
{
ShowWidget(ui->pay);
_curr_show_widget = ui->pay;
}
} }
void HostWidget::ShowWiteMGS(ReqType type, bool flag, QString message) void HostWidget::ShowWiteMGS(ReqType type, bool flag, QString message)
...@@ -226,6 +215,12 @@ void HostWidget::ShowWiteMGS(ReqType type, bool flag, QString message) ...@@ -226,6 +215,12 @@ void HostWidget::ShowWiteMGS(ReqType type, bool flag, QString message)
return ; return ;
} }
if(type == endday)
{
emit Exits();
return;
}
} }
void HostWidget::on_btn_mananger_register_clicked() void HostWidget::on_btn_mananger_register_clicked()
......
...@@ -61,7 +61,7 @@ private: ...@@ -61,7 +61,7 @@ private:
json.insert(JSON_KEY_VER, DEFAULT_JSON_VER_VALUE); json.insert(JSON_KEY_VER, DEFAULT_JSON_VER_VALUE);
json.insert(JSON_KEY_REQTYPE, JSON_REQTYPE_PAY); json.insert(JSON_KEY_REQTYPE, JSON_REQTYPE_PAY);
json.insert(JSON_KEY_PARTNERID, FMTool::GetString((const void *)&(request.Reserved1), 48).toInt()); json.insert(JSON_KEY_PARTNERID, FMTool::GetString((const void *)&(request.PlatNo), 4).toInt());
json.insert(JSON_KEY_STOREID, FMTool::GetString((const void *)&(request.StoreNo), 20)); json.insert(JSON_KEY_STOREID, FMTool::GetString((const void *)&(request.StoreNo), 20));
json.insert(JSON_KEY_STATIONID, FMTool::GetString((const void *)&(request.DeviceNo), 6)); json.insert(JSON_KEY_STATIONID, FMTool::GetString((const void *)&(request.DeviceNo), 6));
json.insert(JSON_KEY_OPERATORID, FMTool::GetString((const void *)&(request.CashierNo), 6)); json.insert(JSON_KEY_OPERATORID, FMTool::GetString((const void *)&(request.CashierNo), 6));
...@@ -70,6 +70,7 @@ private: ...@@ -70,6 +70,7 @@ private:
json.insert(JSON_KEY_CODE, list[0]); json.insert(JSON_KEY_CODE, list[0]);
json.insert(JSON_KEY_TRANSAMOUNT, FMTool::GetString((const void *)&(request.Amount), 12).toInt()); json.insert(JSON_KEY_TRANSAMOUNT, FMTool::GetString((const void *)&(request.Amount), 12).toInt());
json.insert(JSON_KEY_UNAMOUNT, FMTool::GetString((const void *)&(request.non_sale_Amount), 12).toInt()); json.insert(JSON_KEY_UNAMOUNT, FMTool::GetString((const void *)&(request.non_sale_Amount), 12).toInt());
json.insert(JSON_KEY_PARTORDERID, FMTool::GetString((const void *)&(request.Reserved1), 64));
int len = FMTool::GetString((const void *)&(request.item_line_qty), 2).toInt(); int len = FMTool::GetString((const void *)&(request.item_line_qty), 2).toInt();
QJsonArray prod; QJsonArray prod;
...@@ -111,7 +112,7 @@ private: ...@@ -111,7 +112,7 @@ private:
json.insert(JSON_KEY_VER, DEFAULT_JSON_VER_VALUE); json.insert(JSON_KEY_VER, DEFAULT_JSON_VER_VALUE);
json.insert(JSON_KEY_REQTYPE, JSON_REQTYPE_REFUND); json.insert(JSON_KEY_REQTYPE, JSON_REQTYPE_REFUND);
json.insert(JSON_KEY_PARTNERID, FMTool::GetString((const void *)&(request.Reserved1), 48).toInt()); json.insert(JSON_KEY_PARTNERID, FMTool::GetString((const void *)&(request.PlatNo), 4).toInt());
json.insert(JSON_KEY_STOREID, FMTool::GetString((const void *)&(request.StoreNo), 20)); json.insert(JSON_KEY_STOREID, FMTool::GetString((const void *)&(request.StoreNo), 20));
json.insert(JSON_KEY_STATIONID, FMTool::GetString((const void *)&(request.DeviceNo), 6)); json.insert(JSON_KEY_STATIONID, FMTool::GetString((const void *)&(request.DeviceNo), 6));
json.insert(JSON_KEY_OPERATORID, FMTool::GetString((const void *)&(request.CashierNo), 6)); json.insert(JSON_KEY_OPERATORID, FMTool::GetString((const void *)&(request.CashierNo), 6));
...@@ -119,6 +120,7 @@ private: ...@@ -119,6 +120,7 @@ private:
json.insert(JSON_KEY_BUSINESSDATE, FMTool::GetString((const void *)&(request.BusinessDay), 8)); json.insert(JSON_KEY_BUSINESSDATE, FMTool::GetString((const void *)&(request.BusinessDay), 8));
json.insert(JSON_KEY_FMID, list[0]); json.insert(JSON_KEY_FMID, list[0]);
json.insert(JSON_KEY_REFUNDAMOUT, FMTool::GetString((const void *)&(request.Amount), 12).toInt()); json.insert(JSON_KEY_REFUNDAMOUT, FMTool::GetString((const void *)&(request.Amount), 12).toInt());
json.insert(JSON_KEY_PARTORDERID, FMTool::GetString((const void *)&(request.Reserved1), 64));
return true; return true;
...@@ -126,13 +128,13 @@ private: ...@@ -126,13 +128,13 @@ private:
//日结 //日结
static bool GetDayEndJson(QJsonObject &json, const AlipayRequest &request, QStringList list) static bool GetDayEndJson(QJsonObject &json, const AlipayRequest &request, QStringList list)
{ {
if(list.size() != 1 || list[0].isEmpty())
return false;
json.insert(JSON_KEY_VER, DEFAULT_JSON_VER_VALUE); json.insert(JSON_KEY_VER, DEFAULT_JSON_VER_VALUE);
json.insert(JSON_KEY_REQTYPE, JSON_REQTYPE_REFUND); json.insert(JSON_KEY_REQTYPE, JSON_REQTYPE_ENDDAY);
json.insert(JSON_KEY_PARTNERID, FMTool::GetString((const void *)&(request.Reserved1), 48)); json.insert(JSON_KEY_PARTNERID, FMTool::GetString((const void *)&(request.PlatNo), 4).toInt());
json.insert(JSON_KEY_STOREID, FMTool::GetString((const void *)&(request.StoreNo), 20)); json.insert(JSON_KEY_STOREID, FMTool::GetString((const void *)&(request.StoreNo), 20));
json.insert(JSON_KEY_STATIONID, FMTool::GetString((const void *)&(request.DeviceNo), 6)); json.insert(JSON_KEY_STATIONID, FMTool::GetString((const void *)&(request.DeviceNo), 6));
json.insert(JSON_KEY_ENDTIME, FMTool::GetString((const void *)&(request.BusinessDay), 8).append( FMTool::GetString((const void *)&(request.TransTime), 6)));
json.insert(JSON_KEY_PARTORDERID, FMTool::GetString((const void *)&(request.Reserved1), 64));
return true; return true;
} }
...@@ -143,7 +145,7 @@ private: ...@@ -143,7 +145,7 @@ private:
return false; return false;
json.insert(JSON_KEY_VER, DEFAULT_JSON_VER_VALUE); json.insert(JSON_KEY_VER, DEFAULT_JSON_VER_VALUE);
json.insert(JSON_KEY_REQTYPE, JSON_REQTYPE_REFUND); json.insert(JSON_KEY_REQTYPE, JSON_REQTYPE_REFUND);
json.insert(JSON_KEY_PARTNERID, FMTool::GetString((const void *)&(request.Reserved1), 48)); json.insert(JSON_KEY_PARTNERID, FMTool::GetString((const void *)&(request.PlatNo), 4).toInt());
json.insert(JSON_KEY_STOREID, FMTool::GetString((const void *)&(request.StoreNo), 20)); json.insert(JSON_KEY_STOREID, FMTool::GetString((const void *)&(request.StoreNo), 20));
json.insert(JSON_KEY_STATIONID, FMTool::GetString((const void *)&(request.DeviceNo), 6)); json.insert(JSON_KEY_STATIONID, FMTool::GetString((const void *)&(request.DeviceNo), 6));
json.insert(JSON_KEY_OPERATORID, FMTool::GetString((const void *)&(request.CashierNo), 6)); json.insert(JSON_KEY_OPERATORID, FMTool::GetString((const void *)&(request.CashierNo), 6));
......
http://118.89.191.136:80/adapter/downloadRsaKey
http://118.89.191.136:80/adapter
60
60
1
\ No newline at end of file
[a0]
template={"ver":1}
[0]
template={"ver":1,"statusCode":0,"message":"","type":0,"paymentMethod":"","paymentMethodCode":"","ext":{"print":"","hint":""},"info":{"status":"","statusDesc":"","actId":"","actName":"","vdata":"","code":"","authCode":"","amount":0,"products":[{"pid":"","name":"","scope":"","discount":0,"number":0,"priceAct":0,"payment":{"remaining":0,"paid":0}}]}}
[71]
template={"ver":1,"statusCode":0,"message":"","fmId":"","consumeFactAmount":0,"consumeDiscountAmount":0,"type":0,"paymentMethod":"","paymentMethodCode":"","ext":{"print":"","hint":""},"actInfo":[{"actId":"","actName":"","code":""}]}
[72]
template={"ver":1,"statusCode":0,"message":"","payAccount":"","payTransId":"","fmId":"","type":0,"paymentMethod":"","paymentMethodCode":"","ext":{"print":"","hint":"","printRow":0,"printSign":""},"transAmount":0,"merchantDiscount":0,"platformDiscount":0}
[62]
template={"ver":1,"statusCode":0,"message":"","fmId":"","ext":{"print":"","hint":"","printRow":0,"printSign":""}}
...@@ -12,12 +12,23 @@ ...@@ -12,12 +12,23 @@
#include "rspfactory.h" #include "rspfactory.h"
#include <QDir> #include <QDir>
EXTERN_C IMAGE_DOS_HEADER __ImageBase;
BOOL WINAPI DllMain( HINSTANCE hInstance, DWORD dwReason, LPVOID /*lpvReserved*/ ) BOOL WINAPI DllMain( HINSTANCE hInstance, DWORD dwReason, LPVOID /*lpvReserved*/ )
{ {
static bool ownApplication = FALSE; static bool ownApplication = FALSE;
if ( dwReason == DLL_PROCESS_ATTACH ) if ( dwReason == DLL_PROCESS_ATTACH ) {
ownApplication = QMfcApp::pluginInstance( hInstance ); char mod[MAX_PATH] = { 0 };
GetModuleFileNameA((HMODULE)&__ImageBase, mod, MAX_PATH);
char *ch = strrchr(mod,'\\');
if (ch++) {
*ch = '\0';
}
QString path = QString::fromLocal8Bit(mod);
QApplication::addLibraryPath(path);
ownApplication = QMfcApp::pluginInstance( hInstance );
}
if ( dwReason == DLL_PROCESS_DETACH && ownApplication ) if ( dwReason == DLL_PROCESS_DETACH && ownApplication )
delete qApp; delete qApp;
...@@ -29,11 +40,14 @@ extern "C" __declspec(dllexport) void Start(const char *indata, char *outdata) ...@@ -29,11 +40,14 @@ extern "C" __declspec(dllexport) void Start(const char *indata, char *outdata)
HWND parent = GetDesktopWindow(); HWND parent = GetDesktopWindow();
QWinWidget win( parent ); QWinWidget win( parent );
QString logDir = QString("%1/log").arg(QApplication::applicationDirPath()); char path[MAX_PATH] = {0};
Control::GetProcPath(path);
QString logDir = QString("%1/log").arg(QString(path));
QDir().mkdir(logDir); QDir().mkdir(logDir);
QsLogging::Logger& logger = QsLogging::Logger::instance(); QsLogging::Logger& logger = QsLogging::Logger::instance();
logger.setLoggingLevel(QsLogging::TraceLevel); logger.setLoggingLevel(QsLogging::TraceLevel);
QString str = qApp->applicationDirPath() + "/log/sbuxpay.txt"; QString str = QString(path) + "\\log\\sbuxpay.txt";
/* 配置输出定向器 */ /* 配置输出定向器 */
QsLogging::DestinationPtr fileDestination(QsLogging::DestinationFactory::MakeFileDestination( QsLogging::DestinationPtr fileDestination(QsLogging::DestinationFactory::MakeFileDestination(
...@@ -121,6 +135,68 @@ void TestGetResPonseWithError() ...@@ -121,6 +135,68 @@ void TestGetResPonseWithError()
} }
typedef int (* GetValue) (char *, char *);
typedef int (__stdcall * GetRSACret)(int ,const char *,const char *);
void TestDllWapper()
{
QLibrary lib(qApp->applicationDirPath() + "/" + "FreemudWrapper.dll");
if(lib.load())
{
GetValue getvalue = (GetValue)lib.resolve("_GetValue@8");
GetRSACret getrsacret = (GetRSACret)lib.resolve("_GetRSACret@12");
qDebug() << getvalue;
qDebug() << getrsacret;
int j = -1;
char t1[25600] = {0};
char t2[25600] = {0};
// getrsacret();
//int i = getrsacret(1 , "1314", "2678");
getvalue(t1, t2);
qDebug() << j;
qDebug() << t1;
qDebug() << t2;
}
else
qDebug() << "load error";
}
void TestDllFmclient()
{
QLibrary lib(qApp->applicationDirPath() + "/" + "test02.dll");
qDebug() << qApp->applicationDirPath() + "/" + "test02.dll";
if(lib.load())
{
GetValue getvalue = (GetValue)lib.resolve("GetValue");
GetRSACret getrsacret = (GetRSACret)lib.resolve("_GetRSACret@12");
qDebug() << getvalue;
qDebug() << getrsacret;
int j = -1;
// getrsacret();
getrsacret(1 , "1314", "2678");
qDebug() << j;
}
}
int main(int argc, char *argv[]) int main(int argc, char *argv[])
{ {
...@@ -144,36 +220,44 @@ int main(int argc, char *argv[]) ...@@ -144,36 +220,44 @@ int main(int argc, char *argv[])
logger.addDestination(consleDest); logger.addDestination(consleDest);
//pass //pass
TestSetString(); //TestSetString();
//pass //pass
TestGetResPonseWithError(); //TestGetResPonseWithError();
//pass //pass
TestSetPinter(); //TestSetPinter();
//pass //pass
TestGetResPonseJson(); //TestGetResPonseJson();
//error
//TestDllWapper();
//
//TestDllFmclient();
qDebug() << "1212367123";
AlipayRequest req; AlipayRequest req;
FMTool::SetString(req.BusinessDay, 8 , QString("20170908")); FMTool::SetString(req.BusinessDay, 8 , QString("20170908"));
FMTool::SetString(req.TransType, 2 , QString("40")); FMTool::SetString(req.TransType, 2 , QString("30"));
FMTool::SetString(req.Reserved1, 64 , QString("1443")); FMTool::SetString(req.PlatNo, 4, QString("1443"));
FMTool::SetString(req.TransTime, 6, QString("130301"));
FMTool::SetString(req.StoreNo, 20 , QString("17607")); FMTool::SetString(req.StoreNo, 20 , QString("17607"));
FMTool::SetString(req.DeviceNo, 6 , QString("1")); FMTool::SetString(req.DeviceNo, 6 , QString("1"));
FMTool::SetString(req.CashierNo, 6 , QString("0123")); FMTool::SetString(req.CashierNo, 6 , QString("0123"));
FMTool::SetString(req.CashTraceNo, 6 , QString("123123")); FMTool::SetString(req.CashTraceNo, 6 , QString("123123"));
FMTool::SetString(req.Amount, 12, QString("1")); FMTool::SetString(req.Amount, 12, QString("1"));
req.item_line_qty[0] = '9'; FMTool::SetString(req.Reserved1, 48 , QString("124112312312312312312----32"));
req.item_line_qty[1] = '9'; req.item_line_qty[0] = '2';
req.item_line_qty[1] = ' ';
// struct product{
// char productID[8]; //商品id struct product{
// char buyCount[4]; //购买数量 char productID[8]; //商品id
// char unitPrice[8]; //单件商品价格 char buyCount[4]; //购买数量
// char isCombo[1]; //默认为0 char unitPrice[8]; //单件商品价格
// char isNonsale[1]; //(废弃) char isCombo[1]; //默认为0
// char productName[20]; //商品名字 char isNonsale[1]; //(废弃)
// }; char productName[20]; //商品名字
};
for(int i = 0; i < 99; ++i) for(int i = 0; i < 99; ++i)
{ {
......
...@@ -164,10 +164,10 @@ void QMfcApp::exitModalLoop() ...@@ -164,10 +164,10 @@ void QMfcApp::exitModalLoop()
\code \code
BOOL WINAPI DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID lpvReserved) BOOL WINAPI DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID lpvReserved)
{ {
if (dwReason == DLL_PROCESS_ATTACH) if (dwReason == DLL_PROCESS_ATTACH)
QMfcApp::pluginInstance(hInstance); QMfcApp::pluginInstance(hInstance);
return TRUE; return TRUE;
} }
\endcode \endcode
...@@ -189,21 +189,21 @@ void QMfcApp::exitModalLoop() ...@@ -189,21 +189,21 @@ void QMfcApp::exitModalLoop()
bool QMfcApp::pluginInstance(Qt::HANDLE plugin) bool QMfcApp::pluginInstance(Qt::HANDLE plugin)
{ {
if (qApp) if (qApp)
return FALSE; return FALSE;
QT_WA({ QT_WA({
hhook = SetWindowsHookExW(WH_GETMESSAGE, QtFilterProc, 0, GetCurrentThreadId()); hhook = SetWindowsHookExW(WH_GETMESSAGE, QtFilterProc, 0, GetCurrentThreadId());
}, { }, {
hhook = SetWindowsHookExA(WH_GETMESSAGE, QtFilterProc, 0, GetCurrentThreadId()); hhook = SetWindowsHookExA(WH_GETMESSAGE, QtFilterProc, 0, GetCurrentThreadId());
}); });
int argc = 0; int argc = 0;
(void)new QApplication(argc, 0); (void)new QApplication(argc, 0);
if (plugin) { if (plugin) {
char filename[256]; char filename[256];
if (GetModuleFileNameA((HINSTANCE)plugin, filename, 255)) if (GetModuleFileNameA((HINSTANCE)plugin, filename, 255))
LoadLibraryA(filename); LoadLibraryA(filename);
} }
return TRUE; return TRUE;
...@@ -242,7 +242,7 @@ int QMfcApp::run(CWinApp *mfcApp) ...@@ -242,7 +242,7 @@ int QMfcApp::run(CWinApp *mfcApp)
{ {
bool ownInstance = !qApp; bool ownInstance = !qApp;
if (ownInstance) if (ownInstance)
instance(mfcApp); instance(mfcApp);
int result = qApp->exec(); int result = qApp->exec();
if (mfcApp) { if (mfcApp) {
...@@ -252,7 +252,7 @@ int QMfcApp::run(CWinApp *mfcApp) ...@@ -252,7 +252,7 @@ int QMfcApp::run(CWinApp *mfcApp)
} }
if (ownInstance) if (ownInstance)
delete qApp; delete qApp;
return result; return result;
} }
...@@ -270,20 +270,20 @@ int QMfcApp::run(CWinApp *mfcApp) ...@@ -270,20 +270,20 @@ int QMfcApp::run(CWinApp *mfcApp)
\code \code
BOOL MyMfcApp::InitInstance() BOOL MyMfcApp::InitInstance()
{ {
// standard MFC initialization // standard MFC initialization
// ... // ...
// This sets the global qApp pointer // This sets the global qApp pointer
QMfcApp::instance(this); QMfcApp::instance(this);
// Qt GUI initialization // Qt GUI initialization
} }
BOOL MyMfcApp::Run() BOOL MyMfcApp::Run()
{ {
int result = QMfcApp::run(this); int result = QMfcApp::run(this);
delete qApp; delete qApp;
return result; return result;
} }
\endcode \endcode
...@@ -294,23 +294,23 @@ QApplication *QMfcApp::instance(CWinApp *mfcApp) ...@@ -294,23 +294,23 @@ QApplication *QMfcApp::instance(CWinApp *mfcApp)
mfc_app = mfcApp; mfc_app = mfcApp;
if (mfc_app) { if (mfc_app) {
#if defined(UNICODE) #if defined(UNICODE)
QString exeName((QChar*)mfc_app->m_pszExeName, wcslen(mfc_app->m_pszExeName)); QString exeName((QChar*)mfc_app->m_pszExeName, wcslen(mfc_app->m_pszExeName));
QString cmdLine((QChar*)mfc_app->m_lpCmdLine, wcslen(mfc_app->m_lpCmdLine)); QString cmdLine((QChar*)mfc_app->m_lpCmdLine, wcslen(mfc_app->m_lpCmdLine));
#else #else
QString exeName = QString::fromLocal8Bit(mfc_app->m_pszExeName); QString exeName = QString::fromLocal8Bit(mfc_app->m_pszExeName);
QString cmdLine = QString::fromLocal8Bit(mfc_app->m_lpCmdLine); QString cmdLine = QString::fromLocal8Bit(mfc_app->m_lpCmdLine);
#endif #endif
QStringList arglist = QString(exeName + " " + cmdLine).split(' '); QStringList arglist = QString(exeName + " " + cmdLine).split(' ');
mfc_argc = arglist.count(); mfc_argc = arglist.count();
mfc_argv = new char*[mfc_argc+1]; mfc_argv = new char*[mfc_argc+1];
int a; int a;
for (a = 0; a < mfc_argc; ++a) { for (a = 0; a < mfc_argc; ++a) {
QString arg = arglist[a]; QString arg = arglist[a];
mfc_argv[a] = new char[arg.length()+1]; mfc_argv[a] = new char[arg.length()+1];
qstrcpy(mfc_argv[a], arg.toLocal8Bit().data()); qstrcpy(mfc_argv[a], arg.toLocal8Bit().data());
} }
mfc_argv[a] = 0; mfc_argv[a] = 0;
} }
return new QMfcApp(mfcApp, mfc_argc, mfc_argv); return new QMfcApp(mfcApp, mfc_argc, mfc_argv);
...@@ -336,23 +336,23 @@ static bool qmfc_eventFilter(void *message) ...@@ -336,23 +336,23 @@ static bool qmfc_eventFilter(void *message)
BOOL MyMfcApp::InitInstance() BOOL MyMfcApp::InitInstance()
{ {
// standard MFC initialization // standard MFC initialization
int argc = ... int argc = ...
char **argv = ... char **argv = ...
qtApp = new QMfcApp(this, argc, argv); qtApp = new QMfcApp(this, argc, argv);
// Qt GUI initialization // Qt GUI initialization
} }
BOOL MyMfcApp::Run() BOOL MyMfcApp::Run()
{ {
int result = qtApp->exec(); int result = qtApp->exec();
delete qtApp; delete qtApp;
qtApp = 0; qtApp = 0;
return result; return result;
} }
\endcode \endcode
...@@ -383,14 +383,14 @@ QMfcApp::QMfcApp(int &argc, char **argv) : QApplication(argc, argv) ...@@ -383,14 +383,14 @@ QMfcApp::QMfcApp(int &argc, char **argv) : QApplication(argc, argv)
QMfcApp::~QMfcApp() QMfcApp::~QMfcApp()
{ {
if (hhook) { if (hhook) {
UnhookWindowsHookEx(hhook); UnhookWindowsHookEx(hhook);
hhook = 0; hhook = 0;
} }
#ifdef QTWINMIGRATE_WITHMFC #ifdef QTWINMIGRATE_WITHMFC
for (int a = 0; a < mfc_argc; ++a) { for (int a = 0; a < mfc_argc; ++a) {
char *arg = mfc_argv[a]; char *arg = mfc_argv[a];
delete[] arg; delete[] arg;
} }
delete []mfc_argv; delete []mfc_argv;
...@@ -450,7 +450,7 @@ bool QMfcApp::winEventFilter(MSG *msg, long *result) ...@@ -450,7 +450,7 @@ bool QMfcApp::winEventFilter(MSG *msg, long *result)
} }
if (mfc_app && mfc_app->PreTranslateMessage(msg)) { if (mfc_app && mfc_app->PreTranslateMessage(msg)) {
recursion = false; recursion = false;
return TRUE; return TRUE;
} }
#endif #endif
......
...@@ -48,6 +48,7 @@ struct product{ ...@@ -48,6 +48,7 @@ struct product{
char productID[8]; //商品id char productID[8]; //商品id
char buyCount[4]; //购买数量 char buyCount[4]; //购买数量
char unitPrice[8]; //单件商品价格 char unitPrice[8]; //单件商品价格
char originPrice[8];//单件商品原价
char isCombo[1]; //默认为0 char isCombo[1]; //默认为0
char isNonsale[1]; //(废弃) char isNonsale[1]; //(废弃)
char productName[20]; //商品名字 char productName[20]; //商品名字
...@@ -55,19 +56,20 @@ struct product{ ...@@ -55,19 +56,20 @@ struct product{
struct AlipayRequest struct AlipayRequest
{ {
char PlatNo[2]; // 平台 char PlatNo[4]; // *商户编
char TransType[2]; // 交易类型 char TransType[2]; // 交易类型
char PayType[2]; // 支付类型. char PayType[2]; // 支付类型.
char StoreNo[20]; // 门店号. char StoreNo[20]; // 门店号.
char BusinessDay[8]; // 营业日期. ex:"20140307" char BusinessDay[8]; // 营业日期. ex:"20140307"
char DeviceNo[6]; // 设备编号. ex: "000001" char TransTime [6]; //交易时间 时分秒(HHMMss)
char DeviceNo[6]; // *pos编号
char CashierNo[6]; // 收银员编号。 ex:"001" char CashierNo[6]; // 收银员编号。 ex:"001"
char Amount[12]; // 需支付的金额(分). ex:"1000" char Amount[12]; // 需支付的金额(分). ex:"1000"
char Ticket_Amount[12]; //整单总金额(分). ex:"2000" char Ticket_Amount[12]; //整单总金额(分). ex:"2000"
char non_sale_Amount[12]; //非卖品总金额(分) char non_sale_Amount[12]; //非卖品总金额(分)
char CashTraceNo[6]; // 流水号. ex:"080001" char CashTraceNo[6]; // 流水号. ex:"080001"
char OriginTrace[64]; // 退款订单号(退款时使用) char OriginTrace[64]; // 退款订单号(退款时使用)
char Reserved1[48]; // 保留字段。"启用为商户编号" char Reserved1[48]; // 保留字段。
char Reserved2[48]; // "" char Reserved2[48]; // ""
char Reserved3[48]; // "" char Reserved3[48]; // ""
char Reserved4[48]; // "" char Reserved4[48]; // ""
......
...@@ -77,7 +77,13 @@ private: ...@@ -77,7 +77,13 @@ private:
static bool GetDayEndResponse(AlipayResponse &response, const QJsonObject &json) static bool GetDayEndResponse(AlipayResponse &response, const QJsonObject &json)
{ {
return false; FMTool::SetString(response.ResponseCode, 3, QString::number(json[JSON_KEY_STATUSCODE].toInt()));
FMTool::SetString(response.ResponseMsg, 40, json[JSON_KEY_MESSAGE].toString());
FMTool::SetString(response.NeedPrint, 2, QString("01"));
if(json[JSON_KEY_STATUSCODE].toInt() == 100)
return SetPinter(response, json);
return true;
} }
static bool GetAgainPrinteResponse(AlipayResponse &response, const QJsonObject &json) static bool GetAgainPrinteResponse(AlipayResponse &response, const QJsonObject &json)
......
...@@ -13,11 +13,10 @@ TARGET = sbkpay ...@@ -13,11 +13,10 @@ TARGET = sbkpay
include("./QsLog/QsLog.pri") include("./QsLog/QsLog.pri")
CONFIG += C++11 SBKDLL CONFIG += C++11
DLLDESTDIR = $$[QT_INSTALL_PREFIX]/bin include($$PWD/qtwinmigrate/src/qtwinmigrate.pri)
include($$PWD/qtwinmigrate/src/qtwinmigrate.pri)
SBKDLL { SBKDLL {
TEMPLATE = lib TEMPLATE = lib
DEFINES += SBKDLL DEFINES += SBKDLL
...@@ -25,6 +24,12 @@ SBKDLL { ...@@ -25,6 +24,12 @@ SBKDLL {
} else { } else {
TEMPLATE = app TEMPLATE = app
DEFINES += FM_TEST
}
release {
QMAKE_CXXFLAGS += /Zi
QMAKE_LFLAGS_RELEASE += /DEBUG
} }
SOURCES += main.cpp\ SOURCES += main.cpp\
......
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE QtCreatorProject> <!DOCTYPE QtCreatorProject>
<!-- Written by QtCreator 3.5.1, 2017-08-12T12:26:37. --> <!-- Written by QtCreator 3.5.1, 2017-08-14T12:31:22. -->
<qtcreator> <qtcreator>
<data> <data>
<variable>EnvironmentId</variable> <variable>EnvironmentId</variable>
...@@ -61,7 +61,7 @@ ...@@ -61,7 +61,7 @@
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Desktop Qt 5.5.1 MSVC2010 32bit</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Desktop Qt 5.5.1 MSVC2010 32bit</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Desktop Qt 5.5.1 MSVC2010 32bit</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Desktop Qt 5.5.1 MSVC2010 32bit</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">qt.55.win32_msvc2010_kit</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">qt.55.win32_msvc2010_kit</value>
<value type="int" key="ProjectExplorer.Target.ActiveBuildConfiguration">0</value> <value type="int" key="ProjectExplorer.Target.ActiveBuildConfiguration">1</value>
<value type="int" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value> <value type="int" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
<value type="int" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value> <value type="int" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0"> <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
......
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