Commit fe5a9e58 by 李定达

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

parent 80e41b72
......@@ -46,6 +46,8 @@ Control::Control(QObject *parent) : QObject(parent), _widget(NULL)
void Control::Start(const char *indata, char *outdata)
{
QLOG_INFO() << "get data from pos:" << indata;
QString appPath;
char pathStr[MAX_PATH] = { 0 };
GetProcPath(pathStr);
......@@ -233,20 +235,28 @@ bool Control::GetJson(ReqType type,QJsonObject &json, const QByteArray array, QS
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);
if(json.contains(JSON_KEY_MESSAGE))
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)
return true;
return false;
}
......@@ -258,6 +268,9 @@ void Control::Request(ReqType type, QStringList list)
JsonFactory::GetJsonWithType(type, json, _request, list);
if(type == againprint)
_fmId = list[0];
bool rlt = SendMessageToPayMent(json, outdata, error);
if(rlt)
......
......@@ -57,7 +57,7 @@ private:
//确保exe结束后不会重新弹窗
QMutex _lock;
QString _fmId;
......
......@@ -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 @@
#define MAX_BUF_LEN 25600
#define MAX_CHILED_LEN 256
#define MAX_PRINT_LEN 8192
#define MAX_PRINT_LEN 12800
#define PRINT_FILE_NAME "print.txt"
......@@ -40,6 +40,9 @@
#define JSON_KEY_PRINT "print"
#define JSON_KEY_PRINTACTION "printAction"
#define JSON_KET_CLIENTREF "cAlientrefundamount"
#define JSON_KEY_PAYMENTMETHODCODE "paymentMethodCode"
#define JSON_KEY_TRANSAMOUNT "transAmount"
#define JSON_KEY_MERDISCOUNT "merchantDiscount"
......
......@@ -17,6 +17,8 @@ HostWidget::HostWidget(QWidget *parent) :
_need_exit = false;
_runing = false;
_widgetlist.append(ui->pay);
_widgetlist.append(ui->find);
_widgetlist.append(ui->Manager);
......@@ -83,6 +85,11 @@ void HostWidget::InitWidget()
}
}
void HostWidget::setRuning(bool runing)
{
_runing = runing;
}
HostWidget::~HostWidget()
{
delete ui;
......@@ -94,10 +101,12 @@ HostWidget::~HostWidget()
void HostWidget::keyPressEvent(QKeyEvent *ke)
{
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->label_pay_money->hide();
......@@ -163,7 +172,7 @@ void HostWidget::ShowWithRequest(AlipayRequest request)
ui->btn_pay_exit->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 秒"));
......@@ -272,6 +281,7 @@ void HostWidget::ShowWiteJson(bool flag, QJsonObject object, QString error)
});
}
ui->tableWidget->sortByColumn(2, Qt::DescendingOrder);
ui->tableWidget->show();
}
}
......@@ -438,6 +448,7 @@ void HostWidget::on_btn_sign_sign_clicked()
void HostWidget::on_btn_find_check_clicked()
{
QStringList list;
ui->tableWidget->clear();
......
......@@ -29,6 +29,9 @@ public:
void ShowWiteMGS(ReqType type, bool flag, QString message = QString());
void ShowWiteJson(bool flag, QJsonObject object, QString error);
void setRuning(bool runing);
signals:
void RequestWithType(ReqType type, QStringList list);
......@@ -89,7 +92,7 @@ private:
bool _need_exit;
int _refundamout;
bool _runing;
ReqType _type;
};
......
......@@ -236,17 +236,17 @@ int main(int argc, char *argv[])
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.PlatNo, 4, QString("1443"));
FMTool::SetString(req.TransTime, 6, QString("130301"));
FMTool::SetString(req.StoreNo, 20 , QString("17607"));
FMTool::SetString(req.DeviceNo, 6 , QString("1"));
FMTool::SetString(req.CashierNo, 6 , QString("0123"));
FMTool::SetString(req.CashTraceNo, 6 , QString("123123"));
FMTool::SetString(req.OriginTrace, 64 , QString("*1232132132131234565354342-"));
FMTool::SetString(req.CashTraceNo, 6 , QString("16723"));
FMTool::SetString(req.OriginTrace, 64 , QString("7871170818A00002005"));
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[1] = ' ';
......
......@@ -4,6 +4,7 @@
#include "requestmodel.h"
#include "global.h"
#include "fmtool.h"
#include "QsLog.h"
#include <QFile>
#include <QJsonObject>
......@@ -55,19 +56,26 @@ private:
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());
//MTool::SetString(response.CardTraceNo, 40, "99571708191000040011");
FMTool::SetString(response.NeedPrint, 2, QString("01"));
int transAmount = json[JSON_KEY_TRANSAMOUNT].toInt();
int merchantDiscount = json[JSON_KEY_MERDISCOUNT].toInt();
int platformDiscount = json[JSON_KEY_PLTDISCOUNT].toInt();
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));
FMTool::SetString((void *)&(item->transactionNum), 64, json[JSON_KEY_PAYMENTMETHODCODE].toString());
FMTool::SetString((void *)&(item->transactionNum), 64, json[JSON_KEY_FMID].toString());
//FMTool::SetString((void *)&(item->transactionNum), 64, "99571708191000040011");
number = "01";
}
if(merchantDiscount != 0)
......@@ -78,7 +86,9 @@ private:
FMTool::SetString((void *)&(item->billType), 1, "1");
FMTool::SetString((void *)&(item->billId), 8, QString("36466"));
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)
......@@ -89,13 +99,12 @@ private:
FMTool::SetString((void *)&(item->billType), 1, "1");
FMTool::SetString((void *)&(item->billId), 8, QString("10001"));
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);
......@@ -109,6 +118,26 @@ private:
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)
{
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));
FMTool::SetString((void *)&(item->transactionNum), 64, json[JSON_KEY_FMID].toString());
number = "01";
}
FMTool::SetString(response.EFT_quantity, 2, number);
if(json[JSON_KEY_STATUSCODE].toInt() == 100)
return SetPinter(response, json);
return true;
......@@ -134,7 +163,7 @@ private:
FMTool::SetString(response.NeedPrint, 2, QString("01"));
if(json[JSON_KEY_STATUSCODE].toInt() == 100)
return SetPinter(response, json);
return SetAgainPinter(response, json);
return true;
}
......@@ -143,33 +172,72 @@ private:
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())
return false;
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();
QString str = obj[JSON_KEY_PRINT].toString();
str.replace("#", "\r\n");
str.append("\r\n");
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);
if(!file.isOpen())
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();
......
<?xml version="1.0" encoding="UTF-8"?>
<!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>
<data>
<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