Commit 77a629d0 by NitefullWind

1. 实现SPCC版本的冲正。2. 不再设置程序当前工作路径。 3.添加程序版本信息。4.修复一些小问题。

parent ec2a5c39
......@@ -11,8 +11,8 @@
#define CFG_FILE_NAME "fmclient.cfg"
#define RBG_FILE_NAME "fmclient.rbk"
#define DES3_KEY "ABCD@#9876DFSAAWKLDEOPDD"
//#define DES3_KEY "DDDDEEEE45LPODDCXZZLKDDO"
//#define DES3_KEY "ABCD@#9876DFSAAWKLDEOPDD"
#define DES3_KEY "DDDDEEEE45LPODDCXZZLKDDO"
#define DES3_KEY_PRT "1JG23G12Y12V123G123F1DI1"
#define CRET_FILE_NAME "client.p12"
#define JSON_KEY_ONLY "partnerOrderId"
......
......@@ -7,11 +7,17 @@
#include <QNetworkAccessManager>
#include <QNetworkReply>
#include <QNetworkRequest>
#include <QFutureWatcher>
#include <QJsonDocument>
#include "tools.h"
#include "fmglobal.h"
#include "QsLog.h"
#include "fmtool.h"
#include "fmp_settings.h"
#include <QtConcurrent>
#include <QLibrary>
typedef int (__stdcall *SKBAPISend)(const char *indata, const char *guid, char *outdata, char *errMsg, const char *mode, const char *operation);
FMNetWork::FMNetWork(QObject *parent) : QObject(parent)
{
......@@ -72,3 +78,166 @@ bool FMNetWork::HttpPost(QString url, QByteArray &outdata, const QByteArray &ind
return true;
}
QByteArray FMNetWork::CreateOLTPXML(const QJsonObject &json)
{
FMPSettings setting;
QString reqXmlStr = QString::fromLocal8Bit("<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
"<ns0:OLTP xmlns:ns0=\"http://spcc.com.cn/online\">"
"<ns0:HEADER>"
"<ns0:VER>%1</ns0:VER>"
"<ns0:FROM>%2</ns0:FROM>"
"<ns0:TERMINO>%3</ns0:TERMINO>"
"<ns0:TO>%4</ns0:TO>"
"<ns0:BUSINESS>%5</ns0:BUSINESS>"
"<ns0:DATE>%6</ns0:DATE>"
"<ns0:TIME>%7</ns0:TIME>"
"<ns0:STATCODE>%8</ns0:STATCODE>"
"<ns0:STATDESC/>"
"</ns0:HEADER>"
"<ns0:AP>"
"%9"
"</ns0:AP>"
"</ns0:OLTP>");
QString nsTo = "CS00400004";
int type = FMTool::GetJsonValue(json, JSON_KEY_REQTYPE).toInt(sign);
if(type==sign) {
nsTo = "CS00400003";
}
QString date = QDate::currentDate().toString("yyMMdd");
QString time = QTime::currentTime().toString("hhmmss");
QString storeId = FMTool::GetJsonValue(json, JSON_KEY_STOREID).toString();
QString posId = FMTool::GetJsonValue(json, JSON_KEY_STATIONID).toString();
qsrand(QDateTime::currentMSecsSinceEpoch());
QString termino = QString::fromUtf8("%1%2%3%4%5").arg(date).arg(storeId, 6, '0').arg(posId, 6, '0').arg(qrand()%90+10).arg(time);
QByteArray jsonArray = QJsonDocument(json).toJson(QJsonDocument::Compact);
reqXmlStr = reqXmlStr.arg(setting.GetValue(CONFIG_OLTP_VER, "01.01").toString())
.arg(setting.GetValue(CONFIG_OLTP_FROM, "CS00000001").toString())
.arg(termino)
.arg(nsTo)
.arg(setting.GetValue(CONFIG_OLTP_BUSINESS, "0000000").toString())
.arg(QDate::currentDate().toString("yyyyMMdd"))
.arg(time)
.arg(setting.GetValue(CONFIG_OLTP_STATCODE, "0000").toString())
.arg(QString::fromUtf8(jsonArray));
return reqXmlStr.toUtf8();
}
bool FMNetWork::RequestToOLTP(const QJsonObject &json, QByteArray &outdata, QString &error, int timeout)
{
FMPSettings setting;
char mod[MAX_PATH] = { 0 };
ToolS::GetProcPath(mod);
QLibrary lib(QString(mod) + "\\" + "SBKAPIWrapper.dll");
QLOG_INFO() << QString(mod) + "\\" + "SBKAPIWrapper.dll";
if(lib.load())
{
SKBAPISend skbSend = (SKBAPISend)lib.resolve("Send");
if(skbSend != NULL)
{
QEventLoop loop;
QFuture<QByteArray> future = QtConcurrent::run( [&loop, json, &error, skbSend, &setting]() ->QByteArray
{
QByteArray reqXmlData = FMNetWork::CreateOLTPXML(json);
char in[MAX_BUF_LEN] = {0};
char out[MAX_BUF_LEN] = {0};
char *guid = "";
char errMsg[MAX_BUF_LEN] = {0};
QByteArray mode = setting.GetValue(CONFIG_OLTP_MODE_BATCH, "BATCH").toByteArray();
QByteArray operation = setting.GetValue(CONFIG_OLTP_OPERATION_BATCH, "FM").toByteArray();
strcpy(in, reqXmlData.data());
QLOG_INFO() << "Request StarbucksAPI XML data: " << in << "mode: " << mode << "Operation: " << operation;
#ifdef MOCK
QLOG_DEBUG() << "=========================================== Read debug data. ========================================";
int type = FMTool::GetJsonValue(json, JSON_KEY_REQTYPE).toInt(sign);
QLOG_DEBUG() << "Test req type: " << type;
QFile f(qApp->applicationDirPath()+QString("/test_spcc/%1.txt").arg(type));
f.open(QIODevice::ReadOnly);
strcpy(out, f.readAll().data());
// Sleep(1000*10);
QLOG_DEBUG() << "=========================================== End read debug data. ====================================";
int result = 0;
#else
int result = skbSend(in, guid, out, errMsg, mode.data(), operation.data());
#endif //! End def MOCK
QLOG_DEBUG() << "StarbucksAPI return to GBK: " << QString::fromLocal8Bit(out);
QString outXMlString = QString::fromLocal8Bit(out);
QLOG_INFO() << "OLTP return: " << result << " data: " << outXMlString;
if(result!=0) {
error = "OLTP return error: \n" + QString::fromLocal8Bit(errMsg);
QLOG_ERROR() << error;
return QByteArray();
} else {
QString statcode;
bool isOk = FMTool::SearchXMLNodeString(outXMlString, "ns0:STATCODE", statcode);
if(!isOk) {
error = "Can't find xml node: ns0:STATCODE";
QLOG_ERROR() << error;
return QByteArray();
}
if(statcode.compare("0000")!=0) {
error = "OLTP return STATCODE is: " + statcode;
QLOG_ERROR() << error;
return QByteArray();
}
QString returnStr;
isOk = FMTool::SearchXMLNodeString(outXMlString, "ns0:AP", returnStr);
if(!isOk) {
error = "Can't find xml node: ns0:AP";
QLOG_ERROR() << error;
return QByteArray();
}
return returnStr.toUtf8();
}
return QByteArray(out);
});
QFutureWatcher<QByteArray> watcher;
watcher.setFuture(future);
QTimer timer;
timer.setSingleShot(true);
connect(&timer, &QTimer::timeout, &loop, &QEventLoop::quit);
connect(&watcher, SIGNAL(finished()), &loop, SLOT(quit()));
timer.start(timeout*1000);
loop.exec();
outdata = watcher.result();
bool isEmpty = outdata.isNull() && outdata.isEmpty();
return !isEmpty;
}
else
{
QLOG_ERROR() << "get function (Send) failed";
error = QString::fromLocal8Bit("加载基础组件(fun)失败");
}
}
else
{
QLOG_ERROR() << "load dll failed";
error = QString::fromLocal8Bit("加载基础组件(dll)失败");
}
return false;
}
......@@ -3,6 +3,8 @@
#include <QObject>
#include <QByteArray>
#include "global.h"
#include "requestmodel.h"
class FMNetWork : public QObject
{
......@@ -12,6 +14,9 @@ public:
static bool HttpPost(QString url, QByteArray &outdata, const QByteArray &indata, QString content, QString accept, QString &error = QString(), int timeout = 60);
static QByteArray CreateOLTPXML(const QJsonObject &json);
static bool RequestToOLTP(const QJsonObject &json, QByteArray &outdata, QString &error, int timeout);
};
#endif // FMNETWORK_H
......@@ -51,7 +51,8 @@ void RollBack::RollWiteQuery(QSqlDatabase &_db, QSqlQuery &query)
QJsonObject json = jsonDocument.object();
json.insert(JSON_KEY_REQTYPE, 3);
json[JSON_KEY_REQTYPE] = 3;
json[JSON_KEY_VER] = DEFAULT_JSON_VER_VALUE;
if(!CretOperate::GetSign(json))
{
......@@ -59,23 +60,31 @@ void RollBack::RollWiteQuery(QSqlDatabase &_db, QSqlQuery &query)
continue;
}
QLOG_INFO() << json;
QLOG_INFO() << json;
QByteArray data = QJsonDocument(json).toJson(QJsonDocument::Compact);
QByteArray array;
QString path;
// QString path;
QString error;
ToolS::GetPath(path);
// ToolS::GetPath(path);
qDebug() << "*****************************" << path;
// qDebug() << "*****************************" << path;
QString url = QSettings(path + "\\" + USERCONFIG_NAME, QSettings::IniFormat).value(VALUE_URL).toString();
// QByteArray data = QJsonDocument(json).toJson(QJsonDocument::Compact);
QLOG_INFO() << "roll back server url : " << url;
// QString url = QSettings(path + "\\" + USERCONFIG_NAME, QSettings::IniFormat).value(VALUE_URL).toString();
if(FMNetWork::HttpPost(url, array, data, "application/json;charset=utf-8","application/json", error, 12))
// QLOG_INFO() << "roll back server url : " << url;
// if(FMNetWork::HttpPost(url, array, data, "application/json;charset=utf-8","application/json", error, 12))
// {
// QString sql = QString("delete from orderlist where orderid='%1'").arg(parnetid);
// QLOG_ERROR() << sql;
// query.exec(sql);
// }
if(FMNetWork::RequestToOLTP(json, array, error, 20))
{
QString sql = QString("delete from orderlist where orderid='%1'").arg(parnetid);
QLOG_ERROR() << sql;
......
......@@ -43,7 +43,7 @@ private:
bool SendMessageToPayMent(const QJsonObject &json, QByteArray &outdata, QString &error);
bool SendMessageToSBKAPI(const QJsonObject &json, QByteArray &outdata, QString &error);
bool SendMessageToSBKAPI(const QJsonObject &json, QByteArray &outdata, QString &error, int timeout, bool isReversal=false);
void SetResPonseWithMessage(QString code, const QString &message);
......@@ -65,6 +65,8 @@ public slots:
void RequestWithType(ReqType type, QStringList list);
void OnInterrupt();
private:
struct AlipayRequest _request;
struct AlipayResponse _response;
......
#ifndef FMTOOL
#define FMTOOL
#include <QRegularExpression>
#include <QJsonObject>
#include <windows.h>
#include <QString>
#include <QDebug>
......
......@@ -99,7 +99,9 @@
#define CONFIG_OLTP_BUSINESS "OLTP/BUSINESS"
#define CONFIG_OLTP_STATCODE "OLTP/STATCODE"
#define CONFIG_OLTP_MODE "OLTP/MODE"
#define CONFIG_OLTP_MODE_BATCH "OLTP/MODEBATCH"
#define CONFIG_OLTP_OPERATION "OLTP/OPERATION"
#define CONFIG_OLTP_OPERATION_BATCH "OLTP/OPERATIONBATCH"
#define CONFIG_PRINT_PATH "PRINT/PATH"
#define CONFIG_PRINT_ENDDAY_NAME "PRINT/EDNDAYNAME"
#define CONFIG_PRINT_SHIFT_NAME "PRINT/SHIFTNAME"
......
......@@ -35,9 +35,7 @@ HostWidget::HostWidget(QWidget *parent) :
connect(&_intertime, &QTimer::timeout, this, [this](){
if(!_need_exit)
{
if(_posType != SPCC) {
ui->btn_pay_exitint->show();
}
ui->btn_pay_exitint->show();
}
});
......@@ -45,7 +43,7 @@ HostWidget::HostWidget(QWidget *parent) :
_label_find_timer = new LabelsTimer(ui->label_check_timer, 60, QString::fromLocal8Bit("%1 秒"));
_label_wait_timer = new LabelsTimer(ui->label_wait_time, 30, QString::fromLocal8Bit("%1 秒"));
_label_wait_timer = new LabelsTimer(ui->label_wait_time, 60, QString::fromLocal8Bit("%1 秒"));
connect(_label_pay_timer, &LabelsTimer::timeout, this, &HostWidget::on_TimeOut);
connect(_label_find_timer, &LabelsTimer::timeout, this, &HostWidget::on_TimeOut);
......@@ -158,8 +156,7 @@ void HostWidget::ShowPayWidget()
// emit RequestWithType(refund, list);
}
}else
emit Exits();
}
}
void HostWidget::ShowWithRequest(AlipayRequest request)
......@@ -237,7 +234,7 @@ void HostWidget::ShowWiteJson(bool flag, QJsonObject object, QString error)
if(!flag)
{
ui->label_find_msg->setText(QString::fromLocal8Bit("查询失败(%1)").arg(error));
ui->label_find_msg->setText(QString::fromLocal8Bit("%1").arg(error));
}
else
{
......@@ -350,7 +347,8 @@ void HostWidget::ShowWithRequest(POSType posType, QJsonObject requestObj)
ui->btn_mananger_print_shift->setMinimumSize(0,0);
}
ui->horizontalLayout_manager->setSpacing(this->width()/(btnNums+2)-ui->btn_mananger_register->width());
int spacing = (qApp->desktop()->availableGeometry().width()-ui->btn_mananger_register->width()*btnNums)/(btnNums+2);
ui->horizontalLayout_manager->setSpacing(spacing);
ShowWidget(ui->Manager);
_curr_show_widget = ui->Manager;
......@@ -366,7 +364,7 @@ void HostWidget::ShowWithRequest(POSType posType, QJsonObject requestObj)
ShowWidget(ui->pay);
_curr_show_widget = ui->pay;
double Amount = FMTool::GetJsonValue(requestObj, JSON_KEY_TRANSAMOUNT).toInt()/100.0;
ui->label_pay_title->setText(QString::fromLocal8Bit("请扫描输入支付宝二维码"));
ui->label_pay_title->setText(QString::fromLocal8Bit("请扫描支付宝二维码"));
ui->btn_pay_exit->setText(QString::fromLocal8Bit("取消支付"));
ui->label_pay_money->setText(QString::fromLocal8Bit("需收取 ¥ %1").arg(Amount));
break;
......@@ -435,9 +433,8 @@ void HostWidget::ShowWiteMGS(ReqType type, bool flag, QString message)
ui->label_pay_title->setText(QString::fromLocal8Bit("支付成功"));
ui->label_pay_time->setPixmap(QPixmap(":res/success.png"));
} else {
// ui->label_pay_title->setText(QString::fromLocal8Bit("支付失败"));
// ui->label_pay_time->setPixmap(QPixmap(":res/warning.png"));
emit Exits();
ui->label_pay_title->setText(QString::fromLocal8Bit("支付失败"));
ui->label_pay_time->setPixmap(QPixmap(":res/warning.png"));
}
return ;
}
......@@ -459,63 +456,69 @@ void HostWidget::ShowWiteMGS(ReqType type, bool flag, QString message)
ui->label_pay_title->setText(QString::fromLocal8Bit("退款成功"));
ui->label_pay_time->setPixmap(QPixmap(":res/success.png"));
} else {
// ui->label_pay_title->setText(QString::fromLocal8Bit("退款失败"));
// ui->label_pay_time->setPixmap(QPixmap(":res/warning.png"));
emit Exits();
ui->label_pay_title->setText(QString::fromLocal8Bit("退款失败"));
ui->label_pay_time->setPixmap(QPixmap(":res/warning.png"));
}
return ;
}
if(type == endday)
{
if(_posType == SPCC) {
emit Exits();
} else {
// if(_posType == SPCC) {
// emit Exits();
// } else {
ui->label_wait_msg->hide();
_need_exit = true;
_label_wait_timer->stop();
ui->label_wait_time_lod->setVisible(false);
ui->label_wait_title->show();
ui->btn_wait_quit->show();
ui->btn_wait_quit->setText(QString::fromLocal8Bit("确认"));
ui->label_wait_msg->show();
ui->label_wait_msg->setText(message);
if(flag) {
ui->label_wait_msg_time->setVisible(true);
_label_wait_timer->setLabel(ui->label_wait_msg_time);
_label_wait_timer->start(3);
ui->label_wait_title->setText(message);
ui->label_wait_title->setText(QString::fromLocal8Bit("打印日结单成功"));
ui->label_wait_time->setPixmap(QPixmap(":res/success.png"));
} else {
ui->label_wait_title->setText(message);
ui->label_wait_title->setText(QString::fromLocal8Bit("打印日结单失败"));
ui->label_wait_time->setPixmap(QPixmap(":res/warning.png"));
}
}
// }
return ;
}
if(type == shift)
{
if(_posType == SPCC) {
emit Exits();
} else {
// if(_posType == SPCC) {
// emit Exits();
// } else {
ui->label_wait_msg->hide();
_need_exit = true;
_label_wait_timer->stop();
ui->label_wait_time_lod->setVisible(false);
ui->label_wait_title->show();
ui->btn_wait_quit->show();
ui->btn_wait_quit->setText(QString::fromLocal8Bit("确认"));
ui->label_wait_msg->show();
ui->label_wait_msg->setText(message);
if(flag) {
ui->label_wait_msg_time->setVisible(true);
_label_wait_timer->setLabel(ui->label_wait_msg_time);
_label_wait_timer->start(3);
ui->label_wait_title->setText(message);
ui->label_wait_title->setText(QString::fromLocal8Bit("打印交班单成功"));
ui->label_wait_time->setPixmap(QPixmap(":res/success.png"));
} else {
ui->label_wait_title->setText(message);
ui->label_wait_title->setText(QString::fromLocal8Bit("打印交班单失败"));
ui->label_wait_time->setPixmap(QPixmap(":res/warning.png"));
}
}
// }
return ;
}
......@@ -599,7 +602,7 @@ void HostWidget::on_btn_mananger_print_clicked()
ui->btn_wait_quit->hide();
ui->label_wait_time_lod->setVisible(true);
ui->label_wait_title->setText(QString::fromLocal8Bit("正在打印日结单.."));
// ShowWidget(ui->wait);
ShowWidget(ui->wait);
_curr_show_widget = ui->wait;
_label_wait_timer->start();
emit RequestWithType(endday, list);
......@@ -664,7 +667,7 @@ void HostWidget::on_btn_mananger_print_shift_clicked()
ui->btn_wait_quit->hide();
ui->label_wait_time_lod->setVisible(true);
ui->label_wait_title->setText(QString::fromLocal8Bit("正在打印交班单.."));
// ShowWidget(ui->wait);
ShowWidget(ui->wait);
_curr_show_widget = ui->wait;
_label_wait_timer->start();
emit RequestWithType(shift, list);
......@@ -745,8 +748,20 @@ void HostWidget::on_btn_find_up_clicked()
on_btn_find_check_clicked();
}
void HostWidget::HideExit()
{
ui->btn_pay_exitint->hide();
}
void HostWidget::on_btn_pay_exitint_clicked()
{
if(_intertime.isActive()) {
_intertime.stop();
}
ui->btn_pay_exitint->hide();
ui->btn_pay_exit->hide();
_label_pay_timer->start(60);
ui->label_pay_title->setText(QString::fromLocal8Bit("交易取消中"));
emit Interrupt();
}
......@@ -759,3 +774,11 @@ void HostWidget::on_btn_wait_quit_clicked()
else
emit ExitWithMSG("02", QString::fromLocal8Bit("收银员取消"));
}
void HostWidget::StopPay()
{
ui->label_pay_title->setText(QString::fromLocal8Bit("正在取消退款..."));
_intertime.stop();
ui->btn_pay_exitint->hide();
_label_pay_timer->start(60, QString::fromLocal8Bit("%1 秒"));
}
......@@ -34,6 +34,10 @@ public:
void setRuning(bool runing);
void StopPay();
void HideExit();
signals:
void RequestWithType(ReqType type, QStringList list);
......
......@@ -1285,6 +1285,7 @@ QHeaderView::section{
font: 75 16px &quot;Microsoft YaHei UI Light&quot;;
color: rgb(203, 203, 203);
color: rgb(160, 160, 160);
max-width: 400;
}</string>
</property>
<property name="text">
......@@ -1293,6 +1294,9 @@ QHeaderView::section{
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
<property name="wordWrap">
<bool>true</bool>
</property>
</widget>
</item>
<item>
......@@ -2103,6 +2107,41 @@ QHeaderView::section{
</widget>
</item>
<item>
<spacer name="verticalSpacer_28">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>0</width>
<height>0</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QLabel" name="label_wait_msg">
<property name="styleSheet">
<string notr="true">#label_wait_msg
{
font: 75 16px &quot;Microsoft YaHei UI Light&quot;;
color: rgb(203, 203, 203);
color: rgb(160, 160, 160);
max-width: 310;
}</string>
</property>
<property name="text">
<string/>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
<property name="wordWrap">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<spacer name="verticalSpacer_24">
<property name="orientation">
<enum>Qt::Vertical</enum>
......@@ -2110,7 +2149,7 @@ QHeaderView::section{
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
<height>0</height>
</size>
</property>
</spacer>
......
......@@ -79,12 +79,12 @@ BOOL WINAPI DllMain( HINSTANCE hInstance, DWORD dwReason, LPVOID /*lpvReserved*/
val += ";";
val += mod;
qputenv("PATH", val);
QDir::setCurrent(path);
FMPSettings setting;
QString configPath = setting.GetValue(CONFIG_ALL_PATH, "C:\\Freemud\\").toString();
QApplication::addLibraryPath(configPath);
qDebug() << "Library paths: " << QApplication::libraryPaths() << configPath;
ownApplication = QMfcApp::pluginInstance( hInstance );
}
if ( dwReason == DLL_PROCESS_DETACH && ownApplication )
......@@ -427,7 +427,7 @@ int main(int argc, char *argv[])
// control.Start(as, b);
char spccIn[MAX_BUF_LEN] = "{\"fmId\":\"11971709011000000002\",\"reqType\":451,\"storeId\":\"17607\",\"stationId\":\"1\",\"partnerId\":1443,\"operatorId\":\"0123\",\"transId\":301439,\"transAmount\":1,\"partnerOrderId\":\"909911039990170830002\",\"businessDate\":\"20170508\",\"products\":[{\"pid\":\"123\",\"name\":\"中杯拿铁\",\"price\":321,\"salesType\":\"NORMAL\"}]}";
char spccIn[MAX_BUF_LEN] = "{\"fmId\":\"11971709011000000002\",\"reqType\":352,\"storeId\":\"17607\",\"stationId\":\"1\",\"partnerId\":1443,\"operatorId\":\"0123\",\"transId\":301439,\"transAmount\":1,\"partnerOrderId\":\"909911039990170830002\",\"businessDate\":\"20170508\",\"products\":[{\"pid\":\"123\",\"name\":\"中杯拿铁\",\"price\":321,\"salesType\":\"NORMAL\"}]}";
// char spccIn[MAX_BUF_LEN] = "{\"reqType\":452,\"storeId\":\"17607\",\"stationId\":\"1\",\"partnerId\":1443,\"operatorId\":\"0123\",\"transId\":301439,\"transAmount\":1,\"partnerOrderId\":\"1365670843098735011753\",\"businessDate\":\"20170830\"}";
// char spccIn[MAX_BUF_LEN] = "{\"fmId\":\"64761709011000001002\",\"reqType\":453,\"storeId\":\"17607\",\"stationId\":\"1\",\"partnerId\":1443,\"operatorId\":\"0123\",\"transId\":301439,\"transAmount\":1,\"partnerOrderId\":\"1365670843098735011754\",\"businessDate\":\"20170830\"}";
control.Start(spccIn, b);
......
//{{NO_DEPENDENCIES}}
// Microsoft Visual C++ generated include file.
// Used by fmproxy_service.rc
// ¶һĬֵ
//
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE 101
#define _APS_NEXT_COMMAND_VALUE 40001
#define _APS_NEXT_CONTROL_VALUE 1001
#define _APS_NEXT_SYMED_VALUE 101
#endif
#endif
......@@ -14,7 +14,7 @@ include($$PWD/sbkpay.pri)
SOURCES += main.cpp
CONFIG += C++11 SBKDLL1
CONFIG += C++11 SBKDLL
#DEFINES += MOCK
......@@ -43,3 +43,5 @@ LIBS += -luser32
RESOURCES += \
res.qrc
RC_FILE = res/sbkpay.rc
#ifndef _VERSION_H_
#define _VERSION_H_
#define VER_MAJOR 0
#define VER_MINOR 1
#define VER_REVISION 0
#define VER_BUILD 36
//! Convert version numbers to string
#define _STR(S) #S
#define STR(S) _STR(S)
#define _MAK_VER(maj, min, rev, build) STR(##maj.##min.##rev.##build\0)
#define MAK_VER(maj, min, rev, build) _MAK_VER(maj, min, rev, build)
//! Resource version infomation
#define RES_FILE_VER VER_MAJOR,VER_MINOR,VER_REVISION,VER_BUILD
#define RES_PRODUCT_VER VER_MAJOR,VER_MINOR,VER_REVISION,VER_BUILD
#define RES_STR_FILE_VER MAK_VER(VER_MAJOR, VER_MINOR, VER_REVISION, VER_BUILD)
#define RES_STR_PRODUCT_VER MAK_VER(VER_MAJOR, VER_MINOR, VER_REVISION, VER_BUILD)
#define RES_COMPANY_NAME "上海非码网络科技有限公司\0"
#define RES_COPYRIGHT "Freemud Ltd. Copyright (C) 2014-2017\0"
#define RES_FILE_DESC "sbkpay\0"
#define RES_INTER_NAME "sbkpay\0"
#define RES_FILE_NAME "sbkpay\0"
#define RES_PRODUCT_NAME "sbkpay\0"
#define RES_FILE_EXT "*\0"
#endif //!_VERSION_H_
......@@ -2,6 +2,7 @@
#include <QCoreApplication>
#include "control.h"
#include "jsonfactory.h"
#include "fmnetwork.h"
#include "tools.h"
#include <QDebug>
......@@ -22,6 +23,9 @@ private slots:
void cleanupTestCase();
void test_InitPOSReqJsonObj_data();
void test_InitPOSReqJsonObj();
void test_CreateOLTPXML_data();
void test_CreateOLTPXML();
};
TestSimphony::TestSimphony()
......@@ -42,6 +46,32 @@ void TestSimphony::cleanupTestCase()
}
void TestSimphony::test_CreateOLTPXML_data()
{
QTest::addColumn<QJsonObject>("json");
QTest::addColumn<QByteArray>("result");
QJsonObject json;
json[JSON_KEY_TYPE] = sign;
json[JSON_KEY_STOREID] = "17607";
json[JSON_KEY_STATIONID] = "1";
QByteArray signResult("{\"stationId\": \"1\",\"storeId\": \"17607\",\"type\": 0}");
QTest::newRow("sign") << json << signResult;
json[JSON_KEY_TYPE] = pay;
QByteArray payResult("{\"stationId\": \"1\",\"storeId\": \"17607\",\"type\": 2}");
QTest::newRow("pay") << json << payResult;
}
void TestSimphony::test_CreateOLTPXML()
{
QFETCH(QJsonObject, json);
QFETCH(QByteArray, result);
qDebug() << FMNetWork::CreateOLTPXML(json);
}
void TestSimphony::test_InitPOSReqJsonObj_data()
{
QTest::addColumn<QByteArray>("indata");
......
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