Commit fa1d4bd8 by wuyang.zou

1、优化之前逻辑代码与注释;

2、Version: 3.20.11.3
parent e9d99937
...@@ -4,7 +4,6 @@ ...@@ -4,7 +4,6 @@
#include <QObject> #include <QObject>
#include <QByteArray> #include <QByteArray>
#include "global.h" #include "global.h"
#include "requestmodel.h"
class FMNetWork : public QObject class FMNetWork : public QObject
{ {
......
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
#include <QPointer> #include <QPointer>
#include <QSemaphore> #include <QSemaphore>
#include "fmp_settings.h" #include "fmp_settings.h"
#include "requestmodel.h" #include "global.h"
#include "fmglobal.h" #include "fmglobal.h"
class QSqlDatabase; class QSqlDatabase;
......
...@@ -503,7 +503,9 @@ bool Control::GetJson(ReqType type,QJsonObject &json, const QByteArray array, QS ...@@ -503,7 +503,9 @@ bool Control::GetJson(ReqType type,QJsonObject &json, const QByteArray array, QS
json.insert(JSON_KEY_FMID, _fmId); json.insert(JSON_KEY_FMID, _fmId);
if(type == REFUND && json.contains(JSON_KEY_STATUSCODE) && json[JSON_KEY_STATUSCODE].toInt() == 100) if(type == REFUND && json.contains(JSON_KEY_STATUSCODE) && json[JSON_KEY_STATUSCODE].toInt() == 100)
json.insert(JSON_KET_CLIENTREF, FMTool::GetString(_request.Amount, 12)); json.insert(JSON_KET_CLIENTREF, QString("0") );
// 未发现 成员变量 _request 被赋值; 故使用 0 字符替代;
//json.insert(JSON_KET_CLIENTREF, FMTool::GetString(_request.Amount, 12));
RspFactory::GetResponseJson(type, _responseJsonObj, json); RspFactory::GetResponseJson(type, _responseJsonObj, json);
......
#ifndef CONTROL_H #ifndef CONTROL_H
#define CONTROL_H #define CONTROL_H
#include "requestmodel.h" #include "global.h"
#include "hostwidget.h" #include "hostwidget.h"
#include "fmp_settings.h" #include "fmp_settings.h"
#include <QObject> #include <QObject>
...@@ -32,10 +32,6 @@ signals: ...@@ -32,10 +32,6 @@ signals:
private: private:
void GetResponse(QString errormessage, AlipayResponse &response);
void GetErrorResponse(QString errormessage, AlipayResponse &response);
void CheckDllEnvironmentNormal(); void CheckDllEnvironmentNormal();
void CheckQsslSupportsSslError(); void CheckQsslSupportsSslError();
...@@ -54,8 +50,6 @@ private: ...@@ -54,8 +50,6 @@ private:
void Request(ReqType type, QStringList list); void Request(ReqType type, QStringList list);
bool GetJson(QByteArray &json, QString &error);
bool GetJson(ReqType type, QJsonObject &json, const QByteArray array, QString &error); bool GetJson(ReqType type, QJsonObject &json, const QByteArray array, QString &error);
bool HttpPost(QString url, QByteArray &outdata, const QByteArray &indata, QString content, QString accept, QString &error, int timeout, ReqType reqType); bool HttpPost(QString url, QByteArray &outdata, const QByteArray &indata, QString content, QString accept, QString &error, int timeout, ReqType reqType);
...@@ -73,8 +67,6 @@ public slots: ...@@ -73,8 +67,6 @@ public slots:
void OnInterrupt(); void OnInterrupt();
private: private:
struct AlipayRequest _request;
struct AlipayResponse _response;
QJsonObject _posReqJsonObj; QJsonObject _posReqJsonObj;
QJsonObject _responseJsonObj; QJsonObject _responseJsonObj;
......
...@@ -20,6 +20,7 @@ public: ...@@ -20,6 +20,7 @@ public:
public: public:
QVariant GetValue(const QString &k, QVariant default_val); QVariant GetValue(const QString &k, QVariant default_val);
bool SetValue(const QString&k, QVariant v); bool SetValue(const QString&k, QVariant v);
/** /**
* @brief GetAllKeys * @brief GetAllKeys
* 获取所有key,如果参数g不为空,则获取该group下的所有Key * 获取所有key,如果参数g不为空,则获取该group下的所有Key
......
...@@ -6,7 +6,6 @@ ...@@ -6,7 +6,6 @@
#include <windows.h> #include <windows.h>
#include <QString> #include <QString>
#include <QDebug> #include <QDebug>
#include "requestmodel.h"
#include "global.h" #include "global.h"
class FMTool class FMTool
......
#ifndef GLOBAL #ifndef GLOBAL
#define GLOBAL #define GLOBAL
#define EXE_ROLLBACK "rollback.dll" #define EXE_ROLLBACK "rollback.dll"
#define MAX_BUF_LEN 25600 #define MAX_BUF_LEN 25600
#define MAX_CHILED_LEN 256 #define MAX_CHILED_LEN 256
#define MAX_PRINT_LEN 12800 #define MAX_PRINT_LEN 12800
#define PRINT_FILE_PATH "C:/Freemud/fmClient/Prints/" #define PRINT_FILE_PATH "C:/Freemud/fmClient/Prints/"
#define PRINT_ENDDAY_FILE_NAME "EndDayPrint.txt" #define PRINT_ENDDAY_FILE_NAME "EndDayPrint.txt"
#define PRINT_SHIFT_FILE_NAME "ShiftPrint.txt" #define PRINT_SHIFT_FILE_NAME "ShiftPrint.txt"
#define PRINT_AGAIN_FILE_NAME "AgainPrint.txt" #define PRINT_AGAIN_FILE_NAME "AgainPrint.txt"
#define PRINT_FILE_NAME "print.txt" #define PRINT_FILE_NAME "print.txt"
#define ENCODE_FIRST "encode/first" #define ENCODE_FIRST "encode/first"
#define ENCODE_END "encode/end" #define ENCODE_END "encode/end"
#define JSON_KEY_VER "ver" #define JSON_KEY_VER "ver"
#define JSON_KEY_REQTYPE "reqType" #define JSON_KEY_REQTYPE "reqType"
#define JSON_KEY_PARTNERID "partnerId" #define JSON_KEY_PARTNERID "partnerId"
#define JSON_KEY_STOREID "storeId" #define JSON_KEY_STOREID "storeId"
#define JSON_KEY_STATIONID "stationId" #define JSON_KEY_STATIONID "stationId"
#define JSON_KEY_OPERATORID "operatorId" #define JSON_KEY_OPERATORID "operatorId"
#define JSON_KEY_TRANSID "transId" #define JSON_KEY_TRANSID "transId"
#define JSON_KEY_REFUNDID "refundId" #define JSON_KEY_REFUNDID "refundId"
#define JSON_KEY_BUSINESSDATE "businessDate" #define JSON_KEY_BUSINESSDATE "businessDate"
#define JSON_KEY_CODE "code" #define JSON_KEY_CODE "code"
#define JSON_KEY_FMID "fmId" #define JSON_KEY_FMID "fmId"
#define JSON_KEY_TRANSAMOUNT "transAmount" #define JSON_KEY_TRANSAMOUNT "transAmount"
#define JSON_KEY_REFUNDAMOUT "refundAmount" #define JSON_KEY_REFUNDAMOUT "refundAmount"
#define JSON_KEY_ENDTIME "endTime" #define JSON_KEY_ENDTIME "endTime"
#define JSON_KEY_TRANSTIME "transTime" #define JSON_KEY_TRANSTIME "transTime"
#define JSON_KEY_STATE "state" #define JSON_KEY_STATE "state"
#define JSON_KEY_STATEMSG "stateMsg" #define JSON_KEY_STATEMSG "stateMsg"
#define JSON_KEY_METHCODE "paymentMethodCode" #define JSON_KEY_METHCODE "paymentMethodCode"
//response //response
#define JSON_KEY_MESSAGE "message" #define JSON_KEY_MESSAGE "message"
#define JSON_KEY_STATUSCODE "statusCode" #define JSON_KEY_STATUSCODE "statusCode"
#define JSON_KEY_PAYACCOUNT "payAccount" #define JSON_KEY_PAYACCOUNT "payAccount"
#define JSON_KEY_PAYTRANSID "payTransId" #define JSON_KEY_PAYTRANSID "payTransId"
#define JSON_KEY_TYPE "type" #define JSON_KEY_TYPE "type"
#define JSON_KEY_CODE "code" #define JSON_KEY_CODE "code"
#define JSON_KEY_FMID "fmId" #define JSON_KEY_FMID "fmId"
#define JSON_KEY_EXT "ext" #define JSON_KEY_EXT "ext"
#define JSON_KEYT_STATE "state" #define JSON_KEYT_STATE "state"
#define JSON_KEY_PRINT "print" #define JSON_KEY_PRINT "print"
#define JSON_KEY_PRINTACTION "printAction" #define JSON_KEY_PRINTACTION "printAction"
#define JSON_KEY_PRINTPATH "path" #define JSON_KEY_PRINTPATH "path"
#define JSON_KET_CLIENTREF "cAlientrefundamount" #define JSON_KET_CLIENTREF "cAlientrefundamount"
#define JSON_KEY_PAYMENTMETHOD "paymentMethod" #define JSON_KEY_PAYMENTMETHOD "paymentMethod"
#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"
#define JSON_KEY_PLTDISCOUNT "platformDiscount" #define JSON_KEY_PLTDISCOUNT "platformDiscount"
#define JSON_KEY_UNAMOUNT "undiscountAmount" #define JSON_KEY_UNAMOUNT "undiscountAmount"
#define JSON_KEY_PARTORDERID "partnerOrderId" #define JSON_KEY_PARTORDERID "partnerOrderId"
//array products //array products
#define JSON_KEY_PRODUCTS "products" #define JSON_KEY_PRODUCTS "products"
#define JSON_KEY_PRODUCTS_CONSUMENUM "consumeNum" #define JSON_KEY_PRODUCTS_CONSUMENUM "consumeNum"
#define JSON_KEY_PRODUCTS_PID "pid" #define JSON_KEY_PRODUCTS_PID "pid"
#define JSON_KEY_PRODUCTS_NAME "name" #define JSON_KEY_PRODUCTS_NAME "name"
#define JSON_KEY_PRODUCTS_SALESTYPE "salesType" #define JSON_KEY_PRODUCTS_SALESTYPE "salesType"
#define JSON_KEY_PRODUCTS_PRICE "price" #define JSON_KEY_PRODUCTS_PRICE "price"
#define JSON_KEY_TOTALNUM "totalNum" #define JSON_KEY_TOTALNUM "totalNum"
#define JSON_KEY_TOTALAMOUNT "totalAmount" #define JSON_KEY_TOTALAMOUNT "totalAmount"
#define JSON_KEY_QUERYINFO "queryInfo" #define JSON_KEY_QUERYINFO "queryInfo"
#define JSON_KEY_PAGENUM "pageNum" #define JSON_KEY_PAGENUM "pageNum"
#define JSON_KEY_PAGESIZE "pageSize" #define JSON_KEY_PAGESIZE "pageSize"
#define JSON_KEY_BEGINTIME "beginTime" #define JSON_KEY_BEGINTIME "beginTime"
#define JSON_KEY_ENDTIME "endTime" #define JSON_KEY_ENDTIME "endTime"
#define JSON_KEY_POSTYPE "posType" #define JSON_KEY_POSTYPE "posType"
#define JSON_KEY_AUTHCODE "authCode" #define JSON_KEY_AUTHCODE "authCode"
#define JSON_KEY_SALENO "saleNo" #define JSON_KEY_SALENO "saleNo"
#define DEFAULT_JSON_VER_VALUE 3 #define DEFAULT_JSON_VER_VALUE 3
#define DEFAULT_JSON_PRODUCTS_NORMAL "NORMAL" #define DEFAULT_JSON_PRODUCTS_NORMAL "NORMAL"
#define DEFAULT_JSON_PRODUCTS_FREE "FREE" #define DEFAULT_JSON_PRODUCTS_FREE "FREE"
#define JSON_REQTYPE_PAY 72 #define JSON_REQTYPE_PAY 72
#define JSON_REQTYPE_REFUND 62 #define JSON_REQTYPE_REFUND 62
#define JSON_REQTYPE_ENDDAY 82 #define JSON_REQTYPE_ENDDAY 82
#define JSON_REQTYPE_PRINTER 85 #define JSON_REQTYPE_PRINTER 85
#define JSON_REQTYPE_FIND 2 #define JSON_REQTYPE_FIND 2
#endif // GLOBAL
typedef enum
{
SIGN, // 签到 - 0
MANAGE, // 管理 - 1
PAY, // 支付 - 2
REFUND, // 退货 - 3
FINDS, // 交易查询 - 4
ENDDAY, // 日结单打印 - 5
SHIFT, // 打印交接班 - 6 [已淘汰,不使用]
AGAIN_PRINT, // 重新打印 - 7
EC_SIGN = 350, // 签到 - 350 = 350-350 = 0 对应上面 "签到"
EC_FINDS = 354, // 查询 - 354 = 354-350 = 4 对应上面 "交易查询"
} ReqType;
#endif // GLOBAL
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
#define HOSTWIDGET_H #define HOSTWIDGET_H
#include "fmp_window.h" #include "fmp_window.h"
#include "requestmodel.h" #include "global.h"
#include "fmp_settings.h" #include "fmp_settings.h"
#include <QWidget> #include <QWidget>
#include <QList> #include <QList>
...@@ -78,7 +78,6 @@ private: ...@@ -78,7 +78,6 @@ private:
QList<QWidget *> _widgetlist; QList<QWidget *> _widgetlist;
QWidget *_curr_show_widget; QWidget *_curr_show_widget;
AlipayRequest _data;
QJsonObject _posReqJsonObj; QJsonObject _posReqJsonObj;
LabelsTimer *_label_pay_timer; LabelsTimer *_label_pay_timer;
......
#ifndef JSONFACTORY #ifndef JSONFACTORY
#define JSONFACTORY #define JSONFACTORY
#include "requestmodel.h"
#include "global.h" #include "global.h"
#include "fmtool.h" #include "fmtool.h"
#include <QJsonObject> #include <QJsonObject>
...@@ -51,53 +50,6 @@ private: ...@@ -51,53 +50,6 @@ private:
} }
//支付 //支付
static bool GetPayJson(QJsonObject &json, const AlipayRequest &request, QStringList list)
{
if(list.size() != 1 || list[0].isEmpty())
return false;
json.insert(JSON_KEY_VER, DEFAULT_JSON_VER_VALUE);
json.insert(JSON_KEY_REQTYPE, JSON_REQTYPE_PAY);
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_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_TRANSAMOUNT, FMTool::GetString((const void *)&(request.Amount), 12).toInt());
json.insert(JSON_KEY_UNAMOUNT, FMTool::GetString((const void *)&(request.non_sale_Amount), 12).toInt());
json.insert(JSON_KEY_PARTORDERID, FMTool::GetString((const void *)&(request.Reserved1), 64));
int len = FMTool::GetString((const void *)&(request.item_line_qty), 2).toInt();
QJsonArray prod;
qDebug() << "--------" << len;
for(int i = 0; i < len; ++i) {
QJsonObject object;
struct product *pro = (struct product *)request.item_information[i];
object.insert(JSON_KEY_PRODUCTS_CONSUMENUM, FMTool::GetString((const void *)&(pro->buyCount), 4));
object.insert(JSON_KEY_PRODUCTS_PID, FMTool::GetString((const void *)&(pro->productID), 8));
object.insert(JSON_KEY_PRODUCTS_NAME, FMTool::GetString((const void *)&(pro->productName), 20));
object.insert(JSON_KEY_PRODUCTS_SALESTYPE, DEFAULT_JSON_PRODUCTS_NORMAL);
QString typebuf = FMTool::GetString((const void *)&(pro->isCombo), 1);
if(typebuf == 0)
object.insert(JSON_KEY_PRODUCTS_SALESTYPE, DEFAULT_JSON_PRODUCTS_FREE);
object.insert(JSON_KEY_PRODUCTS_PRICE, FMTool::GetString((const void *)&(pro->unitPrice), 8));
prod.append(object);
}
json.insert(JSON_KEY_PRODUCTS, prod);
return true;
}
static bool GetPayJson(QJsonObject &json, const QJsonObject &reqJson, QStringList list) static bool GetPayJson(QJsonObject &json, const QJsonObject &reqJson, QStringList list)
{ {
if(list.size() != 1 || list[0].isEmpty()) if(list.size() != 1 || list[0].isEmpty())
...@@ -109,27 +61,6 @@ private: ...@@ -109,27 +61,6 @@ private:
} }
//退款 //退款
static bool GetRefundJosn(QJsonObject &json, const AlipayRequest &request, QStringList list)
{
if(list.size() != 1 || 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_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_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());
json.insert(JSON_KEY_PARTORDERID, FMTool::GetString((const void *)&(request.Reserved1), 64));
return true;
}
static bool GetRefundJosn(QJsonObject &json, const QJsonObject &reqJson, QStringList list) static bool GetRefundJosn(QJsonObject &json, const QJsonObject &reqJson, QStringList list)
{ {
if(list.size() != 1 || list[0].isEmpty()) if(list.size() != 1 || list[0].isEmpty())
...@@ -144,21 +75,6 @@ private: ...@@ -144,21 +75,6 @@ private:
} }
//日结 //日结
static bool GetDayEndJson(QJsonObject &json, const AlipayRequest &request, QStringList list)
{
json.insert(JSON_KEY_VER, DEFAULT_JSON_VER_VALUE);
json.insert(JSON_KEY_REQTYPE, JSON_REQTYPE_ENDDAY);
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_ENDTIME, FMTool::GetString((const void *)&(request.BusinessDay), 8).append( FMTool::GetString((const void *)&(request.TransTime), 6)));
json.insert(JSON_KEY_PARTORDERID, FMTool::GetString((const void *)&(request.Reserved1), 64));
json.insert(JSON_KEY_PRINTACTION, QString("103"));
return true;
}
static bool GetEnddayJson(QJsonObject &json, const QJsonObject &request, QStringList list) static bool GetEnddayJson(QJsonObject &json, const QJsonObject &request, QStringList list)
{ {
Q_UNUSED(list) Q_UNUSED(list)
...@@ -173,22 +89,6 @@ private: ...@@ -173,22 +89,6 @@ private:
//重打小票 //重打小票
static bool GetAgainPrinteJson(QJsonObject &json, const AlipayRequest &request, QStringList list)
{
if(!list.isEmpty() && list[0].isEmpty())
return false;
json.insert(JSON_KEY_VER, DEFAULT_JSON_VER_VALUE);
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[0]);
json.insert(JSON_KEY_PRINTACTION, QString("103"));
return true;
}
static bool GetAgainPrinteJson(QJsonObject &json, const QJsonObject &request, QStringList list) static bool GetAgainPrinteJson(QJsonObject &json, const QJsonObject &request, QStringList list)
{ {
if(!list.isEmpty() && list[0].isEmpty()) if(!list.isEmpty() && list[0].isEmpty())
...@@ -206,36 +106,6 @@ private: ...@@ -206,36 +106,6 @@ private:
} }
//查询流水 //查询流水
static bool GetFindJson(QJsonObject &json, const AlipayRequest &request, QStringList list)
{
if(list.size() != 4 || 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;
}
static bool GetFindJson(QJsonObject &json, const QJsonObject &request, QStringList list) static bool GetFindJson(QJsonObject &json, const QJsonObject &request, QStringList list)
{ {
if(list.size() != 4 || list[0].isEmpty() || list[1].isEmpty()) if(list.size() != 4 || list[0].isEmpty() || list[1].isEmpty())
......
...@@ -23,6 +23,7 @@ signals: ...@@ -23,6 +23,7 @@ signals:
void timeout(); void timeout();
void timeChanged(int time); void timeChanged(int time);
void started(); void started();
/** /**
* @brief finished * @brief finished
* 调用stop()或定时超时后触发 * 调用stop()或定时超时后触发
......
...@@ -11,7 +11,6 @@ ...@@ -11,7 +11,6 @@
#include "control.h" #include "control.h"
#include "global.h" #include "global.h"
#include "QsLog.h" #include "QsLog.h"
#include "requestmodel.h"
#include "fmtool.h" #include "fmtool.h"
#include "rspfactory.h" #include "rspfactory.h"
#include "fmp_settings.h" #include "fmp_settings.h"
...@@ -220,7 +219,7 @@ extern "C" __declspec(dllexport) void Start(const char *indata, char *outdata) ...@@ -220,7 +219,7 @@ extern "C" __declspec(dllexport) void Start(const char *indata, char *outdata)
#include "control.h" #include "control.h"
#include "global.h" #include "global.h"
#include "QsLog.h" #include "QsLog.h"
#include "requestmodel.h" #include "global.h"
#include "fmtool.h" #include "fmtool.h"
#include "rspfactory.h" #include "rspfactory.h"
#include <QDir> #include <QDir>
......
#ifndef REQUESTMODEL
#define REQUESTMODEL
typedef enum
{
SIGN, // 签到 - 0
MANAGE, // 管理 - 1
PAY, // 支付 - 2
REFUND, // 退货 - 3
FINDS, // 交易查询 - 4
ENDDAY, // 日结单打印 - 5
SHIFT, // 打印交接班 - 6 [已淘汰,不使用]
AGAIN_PRINT, // 重新打印 - 7
EC_SIGN = 350, // 签到 - 350 = 350-350 = 0 对应上面 "签到"
EC_FINDS = 354, // 查询 - 354 = 354-350 = 4 对应上面 "交易查询"
} ReqType;
struct EFTItem
{
char billType[1]; //资金归属. 1:商户实收, 2:商户优惠
char billId[8]; //支付类型. //36464:用户支付, 36465: 微信优惠, 36466: 商家优惠
char amount[12]; //金额
char Reserved4[64]; //保留字段
char Reserved5[8]; //保留字段
char transactionNum[64]; //账单编号(非码交易序号)
};
struct AlipayResponse
{
char ResponseCode[3]; //返回码
char ResponseMsg[40]; //返回文字信息
char Amount[12]; //订单金额(与wxpayRequest.Amount一致)
char SettleNum[6]; //
char MerchantID[15]; //商户id
char TerminalID[8]; //
char TransDate[8]; //交易日期
char TransTime [6]; //交易时间
char CardTraceNo[64]; //订单号(非码交易号)
char NeedPrint[2]; //是否打印小票. 00:表示打印小票, 01:表示不打印小票
char EFTprintFileName[200]; //打印文件路径.
char MD5_CHECK_CODE [32]; //
char Reserved1[48]; //保留
char Reserved2[48];
char Reserved3[48];
char Reserved4[48];
char Reserved5[48];
char EFT_quantity[2]; //交易流水数量[1‐10]
char EFT_Detail_information[10][157]; //交易流水列表。每条定义见struct EFTItem
};
struct product{
char productID[8]; //商品id
char buyCount[4]; //购买数量
char unitPrice[8]; //单件商品价格
char originPrice[8];//单件商品原价
char isCombo[1]; //默认为0
char isNonsale[1]; //(废弃)
char productName[20]; //商品名字
};
struct AlipayRequest
{
char PlatNo[4]; // *商户编号
char TransType[2]; // 交易类型
char PayType[2]; // 支付类型.
char StoreNo[20]; // 门店号.
char BusinessDay[8]; // 营业日期. ex:"20140307"
char TransTime [6]; //交易时间 时分秒(HHMMss)
char DeviceNo[6]; // *pos编号
char CashierNo[6]; // 收银员编号。 ex:"001"
char Amount[12]; // 需支付的金额(分). ex:"1000"
char Ticket_Amount[12]; //整单总金额(分). ex:"2000"
char non_sale_Amount[12]; //非卖品总金额(分)
char CashTraceNo[6]; // 流水号. ex:"080001"
char OriginTrace[64]; // 退款订单号(退款时使用)
char Reserved1[48]; // 保留字段。
char Reserved2[48]; // ""
char Reserved3[48]; // ""
char Reserved4[48]; // ""
char Reserved5[48]; // ""
char item_line_qty[2]; // item_information的数量[0‐99]
char item_information [99][50];// 商品列表.最多99条商品,每条商品的格式由struct product定义
};
#endif // REQUESTMODEL
#ifndef RSPFACTORY #ifndef RSPFACTORY
#define RSPFACTORY #define RSPFACTORY
#include "requestmodel.h"
#include "global.h" #include "global.h"
#include "fmtool.h" #include "fmtool.h"
#include "QsLog.h" #include "QsLog.h"
...@@ -47,115 +46,18 @@ private: ...@@ -47,115 +46,18 @@ private:
return true; return true;
} }
static bool GetPayResponse(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_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_FMID].toString());
//FMTool::SetString((void *)&(item->transactionNum), 64, "99571708191000040011");
number = "01";
}
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->amount), 12, QString("100"));
FMTool::SetString((void *)&(item->transactionNum), 64, json[JSON_KEY_FMID].toString());
number = "02";
}
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_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 GetPayResponse(QJsonObject &response, const QJsonObject &json) static bool GetPayResponse(QJsonObject &response, const QJsonObject &json)
{ {
response = json; response = json;
return true; 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].toString().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;
}
static bool GetRefundResponse(QJsonObject &response, const QJsonObject &json) static bool GetRefundResponse(QJsonObject &response, const QJsonObject &json)
{ {
response = json; response = json;
return true; return true;
} }
static bool GetDayEndResponse(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.NeedPrint, 2, QString("01"));
if(json[JSON_KEY_STATUSCODE].toInt() == 100)
return SetPinter(response, json);
return true;
}
static bool GetEndDayResponse(QJsonObject &response, const QJsonObject &json) static bool GetEndDayResponse(QJsonObject &response, const QJsonObject &json)
{ {
...@@ -168,19 +70,6 @@ private: ...@@ -168,19 +70,6 @@ private:
} }
static bool GetAgainPrinteResponse(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"));
if(json[JSON_KEY_STATUSCODE].toInt() == 100)
return SetAgainPinter(response, json);
return true;
}
static bool GetAgainPrinteResponse(QJsonObject &response, const QJsonObject &json) static bool GetAgainPrinteResponse(QJsonObject &response, const QJsonObject &json)
{ {
response = json; response = json;
...@@ -191,12 +80,6 @@ private: ...@@ -191,12 +80,6 @@ private:
return true; return true;
} }
static bool GetFindResponse(AlipayResponse &response, const QJsonObject &json)
{
Q_UNUSED(response);
Q_UNUSED(json);
return false;
}
static bool GetFindResponse(QJsonObject &response, const QJsonObject &json) static bool GetFindResponse(QJsonObject &response, const QJsonObject &json)
{ {
...@@ -204,69 +87,6 @@ private: ...@@ -204,69 +87,6 @@ private:
return true; return true;
} }
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);
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(QJsonObject &response, const QJsonObject &json, QString configKey=CONFIG_PRINT_ENDDAY_NAME) static bool SetPinter(QJsonObject &response, const QJsonObject &json, QString configKey=CONFIG_PRINT_ENDDAY_NAME)
{ {
if(!json.contains(JSON_KEY_EXT) || !json[JSON_KEY_EXT].isObject()) if(!json.contains(JSON_KEY_EXT) || !json[JSON_KEY_EXT].isObject())
......
...@@ -16,7 +16,6 @@ SOURCES += $$PWD/hostwidget.cpp \ ...@@ -16,7 +16,6 @@ SOURCES += $$PWD/hostwidget.cpp \
HEADERS += $$PWD/hostwidget.h \ HEADERS += $$PWD/hostwidget.h \
$$PWD/fmp_window.h \ $$PWD/fmp_window.h \
$$PWD/requestmodel.h \
$$PWD/global.h \ $$PWD/global.h \
$$PWD/control.h \ $$PWD/control.h \
$$PWD/fmtool.h \ $$PWD/fmtool.h \
......
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