Commit fe5a9e58 by 李定达

1.修复已知bug;2.周一UAT版本

parent 80e41b72
...@@ -46,6 +46,8 @@ Control::Control(QObject *parent) : QObject(parent), _widget(NULL) ...@@ -46,6 +46,8 @@ Control::Control(QObject *parent) : QObject(parent), _widget(NULL)
void Control::Start(const char *indata, char *outdata) void Control::Start(const char *indata, char *outdata)
{ {
QLOG_INFO() << "get data from pos:" << indata;
QString appPath; QString appPath;
char pathStr[MAX_PATH] = { 0 }; char pathStr[MAX_PATH] = { 0 };
GetProcPath(pathStr); GetProcPath(pathStr);
...@@ -233,20 +235,28 @@ bool Control::GetJson(ReqType type,QJsonObject &json, const QByteArray array, QS ...@@ -233,20 +235,28 @@ bool Control::GetJson(ReqType type,QJsonObject &json, const QByteArray array, QS
json = jsonDocument.object(); json = jsonDocument.object();
if(json.contains(JSON_KEY_MESSAGE) && json.contains(JSON_KEY_STATUSCODE) && (json[JSON_KEY_STATUSCODE].toInt() == 307 || json[JSON_KEY_STATUSCODE].toInt() == 303))
{
error = QString::fromLocal8Bit("签名过期,请重新获取签名");
json.insert(JSON_KEY_MESSAGE, QString::fromLocal8Bit("签名过期,请重新获取签名"));
}
if(type == againprint)
json.insert(JSON_KEY_FMID, _fmId);
RspFactory::GetResPonseJson(type, _response, json); RspFactory::GetResPonseJson(type, _response, json);
if(json.contains(JSON_KEY_MESSAGE)) if(json.contains(JSON_KEY_MESSAGE))
error = json[JSON_KEY_MESSAGE].toString(); error = json[JSON_KEY_MESSAGE].toString();
if(json.contains(JSON_KEY_MESSAGE) && json.contains(JSON_KEY_STATUSCODE) && json[JSON_KEY_STATUSCODE].toInt() == 302)
error = QString::fromLocal8Bit("签名过期,请获取签名");
if(type == refund && json.contains(JSON_KEY_STATUSCODE) && json[JSON_KEY_STATUSCODE].toInt() == 100)
json.insert(JSON_KET_CLIENTREF, FMTool::GetString(_request.Amount, 12));
if(json.contains(JSON_KEY_STATUSCODE) && json[JSON_KEY_STATUSCODE].toInt() == 100) if(json.contains(JSON_KEY_STATUSCODE) && json[JSON_KEY_STATUSCODE].toInt() == 100)
return true; return true;
return false; return false;
} }
...@@ -258,6 +268,9 @@ void Control::Request(ReqType type, QStringList list) ...@@ -258,6 +268,9 @@ void Control::Request(ReqType type, QStringList list)
JsonFactory::GetJsonWithType(type, json, _request, list); JsonFactory::GetJsonWithType(type, json, _request, list);
if(type == againprint)
_fmId = list[0];
bool rlt = SendMessageToPayMent(json, outdata, error); bool rlt = SendMessageToPayMent(json, outdata, error);
if(rlt) if(rlt)
......
...@@ -57,7 +57,7 @@ private: ...@@ -57,7 +57,7 @@ private:
//确保exe结束后不会重新弹窗 //确保exe结束后不会重新弹窗
QMutex _lock; QMutex _lock;
QString _fmId;
......
...@@ -146,6 +146,24 @@ public: ...@@ -146,6 +146,24 @@ public:
} }
static void SetStringWith(void *beginptr, int size, const QString &in)
{
char buf[MAX_PRINT_LEN] = { 0 };
char tmpbuf[MAX_PRINT_LEN] = { 0 };
if(in.isEmpty())
return ;
strcpy(buf, in.toUtf8().data());
int len = UTF8ToGBK((unsigned char *)buf, (unsigned char *)tmpbuf, MAX_PRINT_LEN);
memcpy((char *)beginptr, tmpbuf, len - 1);
//qDebug() << tmpbuf;
}
}; };
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
#define MAX_BUF_LEN 25600 #define MAX_BUF_LEN 25600
#define MAX_CHILED_LEN 256 #define MAX_CHILED_LEN 256
#define MAX_PRINT_LEN 8192 #define MAX_PRINT_LEN 12800
#define PRINT_FILE_NAME "print.txt" #define PRINT_FILE_NAME "print.txt"
...@@ -40,6 +40,9 @@ ...@@ -40,6 +40,9 @@
#define JSON_KEY_PRINT "print" #define JSON_KEY_PRINT "print"
#define JSON_KEY_PRINTACTION "printAction" #define JSON_KEY_PRINTACTION "printAction"
#define JSON_KET_CLIENTREF "cAlientrefundamount"
#define JSON_KEY_PAYMENTMETHODCODE "paymentMethodCode" #define JSON_KEY_PAYMENTMETHODCODE "paymentMethodCode"
#define JSON_KEY_TRANSAMOUNT "transAmount" #define JSON_KEY_TRANSAMOUNT "transAmount"
#define JSON_KEY_MERDISCOUNT "merchantDiscount" #define JSON_KEY_MERDISCOUNT "merchantDiscount"
......
...@@ -17,6 +17,8 @@ HostWidget::HostWidget(QWidget *parent) : ...@@ -17,6 +17,8 @@ HostWidget::HostWidget(QWidget *parent) :
_need_exit = false; _need_exit = false;
_runing = false;
_widgetlist.append(ui->pay); _widgetlist.append(ui->pay);
_widgetlist.append(ui->find); _widgetlist.append(ui->find);
_widgetlist.append(ui->Manager); _widgetlist.append(ui->Manager);
...@@ -83,6 +85,11 @@ void HostWidget::InitWidget() ...@@ -83,6 +85,11 @@ void HostWidget::InitWidget()
} }
} }
void HostWidget::setRuning(bool runing)
{
_runing = runing;
}
HostWidget::~HostWidget() HostWidget::~HostWidget()
{ {
delete ui; delete ui;
...@@ -94,10 +101,12 @@ HostWidget::~HostWidget() ...@@ -94,10 +101,12 @@ HostWidget::~HostWidget()
void HostWidget::keyPressEvent(QKeyEvent *ke) void HostWidget::keyPressEvent(QKeyEvent *ke)
{ {
if (ke->key() == Qt::Key_Return && _curr_show_widget == ui->pay) if (ke->key() == Qt::Key_Return && _curr_show_widget == ui->pay)
{ {
if(!_need_exit) if(!_need_exit && _runing == false)
{ {
_runing = true;
ui->btn_pay_exit->hide(); ui->btn_pay_exit->hide();
ui->label_pay_money->hide(); ui->label_pay_money->hide();
...@@ -163,7 +172,7 @@ void HostWidget::ShowWithRequest(AlipayRequest request) ...@@ -163,7 +172,7 @@ void HostWidget::ShowWithRequest(AlipayRequest request)
ui->btn_pay_exit->hide(); ui->btn_pay_exit->hide();
ui->label_pay_money->hide(); ui->label_pay_money->hide();
_refundamout = FMTool::GetString(_data.Amount, 12).toInt(); //_refundamout = FMTool::GetString(_data.Amount, 12).toInt();
_label_pay_timer->start(60, QString::fromLocal8Bit("%1 秒")); _label_pay_timer->start(60, QString::fromLocal8Bit("%1 秒"));
...@@ -272,6 +281,7 @@ void HostWidget::ShowWiteJson(bool flag, QJsonObject object, QString error) ...@@ -272,6 +281,7 @@ void HostWidget::ShowWiteJson(bool flag, QJsonObject object, QString error)
}); });
} }
ui->tableWidget->sortByColumn(2, Qt::DescendingOrder);
ui->tableWidget->show(); ui->tableWidget->show();
} }
} }
...@@ -438,6 +448,7 @@ void HostWidget::on_btn_sign_sign_clicked() ...@@ -438,6 +448,7 @@ void HostWidget::on_btn_sign_sign_clicked()
void HostWidget::on_btn_find_check_clicked() void HostWidget::on_btn_find_check_clicked()
{ {
QStringList list; QStringList list;
ui->tableWidget->clear(); ui->tableWidget->clear();
......
...@@ -29,6 +29,9 @@ public: ...@@ -29,6 +29,9 @@ public:
void ShowWiteMGS(ReqType type, bool flag, QString message = QString()); void ShowWiteMGS(ReqType type, bool flag, QString message = QString());
void ShowWiteJson(bool flag, QJsonObject object, QString error); void ShowWiteJson(bool flag, QJsonObject object, QString error);
void setRuning(bool runing);
signals: signals:
void RequestWithType(ReqType type, QStringList list); void RequestWithType(ReqType type, QStringList list);
...@@ -89,7 +92,7 @@ private: ...@@ -89,7 +92,7 @@ private:
bool _need_exit; bool _need_exit;
int _refundamout; bool _runing;
ReqType _type; ReqType _type;
}; };
......
...@@ -236,17 +236,17 @@ int main(int argc, char *argv[]) ...@@ -236,17 +236,17 @@ int main(int argc, char *argv[])
AlipayRequest req; AlipayRequest req;
FMTool::SetString(req.BusinessDay, 8 , QString("20170908")); FMTool::SetString(req.BusinessDay, 8 , QString("20170909"));
FMTool::SetString(req.TransType, 2 , QString("10")); FMTool::SetString(req.TransType, 2 , QString("10"));
FMTool::SetString(req.PlatNo, 4, QString("1443")); FMTool::SetString(req.PlatNo, 4, QString("1443"));
FMTool::SetString(req.TransTime, 6, QString("130301")); 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("16723"));
FMTool::SetString(req.OriginTrace, 64 , QString("*1232132132131234565354342-")); FMTool::SetString(req.OriginTrace, 64 , QString("7871170818A00002005"));
FMTool::SetString(req.Amount, 12, QString("1")); FMTool::SetString(req.Amount, 12, QString("1"));
FMTool::SetString(req.Reserved1, 48 , QString("124112312312312312312----32")); FMTool::SetString(req.Reserved1, 48 , QString("12411235821335894422"));
req.item_line_qty[0] = '2'; req.item_line_qty[0] = '2';
req.item_line_qty[1] = ' '; req.item_line_qty[1] = ' ';
......
...@@ -4,6 +4,7 @@ ...@@ -4,6 +4,7 @@
#include "requestmodel.h" #include "requestmodel.h"
#include "global.h" #include "global.h"
#include "fmtool.h" #include "fmtool.h"
#include "QsLog.h"
#include <QFile> #include <QFile>
#include <QJsonObject> #include <QJsonObject>
...@@ -55,19 +56,26 @@ private: ...@@ -55,19 +56,26 @@ private:
FMTool::SetString(response.ResponseCode, 3, QString::number(json[JSON_KEY_STATUSCODE].toInt())); 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.ResponseMsg, 40, json[JSON_KEY_MESSAGE].toString());
FMTool::SetString(response.CardTraceNo, 40, json[JSON_KEY_FMID].toString()); FMTool::SetString(response.CardTraceNo, 40, json[JSON_KEY_FMID].toString());
//MTool::SetString(response.CardTraceNo, 40, "99571708191000040011");
FMTool::SetString(response.NeedPrint, 2, QString("01")); FMTool::SetString(response.NeedPrint, 2, QString("01"));
int transAmount = json[JSON_KEY_TRANSAMOUNT].toInt(); int transAmount = json[JSON_KEY_TRANSAMOUNT].toInt();
int merchantDiscount = json[JSON_KEY_MERDISCOUNT].toInt(); int merchantDiscount = json[JSON_KEY_MERDISCOUNT].toInt();
int platformDiscount = json[JSON_KEY_PLTDISCOUNT].toInt(); int platformDiscount = json[JSON_KEY_PLTDISCOUNT].toInt();
int userAmount = transAmount - merchantDiscount - platformDiscount; int userAmount = transAmount - merchantDiscount - platformDiscount;
//用户实付 QString number;
struct EFTItem *item = (struct EFTItem *)response.EFT_Detail_information[0];
FMTool::SetString((void *)&(item->billType), 1, "1"); {
FMTool::SetString((void *)&(item->billId), 8, QString("36464")); //用户实付
FMTool::SetString((void *)&(item->amount), 12, QString::number(userAmount)); struct EFTItem *item = (struct EFTItem *)response.EFT_Detail_information[0];
FMTool::SetString((void *)&(item->transactionNum), 64, json[JSON_KEY_PAYMENTMETHODCODE].toString());
FMTool::SetString((void *)&(item->billType), 1, "1");
FMTool::SetString((void *)&(item->billId), 8, QString("36464"));
FMTool::SetString((void *)&(item->amount), 12, QString::number(userAmount));
FMTool::SetString((void *)&(item->transactionNum), 64, json[JSON_KEY_FMID].toString());
//FMTool::SetString((void *)&(item->transactionNum), 64, "99571708191000040011");
number = "01";
}
if(merchantDiscount != 0) if(merchantDiscount != 0)
...@@ -78,7 +86,9 @@ private: ...@@ -78,7 +86,9 @@ private:
FMTool::SetString((void *)&(item->billType), 1, "1"); FMTool::SetString((void *)&(item->billType), 1, "1");
FMTool::SetString((void *)&(item->billId), 8, QString("36466")); FMTool::SetString((void *)&(item->billId), 8, QString("36466"));
FMTool::SetString((void *)&(item->amount), 12, QString::number(merchantDiscount)); FMTool::SetString((void *)&(item->amount), 12, QString::number(merchantDiscount));
FMTool::SetString((void *)&(item->transactionNum), 64, json[JSON_KEY_PAYMENTMETHODCODE].toString()); //FMTool::SetString((void *)&(item->amount), 12, QString("100"));
FMTool::SetString((void *)&(item->transactionNum), 64, json[JSON_KEY_FMID].toString());
number = "02";
} }
if(platformDiscount != 0) if(platformDiscount != 0)
...@@ -89,25 +99,44 @@ private: ...@@ -89,25 +99,44 @@ private:
FMTool::SetString((void *)&(item->billType), 1, "1"); FMTool::SetString((void *)&(item->billType), 1, "1");
FMTool::SetString((void *)&(item->billId), 8, QString("10001")); FMTool::SetString((void *)&(item->billId), 8, QString("10001"));
FMTool::SetString((void *)&(item->amount), 12, QString::number(platformDiscount)); FMTool::SetString((void *)&(item->amount), 12, QString::number(platformDiscount));
FMTool::SetString((void *)&(item->transactionNum), 64, json[JSON_KEY_PAYMENTMETHODCODE].toString()); //FMTool::SetString((void *)&(item->amount), 12, QString("100"));
FMTool::SetString((void *)&(item->transactionNum), 64, json[JSON_KEY_FMID].toString());
number = "03";
} }
FMTool::SetString(response.EFT_quantity, 2, number);
if(json[JSON_KEY_STATUSCODE].toInt() == 100)
return SetPinter(response, json);
return true;
}
static bool GetRefundResponse(AlipayResponse &response, const QJsonObject &json)
{
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.CardTraceNo, 40, json[JSON_KEY_FMID].toString());
FMTool::SetString(response.NeedPrint, 2, QString("01"));
int transAmount = json[JSON_KET_CLIENTREF].toInt();
int merchantDiscount = json[JSON_KEY_MERDISCOUNT].toInt();
int platformDiscount = json[JSON_KEY_PLTDISCOUNT].toInt();
int userAmount = transAmount - merchantDiscount - platformDiscount;
QString number;
if(json[JSON_KEY_STATUSCODE].toInt() == 100) if(json[JSON_KEY_STATUSCODE].toInt() != 100)
return SetPinter(response, json); {
return true; struct EFTItem *item = (struct EFTItem *)response.EFT_Detail_information[0];
}
static bool GetRefundResponse(AlipayResponse &response, const QJsonObject &json) FMTool::SetString((void *)&(item->billType), 1, "1");
{ FMTool::SetString((void *)&(item->billId), 8, QString("36464"));
FMTool::SetString(response.ResponseCode, 3, QString::number(json[JSON_KEY_STATUSCODE].toInt())); FMTool::SetString((void *)&(item->amount), 12, QString::number(userAmount));
FMTool::SetString(response.ResponseMsg, 40, json[JSON_KEY_MESSAGE].toString()); FMTool::SetString((void *)&(item->transactionNum), 64, json[JSON_KEY_FMID].toString());
FMTool::SetString(response.CardTraceNo, 40, json[JSON_KEY_FMID].toString()); number = "01";
FMTool::SetString(response.NeedPrint, 2, QString("01")); }
FMTool::SetString(response.EFT_quantity, 2, number);
if(json[JSON_KEY_STATUSCODE].toInt() == 100) if(json[JSON_KEY_STATUSCODE].toInt() == 100)
return SetPinter(response, json); return SetPinter(response, json);
...@@ -134,7 +163,7 @@ private: ...@@ -134,7 +163,7 @@ private:
FMTool::SetString(response.NeedPrint, 2, QString("01")); FMTool::SetString(response.NeedPrint, 2, QString("01"));
if(json[JSON_KEY_STATUSCODE].toInt() == 100) if(json[JSON_KEY_STATUSCODE].toInt() == 100)
return SetPinter(response, json); return SetAgainPinter(response, json);
return true; return true;
} }
...@@ -143,33 +172,72 @@ private: ...@@ -143,33 +172,72 @@ private:
return false; return false;
} }
static bool SetPinter(AlipayResponse &response, const QJsonObject &json) static bool SetAgainPinter(AlipayResponse &response, const QJsonObject &json)
{ {
if(!json.contains(JSON_KEY_EXT) || !json[JSON_KEY_EXT].isObject()) if(!json.contains(JSON_KEY_EXT) || !json[JSON_KEY_EXT].isObject())
return false; return false;
FMTool::SetString(response.NeedPrint, 2, QString("00")); FMTool::SetString(response.NeedPrint, 2, QString("00"));
QJsonObject obj = json[JSON_KEY_EXT].toObject();
QString str;
str.append(obj[JSON_KEY_PRINT].toString());
str.replace("#", "\r\n");
str.append("==============================\r\n").append(QChar(27)).append(QChar('@')).append(QChar(29)).append("hP").append(QChar(29)).append(QChar('w')).append(QChar(2)).append(QChar(29)).append(QChar('H')).append(QChar(2));
str.append(QChar(27)).append(QChar('a')).append(QChar(1)).append(QChar(29)).append("kF").append(QChar(20)).append(json[JSON_KEY_FMID].toString()).append("\r\n").append(QChar(27)).append('@').append('\r').append('\n');
qDebug() << str;
qDebug() << json;
QFile file(qApp->applicationDirPath() + "/" + PRINT_FILE_NAME);
QString path = qApp->applicationDirPath() + "/" + PRINT_FILE_NAME;
FMTool::SetString(response.EFTprintFileName, 200, path.replace("/", "\\"));
file.open(QFile::WriteOnly);
if(!file.isOpen())
return false;
char array[MAX_PRINT_LEN] = { 0 };
FMTool::SetStringWith(array, str.toUtf8().length(), str);
file.write(array);
file.flush();
file.close();
return true;
}
static bool SetPinter(AlipayResponse &response, const QJsonObject &json)
{
if(!json.contains(JSON_KEY_EXT) || !json[JSON_KEY_EXT].isObject())
return false;
FMTool::SetString(response.NeedPrint, 2, QString("00"));
QJsonObject obj = json[JSON_KEY_EXT].toObject(); QJsonObject obj = json[JSON_KEY_EXT].toObject();
QString str = obj[JSON_KEY_PRINT].toString(); QString str = obj[JSON_KEY_PRINT].toString();
str.replace("#", "\r\n"); str.replace("#", "\r\n");
str.append("\r\n");
QFile file(qApp->applicationDirPath() + "/" + PRINT_FILE_NAME); QFile file(qApp->applicationDirPath() + "/" + PRINT_FILE_NAME);
FMTool::SetString(response.EFTprintFileName, 200, QString(qApp->applicationDirPath() + "/" + PRINT_FILE_NAME)); QString path = qApp->applicationDirPath() + "/" + PRINT_FILE_NAME;
FMTool::SetString(response.EFTprintFileName, 200, path.replace("/", "\\"));
file.open(QFile::WriteOnly); file.open(QFile::WriteOnly);
if(!file.isOpen()) if(!file.isOpen())
return false; return false;
char buf[MAX_PRINT_LEN] = { 0 }; char array[MAX_PRINT_LEN] = { 0 };
FMTool::SetString(buf, str.toUtf8().length(), str); FMTool::SetStringWith(array, str.toUtf8().length(), str);
file.write(buf); file.write(array);
file.flush(); file.flush();
......
<?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-18T10:49:38. --> <!-- Written by QtCreator 3.5.1, 2017-08-19T19:19:22. -->
<qtcreator> <qtcreator>
<data> <data>
<variable>EnvironmentId</variable> <variable>EnvironmentId</variable>
......
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