Commit d0824442 by 李定达

1.签到,支付,退款修改完成

parent 14d81a4a
#include "control.h"
#include "control.h"
#include "global.h"
#include "fmtool.h"
#include "fmerror.h"
......@@ -55,7 +55,7 @@ void Control::Start(const char *indata, char *outdata)
memcpy(outdata, (char *)(&_response), sizeof(struct AlipayResponse));
outdata[sizeof(struct AlipayResponse)] = 0;
QLOG_INFO() << "return data to pos : " << outdata;
QLOG_INFO() << "return data to pos : " << outdata;
}
void Control::SetResPonseWithMessage(QString code, const QString &message)
......@@ -102,14 +102,14 @@ bool Control::SendMessageToPayMent(const QJsonObject &json, QByteArray &outdata,
else
{
QLOG_ERROR() << "get function (GetRSACret) failed";
error = QString(ERROR_LOAD_DLL2);
error = QString::fromLocal8Bit("加载基础组件(fun)失败");
}
}
else
{
QLOG_ERROR() << "load dll failed";
error = QString(ERROR_LOAD_DLL1);
error = QString::fromLocal8Bit("加载基础组件(dll)失败");
}
return false;
......@@ -135,12 +135,9 @@ bool Control::GetRSA(QString &error)
int i = FMTool::GetString(_request.Reserved1, 48).toInt();
QString storeID = FMTool::GetString(_request.StoreNo, 20);
QString PosNO = FMTool::GetString(_request.DeviceNo, 6);
rlt = getrsacret(i, storeID.toLatin1().data(), PosNO.toLatin1().data());
if(!rlt)
error = QString(ERROR_LOAD_FAILED);
error = QString::fromLocal8Bit("获取服务端返回数据失败");
loop.exit();
});
......@@ -149,14 +146,14 @@ bool Control::GetRSA(QString &error)
else
{
QLOG_ERROR() << "get function (GetRSACret) failed";
error = QString(ERROR_LOAD_DLL2);
error = QString::fromLocal8Bit("加载基础组件(fun)失败");
}
}
else
{
QLOG_ERROR() << "load dll failed";
error = QString(ERROR_LOAD_DLL1);
error = QString::fromLocal8Bit("加载基础组件(dll)失败");
}
return rlt;
}
......@@ -165,6 +162,12 @@ void Control::RequestSign()
{
QString error;
bool rlt = GetRSA(error);
if(rlt)
SetResPonseWithMessage("100", QString::fromLocal8Bit("签名成功"));
else
SetResPonseWithMessage("22", QString::fromLocal8Bit("签名失败"));
_lock.lock();
if(_widget != NULL)
_widget->ShowWiteMGS(sign, rlt, error);
......@@ -178,7 +181,7 @@ bool Control::GetJson(ReqType type,QJsonObject &json, const QByteArray array, QS
if( jsonDocument.isNull() )
{
QLOG_ERROR() << "server return not json";
error = QString("服务端返回数据异常");
error = QString::fromLocal8Bit("服务端返回数据异常");
return false;
}
......
......@@ -100,7 +100,7 @@ public:
strncpy(buf, (char *)beginptr, size);
qDebug() << buf;
//qDebug() << buf;
for(int i = strlen(buf) - 1; i >= 0; --i )
{
......@@ -120,7 +120,7 @@ public:
if(GBKToUTF8((unsigned char *)tmpbuf, strlen(tmpbuf), (unsigned char *)utfbuf, len + 1) > 0)
tmp = QString(utfbuf);
qDebug() << tmp.toLatin1().data();
//qDebug() << tmp.toLatin1().data();
return QString(tmpbuf);
}
......@@ -142,7 +142,7 @@ public:
strncpy((char *)beginptr, tmpbuf, len - 1);
qDebug() << tmpbuf;
//qDebug() << tmpbuf;
}
......
......@@ -52,10 +52,5 @@
#define JSON_REQTYPE_PRINTER 85
#define JSON_REQTYPE_find 2
#define ERROR_LOAD_DLL1 "加载基础组件(dll)失败"
#define ERROR_LOAD_DLL2 "加载基础组件(fun)失败"
#define ERROR_LOAD_FAILED "获取服务端返回数据失败"
#endif // GLOBAL
#include "hostwidget.h"
#include "hostwidget.h"
#include "ui_hostwidget.h"
#include "QKeyEvent"
#include "QsLog.h"
......@@ -28,7 +28,7 @@ HostWidget::HostWidget(QWidget *parent) :
InitWidget();
_label_pay_timer = new LabelsTimer(ui->label_pay_time, 60, "% 秒");
_label_pay_timer = new LabelsTimer(ui->label_pay_time, 60, QString::fromLocal8Bit("%1 秒"));
connect(_label_pay_timer, &LabelsTimer::timeout, this, &HostWidget::on_TimeOut);
......@@ -48,7 +48,7 @@ void HostWidget::ShowWidget(QWidget *showwidget)
ui->lineEdit_pay_code->setFocus();
ui->label_pay_msg_time->setVisible(false);
_label_pay_timer->start(10, "%1 秒");
_label_pay_timer->start(60, QString::fromLocal8Bit("%1 秒"));
}
for(int i = 0; i < _widgetlist.size(); ++i)
......@@ -89,16 +89,24 @@ void HostWidget::keyPressEvent(QKeyEvent *ke)
{
ui->btn_pay_exit->hide();
ui->label_pay_money->hide();
ui->label_pay_title->setText("支付宝支付中...");
_label_pay_timer->start(60, "%1 秒");
_label_pay_timer->start(60, QString::fromLocal8Bit("%1 秒"));
QStringList list;
list.append(ui->lineEdit_pay_code->text());
QLOG_INFO() << list;
emit RequestWithType(pay, list);
if(_type == pay)
{
ui->label_pay_title->setText(QString::fromLocal8Bit("支付宝支付中..."));
emit RequestWithType(pay, list);
}
else
{
ui->label_pay_title->setText(QString::fromLocal8Bit("支付宝退款中..."));
emit RequestWithType(refund, list);
}
}else
emit Exits();
}
......@@ -109,7 +117,7 @@ void HostWidget::keyPressEvent(QKeyEvent *ke)
}
void HostWidget::ShowWithRequest(AlipayRequest request)
{
{
QString reqtype;
_data = request;
......@@ -123,18 +131,24 @@ void HostWidget::ShowWithRequest(AlipayRequest request)
if(reqtype.compare("30") == 0)
{
_type = pay;
ShowWidget(ui->pay);
_curr_show_widget = ui->pay;
double Amount = FMTool::GetString(_data.Amount, 12).toInt()/100.0;
ui->label_pay_money->setText(QString("需收取 ¥ %1").arg(Amount));
ui->label_pay_title->setText(QString::fromLocal8Bit("请扫描输入支付宝二维码"));
ui->btn_pay_exit->setText(QString::fromLocal8Bit("取消支付"));
ui->label_pay_money->setText(QString::fromLocal8Bit("需收取 ¥ %1").arg(Amount));
}
if(reqtype.compare("40") == 0)
{
_type = refund;
ShowWidget(ui->pay);
_curr_show_widget = ui->pay;
double Amount = FMTool::GetString(_data.Amount, 12).toInt()/100.0;
ui->label_pay_money->setText(QString("退款 ¥ %1").arg(Amount));
ui->label_pay_title->setText(QString::fromLocal8Bit("请扫描退款凭证号"));
ui->btn_pay_exit->setText(QString::fromLocal8Bit("取消退款"));
ui->label_pay_money->setText(QString::fromLocal8Bit("退款 ¥ %1").arg(Amount));
}
if(reqtype.compare("80") == 0)
......@@ -152,14 +166,13 @@ void HostWidget::ShowWithRequest(AlipayRequest request)
void HostWidget::ShowWiteMGS(ReqType type, bool flag, QString message)
{
if(type == sign)
{
_need_exit = true;
if(flag)
ui->label_sign_title->setText("获取签名成功");
ui->label_sign_title->setText(QString::fromLocal8Bit("获取签名成功"));
else
ui->label_sign_title->setText("获取签名失败");
ui->label_sign_title->setText(QString::fromLocal8Bit("获取签名失败"));
ui->label_sign_msg->setText(message);
......@@ -167,7 +180,6 @@ void HostWidget::ShowWiteMGS(ReqType type, bool flag, QString message)
ShowWidget(ui->sign);
return ;
}
if(type == pay && _curr_show_widget == ui->pay)
{
_need_exit = true;
......@@ -176,19 +188,44 @@ void HostWidget::ShowWiteMGS(ReqType type, bool flag, QString message)
ui->label_pay_money->setVisible(true);
ui->label_pay_money->setText(message);
ui->btn_pay_exit->setVisible(true);
ui->btn_pay_exit->setText(QString::fromLocal8Bit("确认"));
if(flag) {
ui->label_pay_msg_time->setVisible(true);
_label_pay_timer->setLabel(ui->label_pay_msg_time);
_label_pay_timer->start(3);
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"));
}
return ;
}
if(type == refund && _curr_show_widget == ui->pay)
{
_need_exit = true;
_label_pay_timer->stop();
ui->label_pay_time_load->setVisible(false);
ui->label_pay_money->setVisible(true);
ui->label_pay_money->setText(message);
ui->btn_pay_exit->setVisible(true);
ui->btn_pay_exit->setText("确认");
if(flag) {
ui->label_pay_msg_time->setVisible(true);
_label_pay_timer->setLabel(ui->label_pay_msg_time);
_label_pay_timer->start(30);
ui->label_pay_title->setText("支付成功");
_label_pay_timer->start(3);
ui->label_pay_title->setText(QString::fromLocal8Bit("退款成功"));
ui->label_pay_time->setPixmap(QPixmap(":res/success.png"));
} else {
ui->label_pay_title->setText("支付失败");
ui->label_pay_title->setText(QString::fromLocal8Bit("退款失败"));
ui->label_pay_time->setPixmap(QPixmap(":res/warning.png"));
}
return ;
}
}
void HostWidget::on_btn_mananger_register_clicked()
......@@ -197,7 +234,7 @@ void HostWidget::on_btn_mananger_register_clicked()
ShowWidget(ui->sign);
ui->btn_sign_sign->hide();
ui->label_sign_title->setText("签到中...");
ui->label_sign_title->setText(QString::fromLocal8Bit("签到中..."));
ui->label_sign_msg->setText("");
ui->label_sign_storeid->setText(FMTool::GetString(_data.StoreNo, 20));
emit RequestWithType(sign, list);
......@@ -222,13 +259,13 @@ void HostWidget::on_TimeOut()
if(_need_exit)
emit Exits();
else
emit ExitWithMSG("01", QString("操作超时"));
emit ExitWithMSG("01", QString::fromLocal8Bit("操作超时"));
}
void HostWidget::on_btn_mananger_exit_clicked()
{
this->hide();
emit ExitWithMSG("02", QString("收银员取消"));
emit ExitWithMSG("02", QString::fromLocal8Bit("收银员取消"));
}
void HostWidget::on_btn_pay_exit_clicked()
......@@ -237,19 +274,22 @@ void HostWidget::on_btn_pay_exit_clicked()
if(_need_exit)
emit Exits();
else
emit ExitWithMSG("02", QString("收银员取消"));
emit ExitWithMSG("02", QString::fromLocal8Bit("收银员取消"));
}
void HostWidget::on_btn_find_exit_clicked()
{
this->hide();
emit ExitWithMSG("02", QString("收银员取消"));
emit ExitWithMSG("02", QString::fromLocal8Bit("收银员取消"));
}
void HostWidget::on_btn_sign_exit_clicked()
{
this->hide();
emit ExitWithMSG("02", QString("收银员取消"));
if(_need_exit)
emit Exits();
else
emit ExitWithMSG("01", QString::fromLocal8Bit("收银员取消"));
}
void HostWidget::on_btn_sign_sign_clicked()
......
......@@ -77,6 +77,8 @@ private:
QMovie *_label_pay_movie;
bool _need_exit;
ReqType _type;
};
#endif // HOSTWIDGET_H
......@@ -71,11 +71,13 @@ private:
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());
QString len = FMTool::GetString((const void *)&(request.item_line_qty), 2);
int len = FMTool::GetString((const void *)&(request.item_line_qty), 2).toInt();
QJsonArray prod;
for(int i = 0; i < len.toInt(); ++i)
qDebug() << "--------" << len;
for(int i = 0; i < len; ++i)
{
QJsonObject object;
......@@ -109,13 +111,13 @@ private:
json.insert(JSON_KEY_VER, DEFAULT_JSON_VER_VALUE);
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.Reserved1), 48).toInt());
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_OPERATORID, FMTool::GetString((const void *)&(request.CashierNo), 6));
json.insert(JSON_KEY_TRANSID, FMTool::GetString((const void *)&(request.CashTraceNo), 6));
json.insert(JSON_KEY_BUSINESSDATE, FMTool::GetString((const void *)&(request.BusinessDay), 8));
json.insert(JSON_KEY_CODE, list[0]);
json.insert(JSON_KEY_FMID, list[0]);
json.insert(JSON_KEY_REFUNDAMOUT, FMTool::GetString((const void *)&(request.Amount), 12).toInt());
return true;
......

#ifdef FM_TEST
#include "control.h"
......@@ -14,7 +14,7 @@ void TestSetString()
{
AlipayResponse repon;
FMTool::SetString(repon.ResponseMsg, 40, QString("傻逼"));
FMTool::SetString(repon.ResponseMsg, 40, QString::fromLocal8Bit("sb"));
}
void TestSetPinter()
......@@ -22,7 +22,7 @@ void TestSetPinter()
AlipayResponse repon;
QJsonObject obj, json;
obj.insert("print", "为了宽宏大量分开打女生短发设计开发");
obj.insert("print", "dasdas");
json.insert("ext", obj);
......@@ -37,19 +37,19 @@ void TestGetResPonseJson()
AlipayResponse repon;
QJsonObject obj, json;
obj.insert("print", "为了宽宏大量分开打女生短发设计开发");
obj.insert("print", "dasdas");
json.insert("ext", obj);
json.insert("fmId", "asdashdgajshdg11111111111111111");
json.insert("statusCode", 100);
json.insert("message", "哇哈哈");
json.insert("message", "asdasd");
RspFactory::GetResPonseJson(pay, repon, json);
qDebug() << "lalal";
json.insert("statusCode", 204);
json.insert("message", "哇哈哈有毒");
json.insert("message", "asdasd");
RspFactory::GetResPonseJson(refund, repon, json);
......@@ -61,7 +61,7 @@ void TestGetResPonseWithError()
{
AlipayResponse repon;
RspFactory::GetResPonseWithError(repon, "201", "山茶花");
RspFactory::GetResPonseWithError(repon, "201", "asdasd");
qDebug() << "lalal";
......@@ -101,12 +101,41 @@ int main(int argc, char *argv[])
AlipayRequest req;
FMTool::SetString(req.BusinessDay, 8 , QString("20170908"));
FMTool::SetString(req.TransType, 2 , QString("40"));
FMTool::SetString(req.TransType, 2 , QString("10"));
FMTool::SetString(req.Reserved1, 64 , QString("1443"));
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.Amount, 12, QString("1"));
req.item_line_qty[0] = '9';
req.item_line_qty[1] = '9';
// struct product{
// char productID[8]; //商品id
// char buyCount[4]; //购买数量
// char unitPrice[8]; //单件商品价格
// char isCombo[1]; //默认为0
// char isNonsale[1]; //(废弃)
// char productName[20]; //商品名字
// };
for(int i = 0; i < 99; ++i)
{
struct product *pro = (struct product *)req.item_information[i];
FMTool::SetString(pro->productID, 8,QString::number(i+1));
FMTool::SetString(pro->buyCount, 4,QString::number(i+1));
FMTool::SetString(pro->unitPrice, 8,QString::number(i+1));
FMTool::SetString(pro->isCombo, 1,QString::number(i%2));
FMTool::SetString(pro->isNonsale, 1,QString::number(i+1));
FMTool::SetString(pro->productName, 20,QString::fromLocal8Bit("asdasdasd"));
}
char as[MAX_BUF_LEN] = {0};
......
......@@ -77,7 +77,6 @@ private:
static bool GetDayEndResponse(AlipayResponse &response, const QJsonObject &json)
{
return false;
}
......
......@@ -36,5 +36,7 @@ HEADERS += hostwidget.h \
FORMS += hostwidget.ui
LIBS += -luser32
RESOURCES += \
res.qrc
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE QtCreatorProject>
<!-- Written by QtCreator 3.5.1, 2017-08-11T14:08:55. -->
<!-- Written by QtCreator 3.5.1, 2017-08-12T12:26:37. -->
<qtcreator>
<data>
<variable>EnvironmentId</variable>
......@@ -58,14 +58,14 @@
<data>
<variable>ProjectExplorer.Project.Target.0</variable>
<valuemap type="QVariantMap">
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Desktop Qt 5.5.1 MinGW 32bit</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Desktop Qt 5.5.1 MinGW 32bit</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">qt.55.win32_mingw492_kit</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.Id">qt.55.win32_msvc2010_kit</value>
<value type="int" key="ProjectExplorer.Target.ActiveBuildConfiguration">0</value>
<value type="int" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
<value type="int" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">D:/gitcode/sbkpay/build-sbkpay-Desktop_Qt_5_5_1_MinGW_32bit-Debug</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">D:/gitcode/sbkpay/build-sbkpay-Desktop_Qt_5_5_1_MSVC2010_32bit-Debug</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
......@@ -120,7 +120,7 @@
<value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">true</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.1">
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">D:/gitcode/sbkpay/build-sbkpay-Desktop_Qt_5_5_1_MinGW_32bit-Release</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">D:/gitcode/sbkpay/build-sbkpay-Desktop_Qt_5_5_1_MSVC2010_32bit-Release</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
......@@ -226,14 +226,12 @@
</valuelist>
<value type="int" key="PE.EnvironmentAspect.Base">2</value>
<valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">sbkpay</value>
<value type="QString" key="ProjectExplorer.CustomExecutableRunConfiguration.Arguments"></value>
<value type="QString" key="ProjectExplorer.CustomExecutableRunConfiguration.Executable"></value>
<value type="QString" key="ProjectExplorer.CustomExecutableRunConfiguration.WorkingDirectory">%{buildDir}</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">自定义执行档</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4RunConfiguration:D:/gitcode/sbkpay/sbkpay/sbkpay.pro</value>
<value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.CommandLineArguments"></value>
<value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.ProFile">sbkpay.pro</value>
<value type="bool" key="Qt4ProjectManager.Qt4RunConfiguration.UseDyldImageSuffix">false</value>
<value type="bool" key="Qt4ProjectManager.Qt4RunConfiguration.UseTerminal">false</value>
<value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.UserWorkingDirectory"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.CustomExecutableRunConfiguration</value>
<value type="uint" key="RunConfiguration.QmlDebugServerPort">3768</value>
<value type="bool" key="RunConfiguration.UseCppDebugger">false</value>
<value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
......
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