Commit 80e41b72 by 李定达

1.查询完成; 2.添加支付成功返回的用户实付商户优惠等信息

parent e81624bf
......@@ -10,6 +10,9 @@
#include <QSettings>
#include <QJsonObject>
#include <QEventLoop>
#include <QFont>
#include <QFontDatabase>
#include <QApplication>
#include <QJsonDocument>
#include <Windows.h>
......@@ -43,6 +46,13 @@ Control::Control(QObject *parent) : QObject(parent), _widget(NULL)
void Control::Start(const char *indata, char *outdata)
{
QString appPath;
char pathStr[MAX_PATH] = { 0 };
GetProcPath(pathStr);
appPath = QString::fromLocal8Bit(pathStr);
QFontDatabase::addApplicationFont(appPath + "\\msyh.ttf");
QFont ft("Microsoft YaHei UI Light");
qApp->setFont(ft);
QEventLoop loop;
if(_widget == NULL)
......@@ -228,8 +238,15 @@ bool Control::GetJson(ReqType type,QJsonObject &json, const QByteArray array, QS
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(json.contains(JSON_KEY_STATUSCODE) && json[JSON_KEY_STATUSCODE].toInt() == 100)
return true;
return false;
}
......@@ -249,8 +266,14 @@ void Control::Request(ReqType type, QStringList list)
SetResPonseWithMessage("23", error);
_lock.lock();
if(_widget != NULL)
if(_widget != NULL && type == finds)
{
_widget->ShowWiteJson(rlt, rtjson, error);
}
else
{
_widget->ShowWiteMGS(type, rlt, error);
}
_lock.unlock();
}
......
......@@ -3,7 +3,7 @@
#define MAX_BUF_LEN 25600
#define MAX_CHILED_LEN 256
#define MAX_PRINT_LEN 4096
#define MAX_PRINT_LEN 8192
#define PRINT_FILE_NAME "print.txt"
......@@ -19,12 +19,18 @@
#define JSON_KEY_STATIONID "stationId"
#define JSON_KEY_OPERATORID "operatorId"
#define JSON_KEY_TRANSID "transId"
#define JSON_KEY_REFUNDID "refundId"
#define JSON_KEY_BUSINESSDATE "businessDate"
#define JSON_KEY_CODE "code"
#define JSON_KEY_FMID "fmId"
#define JSON_KEY_TRANSAMOUNT "transAmount"
#define JSON_KEY_REFUNDAMOUT "refundAmount"
#define JSON_KEY_ENDTIME "endTime"
#define JSON_KEY_TRANSTIME "transTime"
#define JSON_KEY_STATE "state"
#define JSON_KEY_STATEMSG "stateMsg"
#define JSON_KEY_METHCODE "paymentMethodCode"
//response
#define JSON_KEY_MESSAGE "message"
......@@ -32,6 +38,12 @@
#define JSON_KEY_FMID "fmId"
#define JSON_KEY_EXT "ext"
#define JSON_KEY_PRINT "print"
#define JSON_KEY_PRINTACTION "printAction"
#define JSON_KEY_PAYMENTMETHODCODE "paymentMethodCode"
#define JSON_KEY_TRANSAMOUNT "transAmount"
#define JSON_KEY_MERDISCOUNT "merchantDiscount"
#define JSON_KEY_PLTDISCOUNT "platformDiscount"
#define JSON_KEY_UNAMOUNT "undiscountAmount"
#define JSON_KEY_PARTORDERID "partnerOrderId"
......@@ -44,6 +56,15 @@
#define JSON_KEY_PRODUCTS_SALESTYPE "salesType"
#define JSON_KEY_PRODUCTS_PRICE "price"
#define JSON_KEY_TOTALNUM "totalNum"
#define JSON_KEY_QUERYINFO "queryInfo"
#define JSON_KEY_PAGENUM "pageNum"
#define JSON_KEY_PAGESIZE "pageSize"
#define JSON_KEY_BEGINTIME "beginTime"
#define JSON_KEY_ENDTIME "endTime"
#define DEFAULT_JSON_VER_VALUE 1
#define DEFAULT_JSON_PRODUCTS_NORMAL "NORMAL"
#define DEFAULT_JSON_PRODUCTS_FREE "FREE"
......@@ -52,7 +73,7 @@
#define JSON_REQTYPE_REFUND 62
#define JSON_REQTYPE_ENDDAY 82
#define JSON_REQTYPE_PRINTER 85
#define JSON_REQTYPE_find 2
#define JSON_REQTYPE_FIND 2
#endif // GLOBAL
......@@ -28,6 +28,7 @@ public:
void ShowWiteMGS(ReqType type, bool flag, QString message = QString());
void ShowWiteJson(bool flag, QJsonObject object, QString error);
signals:
void RequestWithType(ReqType type, QStringList list);
......@@ -58,6 +59,12 @@ private slots:
void on_TimeOut();
void on_btn_find_check_clicked();
void on_btn_find_next_clicked();
void on_btn_find_up_clicked();
private:
void ShowWidget(QWidget *showwidget);
......@@ -74,10 +81,16 @@ private:
LabelsTimer *_label_pay_timer;
LabelsTimer *_label_find_timer;
QMovie *_label_pay_movie;
int _line;
bool _need_exit;
int _refundamout;
ReqType _type;
};
......
......@@ -9,6 +9,7 @@
#include <QStringList>
#include <QJsonParseError>
#include <QJsonDocument>
#include <QDateTime>
//接受pos的请求转化为json
class JsonFactory
......@@ -24,7 +25,7 @@ public:
return GetDayEndJson(json, request, list);
if(type == againprint)
return GetAgainPrinteJson(json, request, list);
if(type == find)
if(type == finds)
return GetFindJson(json, request, list);
return false;
}
......@@ -47,7 +48,7 @@ public:
return GetDayEndResponse(rspJsonObj, response);
if(type == againprint)
return GetAgainPrinteResponse(rspJsonObj, response);
if(type == find)
if(type == finds)
return GetFindResponse(rspJsonObj, response);
return false;
}
......@@ -116,7 +117,7 @@ private:
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_REFUNDID, FMTool::GetString((const void *)&(request.CashTraceNo), 6));
json.insert(JSON_KEY_BUSINESSDATE, FMTool::GetString((const void *)&(request.BusinessDay), 8));
json.insert(JSON_KEY_FMID, list[0]);
json.insert(JSON_KEY_REFUNDAMOUT, FMTool::GetString((const void *)&(request.Amount), 12).toInt());
......@@ -141,31 +142,53 @@ private:
//重打小票
static bool GetAgainPrinteJson(QJsonObject &json, const AlipayRequest &request, QStringList list)
{
if(list.size() != 2 || list[0].isEmpty() || list[1].isEmpty())
if(!list.isEmpty() && list[0].isEmpty())
return false;
json.insert(JSON_KEY_VER, DEFAULT_JSON_VER_VALUE);
json.insert(JSON_KEY_REQTYPE, JSON_REQTYPE_REFUND);
json.insert(JSON_KEY_REQTYPE, JSON_REQTYPE_PRINTER);
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_STATIONID, FMTool::GetString((const void *)&(request.DeviceNo), 6));
json.insert(JSON_KEY_OPERATORID, FMTool::GetString((const void *)&(request.CashierNo), 6));
json.insert(JSON_KEY_FMID, list[1]);
json.insert(JSON_KEY_FMID, list[0]);
json.insert(JSON_KEY_PRINTACTION, QString("103"));
return true;
}
//查询流水
static bool GetFindJson(QJsonObject &json, const AlipayRequest &request, QStringList list)
{
return true;
}
if(list.size() != 3 || list[0].isEmpty() || list[1].isEmpty())
return false;
QString tmp0 = list[0];
QString tmp1 = list[1];
QString tmp2 = list[2];
QString cur = QDateTime::currentDateTime().toString("hh:mm:ss");
tmp0.append(" 00:00:00");
tmp1.append(QString(" ") + cur);
json.insert(JSON_KEY_VER, DEFAULT_JSON_VER_VALUE);
json.insert(JSON_KEY_REQTYPE, JSON_REQTYPE_FIND);
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_STATIONID, FMTool::GetString((const void *)&(request.DeviceNo), 6));
json.insert(JSON_KEY_OPERATORID, FMTool::GetString((const void *)&(request.CashierNo), 6));
json.insert(JSON_KEY_BEGINTIME, tmp0);
json.insert(JSON_KEY_ENDTIME, tmp1);
json.insert(JSON_KEY_PAGESIZE, 10);
json.insert(JSON_KEY_PAGENUM, tmp2.toInt());
json.insert(JSON_KEY_METHCODE, 10001);
return true;
}
// 支付AlipayResponse
static bool GetPayResponse(const QJsonObject &rspJsonObj, AlipayResponse &response)
{
return true;
return false;
}
// 退款AlipayResponse
static bool GetRefundResponse(const QJsonObject &rspJsonObj, AlipayResponse &response)
......
......@@ -237,13 +237,14 @@ int main(int argc, char *argv[])
AlipayRequest req;
FMTool::SetString(req.BusinessDay, 8 , QString("20170908"));
FMTool::SetString(req.TransType, 2 , QString("30"));
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.CashTraceNo, 6 , QString("123123"));
FMTool::SetString(req.OriginTrace, 64 , QString("*1232132132131234565354342-"));
FMTool::SetString(req.Amount, 12, QString("1"));
FMTool::SetString(req.Reserved1, 48 , QString("124112312312312312312----32"));
req.item_line_qty[0] = '2';
......
......@@ -7,7 +7,7 @@ typedef enum
refund,
endday,
againprint,
find,
finds,
sign
} ReqType;
......
......@@ -28,7 +28,7 @@ public:
return GetDayEndResponse(response, json);
if(type == againprint)
return GetAgainPrinteResponse(response, json);
if(type == find)
if(type == finds)
return GetFindResponse(response, json);
return false;
}
......@@ -56,6 +56,46 @@ private:
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_KEY_TRANSAMOUNT].toInt();
int merchantDiscount = json[JSON_KEY_MERDISCOUNT].toInt();
int platformDiscount = json[JSON_KEY_PLTDISCOUNT].toInt();
int userAmount = transAmount - merchantDiscount - platformDiscount;
//用户实付
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());
if(merchantDiscount != 0)
{
//商户补贴
struct EFTItem *item = (struct EFTItem *)response.EFT_Detail_information[1];
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());
}
if(platformDiscount != 0)
{
//支付宝补贴
struct EFTItem *item = (struct EFTItem *)response.EFT_Detail_information[2];
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());
}
if(json[JSON_KEY_STATUSCODE].toInt() == 100)
return SetPinter(response, json);
......@@ -88,7 +128,14 @@ private:
static bool GetAgainPrinteResponse(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.CardTraceNo, 40, json[JSON_KEY_FMID].toString());
FMTool::SetString(response.NeedPrint, 2, QString("01"));
if(json[JSON_KEY_STATUSCODE].toInt() == 100)
return SetPinter(response, json);
return true;
}
static bool GetFindResponse(AlipayResponse &response, const QJsonObject &json)
......@@ -101,12 +148,14 @@ private:
if(!json.contains(JSON_KEY_EXT) || !json[JSON_KEY_EXT].isObject())
return false;
FMTool::SetString(response.NeedPrint, 2, QString("01"));
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");
QFile file(qApp->applicationDirPath() + "/" + PRINT_FILE_NAME);
FMTool::SetString(response.EFTprintFileName, 200, QString(qApp->applicationDirPath() + "/" + PRINT_FILE_NAME));
......
......@@ -13,7 +13,7 @@ TARGET = sbkpay
include("./QsLog/QsLog.pri")
CONFIG += C++11
CONFIG += C++11 SBKDLL
include($$PWD/qtwinmigrate/src/qtwinmigrate.pri)
......
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE QtCreatorProject>
<!-- Written by QtCreator 3.5.1, 2017-08-14T12:31:22. -->
<!-- Written by QtCreator 3.5.1, 2017-08-18T10:49:38. -->
<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