Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
F
fmp_vip
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
zhenfei.zhang
fmp_vip
Commits
6c341fa9
Commit
6c341fa9
authored
Jul 14, 2017
by
Carwyn
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
1. 会员服务端改用新接口;2. 解决出错后,提示窗点击确认后程序退出问题;3. 支持整单退款、单笔支付退款;4.窗口弹出后,不关闭,再选退出崩溃问题
parent
f5e69428
Show whitespace changes
Inline
Side-by-side
Showing
18 changed files
with
409 additions
and
181 deletions
+409
-181
fmnetwork.cpp
+1
-0
fmp_vip.cpp
+2
-0
fmp_vip_server.cpp
+2
-2
fmvipdispatcher.cpp
+12
-2
global.h
+11
-3
task/fmtasknownd.cpp
+59
-19
task/fmtasknownd.h
+13
-11
task/taskcoupon.cpp
+19
-15
task/taskcoupon.h
+1
-0
task/taskfinal.cpp
+29
-19
task/tasklogin.cpp
+15
-5
task/taskothers.cpp
+171
-46
task/taskothers.h
+19
-16
task/taskpay.cpp
+48
-36
windows/fmmsgwnd.cpp
+1
-0
windows/fmviporder.cpp
+1
-2
windows/forms/fmmsgwnd.ui
+2
-2
windows/forms/fmviporder.ui
+3
-3
No files found.
fmnetwork.cpp
View file @
6c341fa9
...
...
@@ -54,6 +54,7 @@ int FMNetwork::send(const QString &url, const QByteArray &reqData, QByteArray &r
rspData
=
reply
->
readAll
();
}
else
{
int
err
=
reply
->
error
();
rspData
=
reply
->
readAll
();
error
=
FM_API_NETWORERROR
;
errorMsg
=
netErrInfo
(
err
);
}
...
...
fmp_vip.cpp
View file @
6c341fa9
...
...
@@ -17,6 +17,8 @@ FMPVip::~FMPVip()
{
StopService
();
FMPLoggerInterface
::
InitContext
(
nullptr
,
false
);
if
(
d_ptr
)
{
delete
d_ptr
;
d_ptr
=
nullptr
;
...
...
fmp_vip_server.cpp
View file @
6c341fa9
...
...
@@ -62,8 +62,8 @@ void FMPVipServer::onReadyRead()
rspData
;
Write
(
rspData
);
socket
->
waitFor
Disconnected
();
socket
->
waitFor
BytesWritten
();
socket
->
close
();
socket
->
deleteLater
();
socket
=
nullptr
;
}
fmvipdispatcher.cpp
View file @
6c341fa9
...
...
@@ -10,6 +10,7 @@
#include "fmp_vip_server.h"
#include "tasklogin.h"
#include "taskpay.h"
#include "taskothers.h"
#include "taskfinal.h"
#include <ctkPluginContext.h>
#undef StartService
...
...
@@ -49,6 +50,7 @@ void FMVipDispatcher::doTask(const QByteArray &reqData, QByteArray &rspData)
rspData
=
taskPay
.
doTask
();
break
;
}
case
FM_QR_Pay
:
{
if
(
_ctx
)
{
ctkServiceReference
ref
=
_ctx
->
getServiceReference
<
FMPePayInterface
>
();
...
...
@@ -56,13 +58,22 @@ void FMVipDispatcher::doTask(const QByteArray &reqData, QByteArray &rspData)
epay
->
DockPayRequest
(
reqData
);
epay
->
StartService
();
rspData
=
epay
->
DockPayRespond
();
epay
->
StopService
();
}
else
{
rspData
=
QString
::
fromLocal8Bit
(
"{
\"
msg:
\"
:
\"
支付服务不可用
\"
}"
).
toUtf8
();
}
break
;
}
case
FM_Order_Refund
:
{
TaskRefundOrder
taskRefundOrder
(
jsonObj
);
rspData
=
taskRefundOrder
.
doTask
();
break
;
}
case
FM_Order_Revoke
:
{
TaskRefundPay
taskRefundPay
(
jsonObj
);
rspData
=
taskRefundPay
.
doTask
();
break
;
}
case
FM_QR_Refund
:
{
if
(
_ctx
)
{
ctkServiceReference
ref
=
_ctx
->
getServiceReference
<
FMPePayInterface
>
();
...
...
@@ -70,7 +81,6 @@ void FMVipDispatcher::doTask(const QByteArray &reqData, QByteArray &rspData)
epay
->
DockRefundRequest
(
reqData
);
epay
->
StartService
();
rspData
=
epay
->
DockRefundRespond
();
epay
->
StopService
();
}
else
{
rspData
=
QString
::
fromLocal8Bit
(
"{
\"
msg:
\"
:
\"
退款服务不可用
\"
}"
).
toUtf8
();
...
...
global.h
View file @
6c341fa9
...
...
@@ -5,9 +5,17 @@
#include <string>
/**/
// 商家信息
#define APP_ID "T012"
#define KEY_CODE "fbb36c88-999d-4836-a5ed-8e8855061ba6"
#define PARTNER_ID "6ac642f1-59f8-4e6f-a07a-bc8d581025d9"
//! 绿篮子
#define APP_ID "T013"
#define KEY_CODE "a35e33c8-e6f2-4107-8670-a69a85adf85b"
#define PARTNER_ID "f92b8997-40c7-4622-af3b-512fd49d6113"
////! 一茶一座
//#define APP_ID "T014"
//#define KEY_CODE "a440d553-87d3-4fcd-b59a-5ec9ce7c4157"
//#define PARTNER_ID "df2f90b0-eece-402c-820d-ba8ac56c4687"
// 请求类型的枚举值
enum
FM_TYPE
{
...
...
task/fmtasknownd.cpp
View file @
6c341fa9
#
include
"fmtasknownd.h"
#include "fmp_vip_settings.h"
#include "fmnetwork.h"
#include <QJsonDocument>
#include <QCryptographicHash>
//FMTaskNoWnd::FMTaskNoWnd(QJsonObject &jsonObj, FM_TYPE fmType, Session *session, QObject *parent) :
// FMTask(jsonObj, fmType, session, parent)
//{
//}
//QByteArray FMTaskNoWnd::doTask()
//{
// copyPros();
// bool isOk = sendToServer();
// if(!isOk) {
// FMP_WARN() << QString("Task error %1: %2").arg(error()).arg(errorString());
// return QString(ErrorMsgJson).arg(error()).arg(errorString()).toLatin1();
// }
// packagePOSRsp();
// QJsonDocument json(posRspJsonObj);
// return json.toJson(QJsonDocument::Compact);
//}
FMTaskNoWnd
::
FMTaskNoWnd
(
QJsonObject
&
jsonObj
,
FM_TYPE
fmType
,
Session
*
session
,
QObject
*
parent
)
:
FMTask
(
jsonObj
,
fmType
,
session
,
parent
)
{
}
QByteArray
FMTaskNoWnd
::
doTask
()
{
copyPros
();
bool
isOk
=
sendToServer
();
if
(
!
isOk
)
{
FMP_WARN
()
<<
QString
(
"Task error %1: %2"
).
arg
(
error
()).
arg
(
errorString
());
return
QString
(
ErrorMsgJson
).
arg
(
error
()).
arg
(
errorString
()).
toLatin1
();
}
packagePOSRsp
();
QJsonDocument
json
(
posRspJsonObj
);
return
json
.
toJson
(
QJsonDocument
::
Compact
);
}
QString
FMTaskNoWnd
::
sign
()
const
{
FMP_DEBUG
()
<<
__FUNCTION__
;
// 解析JSON插入MAP中按字典排序
QMap
<
QString
,
QString
>
mapData
;
for
(
int
i
=
0
;
i
<
sizeof
(
SignProps
)
/
sizeof
(
SignProps
[
0
]);
++
i
)
{
QString
word
=
SignProps
[
i
];
if
(
serverReqJsonObj
[
word
].
isDouble
())
{
mapData
[
word
]
=
QString
::
number
(
serverReqJsonObj
[
word
].
toDouble
());
}
else
{
mapData
[
word
]
=
serverReqJsonObj
[
word
].
toString
();
}
}
if
(
serverRspJsonObj
[
ServerProps
(
PosProps
.
Fm_cmd
)].
toInt
()
==
FM_Fund
)
{
mapData
[
ServerProps
(
PosProps
.
TransId
)]
=
serverReqJsonObj
[
ServerProps
(
PosProps
.
TransId
)].
toString
();
}
// 使用URL键值对的格式拼接
QString
sb
=
""
;
foreach
(
QString
key
,
mapData
.
keys
())
{
sb
+=
(
key
+
"="
+
mapData
.
value
(
key
)
+
"&"
);
}
sb
.
remove
(
sb
.
length
()
-
1
,
1
);
// 去掉最后一个&
sb
.
append
(
KEY_CODE
);
QByteArray
bt
;
bt
.
append
(
sb
);
FMP_INFO
()
<<
"Sign String: "
<<
bt
;
QByteArray
md5Bt
=
QCryptographicHash
::
hash
(
bt
,
QCryptographicHash
::
Md5
);
return
md5Bt
.
toHex
();
}
task/fmtasknownd.h
View file @
6c341fa9
#ifndef FMTASKNOWND_H
#define FMTASKNOWND_H
//
#include "fmtask.h"
#include "fmtask.h"
//
class FMTaskNoWnd : public FMTask
//
{
//
Q_OBJECT
//
public:
//
explicit FMTaskNoWnd(QJsonObject &jsonObj, FM_TYPE fmType, Session* session = 0, QObject *parent = 0);
class
FMTaskNoWnd
:
public
FMTask
{
Q_OBJECT
public
:
explicit
FMTaskNoWnd
(
QJsonObject
&
jsonObj
,
FM_TYPE
fmType
,
Session
*
session
=
0
,
QObject
*
parent
=
0
);
// virtual QByteArray doTask();
//protected:
// virtual void packageServerReq() = 0;
// virtual void packagePOSRsp() = 0;
//};
virtual
QByteArray
doTask
();
protected
:
virtual
void
packageServerReq
()
=
0
;
virtual
void
packagePOSRsp
()
=
0
;
QString
sign
()
const
;
};
#endif // FMTASKNOWND_H
task/taskcoupon.cpp
View file @
6c341fa9
...
...
@@ -60,15 +60,15 @@ void TaskCoupon::packageServerReq()
serverReqJsonObj
[
"stationId"
]
=
getPosJsonValue
(
"pos_id"
);
serverReqJsonObj
[
"storeId"
]
=
getPosJsonValue
(
"store_id"
);
serverReqJsonObj
[
"operatorId"
]
=
getPosJsonValue
(
"operator_id"
);
serverReqJsonObj
[
"transId"
]
=
getPosJsonValue
(
"trans_id"
);
serverReqJsonObj
[
"businessDate"
]
=
getPosJsonValue
(
"business_date"
);
serverReqJsonObj
[
"partnerId"
]
=
PARTNER_ID
;
serverReqJsonObj
[
"t"
]
=
QString
::
number
(
QDateTime
::
currentMSecsSinceEpoch
());
QJsonObject
transaction
;
transaction
[
"memberTransId"
]
=
""
;
transaction
[
"account"
]
=
getPosJsonValue
(
"fm_open_id"
);
transaction
[
"isUseScore"
]
=
1
;
transaction
[
"payAmount"
]
=
getPosJsonValue
(
"order_amount"
).
toInt
()
-
getPosJsonValue
(
"paid_amount"
).
toInt
();
QJsonObject
transData
;
transData
[
"transId"
]
=
getPosJsonValue
(
"trans_id"
);
transData
[
"businessDate"
]
=
getPosJsonValue
(
"business_date"
);
transData
[
"memberTransId"
]
=
getPosJsonValue
(
"fm_id"
);
transData
[
"account"
]
=
getPosJsonValue
(
"fm_open_id"
);
transData
[
"isUseScore"
]
=
1
;
transData
[
"payAmount"
]
=
getPosJsonValue
(
"order_amount"
).
toInt
()
-
getPosJsonValue
(
"paid_amount"
).
toInt
();
QJsonArray
products
;
QJsonArray
clientArr
=
getPosJsonValue
(
"products"
).
toArray
();
for
(
int
i
=
0
;
i
<
clientArr
.
size
();
i
++
)
...
...
@@ -79,8 +79,11 @@ void TaskCoupon::packageServerReq()
product
[
"productId"
]
=
clientArr
[
i
].
toObject
()[
"pid"
];
products
.
append
(
product
);
}
transaction
[
"products"
]
=
products
;
serverReqJsonObj
[
"transaction"
]
=
transaction
;
transData
[
"productList"
]
=
products
;
serverReqJsonObj
[
"data"
]
=
transData
;
serverReqJsonObj
[
"t"
]
=
QString
::
number
(
QDateTime
::
currentMSecsSinceEpoch
());
serverReqJsonObj
[
"sign"
]
=
sign
();
}
bool
TaskCoupon
::
sendToServer
(
bool
isShowMsg
)
...
...
@@ -91,25 +94,26 @@ bool TaskCoupon::sendToServer(bool isShowMsg)
QJsonDocument
json
(
serverReqJsonObj
);
QByteArray
data
=
json
.
toJson
(
QJsonDocument
::
Compact
);
url
=
QString
(
"%1?sign=%2"
).
arg
(
FMPVipSettings
::
instance
()
->
getServerUrl
()).
arg
(
sign
())
;
url
=
FMPVipSettings
::
instance
()
->
getServerUrl
()
+
"/coupon"
;
QByteArray
rspData
;
FMNetwork
net
;
net
.
send
(
url
,
data
,
rspData
);
QJsonParseError
jsonErr
;
QJsonDocument
rspJson
=
QJsonDocument
::
fromJson
(
rspData
,
&
jsonErr
);
// 网络错误
if
(
net
.
error
!=
FM_API_SUCCESS
)
{
setError
(
net
.
error
,
net
.
errorMsg
);
serverRspJsonObj
=
rspJson
.
object
();
}
else
{
QJsonParseError
jsonErr
;
QJsonDocument
rspJson
=
QJsonDocument
::
fromJson
(
rspData
,
&
jsonErr
);
// Json错误
if
(
jsonErr
.
error
!=
QJsonParseError
::
NoError
)
{
setError
(
FM_API_BADJSON
);
FMP_ERROR
()
<<
"Unknown data: "
<<
rspData
;
}
else
{
serverRspJsonObj
=
rspJson
.
object
();
// 服务器返回的错误
if
(
serverRspJsonObj
.
contains
(
"errcode"
))
{
setError
(
FM_API_SERVERERROR
,
serverRspJsonObj
[
"errcode"
].
toInt
(),
serverRspJsonObj
[
"errmsg"
].
toString
());
...
...
task/taskcoupon.h
View file @
6c341fa9
...
...
@@ -25,6 +25,7 @@ protected:
bool
sendToServer
(
bool
isShowMsg
=
true
);
void
packagePOSRsp
();
protected
:
QJsonObject
posReqJsonObj
;
QJsonObject
posRspJsonObj
;
...
...
task/taskfinal.cpp
View file @
6c341fa9
...
...
@@ -35,13 +35,14 @@ void TaskFinal::packageServerReq()
serverReqJsonObj
[
"storeId"
]
=
getPosJsonValue
(
"store_id"
);
serverReqJsonObj
[
"operatorId"
]
=
getPosJsonValue
(
"operator_id"
);
serverReqJsonObj
[
"partnerId"
]
=
PARTNER_ID
;
serverReqJsonObj
[
"businessDate"
]
=
getPosJsonValue
(
"business_date"
);
serverReqJsonObj
[
"transId"
]
=
getPosJsonValue
(
"trans_id"
);
serverReqJsonObj
[
"memberTransId"
]
=
""
;
QJsonObject
transaction
;
transaction
[
"account"
]
=
getPosJsonValue
(
"fm_open_id"
);
transaction
[
"totalAmount"
]
=
getPosJsonValue
(
"order_amount"
);
transaction
[
"payAmount"
]
=
getPosJsonValue
(
"paid_amount"
);
QJsonObject
transData
;
transData
[
"businessDate"
]
=
getPosJsonValue
(
"business_date"
);
transData
[
"transId"
]
=
getPosJsonValue
(
"trans_id"
);
transData
[
"memberTransId"
]
=
getPosJsonValue
(
"fm_id"
);
transData
[
"account"
]
=
getPosJsonValue
(
"fm_open_id"
);
transData
[
"totalAmount"
]
=
getPosJsonValue
(
"order_amount"
);
transData
[
"payAmount"
]
=
getPosJsonValue
(
"paid_amount"
);
// 产品列表
QJsonArray
products
;
...
...
@@ -54,7 +55,7 @@ void TaskFinal::packageServerReq()
products
.
append
(
product
);
}
trans
action
[
"products
"
]
=
products
;
trans
Data
[
"productList
"
]
=
products
;
QJsonArray
payList
;
foreach
(
auto
p
,
getPosJsonValue
(
PosProps
.
Pay_ids
).
toArray
())
...
...
@@ -63,33 +64,33 @@ void TaskFinal::packageServerReq()
pay
[
"amount"
]
=
p
.
toObject
()[
"pay_amount"
];
pay
[
"thirdPayTransId"
]
=
""
;
pay
[
"code"
]
=
p
.
toObject
()[
"code"
].
toString
();
pay
[
"transId"
]
=
getPosJsonValue
(
"trans_id"
)
;
pay
[
"transId"
]
=
p
.
toObject
()[
"trans_id"
]
;
pay
[
"payTransId"
]
=
p
.
toObject
()[
"pay_transId"
].
toString
();
QString
typeModeFlag
=
p
.
toObject
()[
"pay_id"
].
toString
();
if
(
typeModeFlag
==
"0"
)
{
//现金支付
pay
[
"typeModeFlag"
]
=
20005
;
pay
[
"typeModeFlag"
]
=
"20005"
;
}
else
if
(
typeModeFlag
==
"7"
)
{
//支付宝钱包
pay
[
"typeModeFlag"
]
=
10001
;
//???
pay
[
"typeModeFlag"
]
=
"10001"
;
//???
}
else
if
(
typeModeFlag
==
"9"
)
{
//微信钱包
pay
[
"typeModeFlag"
]
=
10004
;
//???
pay
[
"typeModeFlag"
]
=
"10004"
;
//???
}
else
{
pay
[
"typeModeFlag"
]
=
typeModeFlag
.
toInt
()
;
pay
[
"typeModeFlag"
]
=
typeModeFlag
;
}
payList
.
append
(
pay
);
}
trans
action
[
"payList"
]
=
payList
;
serverReqJsonObj
[
"
transaction"
]
=
transaction
;
trans
Data
[
"payList"
]
=
payList
;
serverReqJsonObj
[
"
data"
]
=
transData
;
int
finalType
=
getPosJsonValue
(
"settlement_type"
).
toInt
();
if
(
finalType
==
0
)
//支付结算
...
...
@@ -100,6 +101,9 @@ void TaskFinal::packageServerReq()
{
serverReqJsonObj
[
"reqType"
]
=
1010
;
}
serverReqJsonObj
[
"t"
]
=
QString
::
number
(
QDateTime
::
currentMSecsSinceEpoch
());
serverReqJsonObj
[
"sign"
]
=
sign
();
}
bool
TaskFinal
::
sendToServer
(
bool
isShowMsg
)
...
...
@@ -110,24 +114,30 @@ bool TaskFinal::sendToServer(bool isShowMsg)
QJsonDocument
json
(
serverReqJsonObj
);
QByteArray
data
=
json
.
toJson
(
QJsonDocument
::
Compact
);
url
=
QString
(
"%1?sign=%2"
).
arg
(
FMPVipSettings
::
instance
()
->
getServerUrl
()).
arg
(
sign
())
;
url
=
FMPVipSettings
::
instance
()
->
getServerUrl
()
+
"/order"
;
QByteArray
rspData
;
FMNetwork
net
;
net
.
send
(
url
,
data
,
rspData
);
QJsonParseError
jsonErr
;
QJsonDocument
rspJson
=
QJsonDocument
::
fromJson
(
rspData
,
&
jsonErr
);
// 网络错误
if
(
net
.
error
!=
FM_API_SUCCESS
)
{
setError
(
net
.
error
,
net
.
errorMsg
);
serverRspJsonObj
=
rspJson
.
object
();
}
else
{
QJsonParseError
jsonErr
;
QJsonDocument
rspJson
=
QJsonDocument
::
fromJson
(
rspData
,
&
jsonErr
);
// Json错误
if
(
jsonErr
.
error
!=
QJsonParseError
::
NoError
)
{
setError
(
FM_API_BADJSON
);
FMP_ERROR
()
<<
"Unknown data: "
<<
rspData
;
}
else
{
serverRspJsonObj
=
rspJson
.
object
();
// 服务器返回的错误
if
(
serverRspJsonObj
.
contains
(
"errcode"
))
{
setError
(
FM_API_SERVERERROR
,
serverRspJsonObj
[
"errcode"
].
toInt
(),
serverRspJsonObj
[
"errmsg"
].
toString
());
}
}
}
...
...
task/tasklogin.cpp
View file @
6c341fa9
...
...
@@ -99,8 +99,11 @@ void TaskLogin::packageServerReq()
serverReqJsonObj
[
"storeId"
]
=
getPosJsonValue
(
"store_id"
);
serverReqJsonObj
[
"operatorId"
]
=
getPosJsonValue
(
"operator_id"
);
serverReqJsonObj
[
"partnerId"
]
=
PARTNER_ID
;
serverReqJsonObj
[
"code"
]
=
session
()
->
data
(
"code"
).
toString
();
QJsonObject
code
;
code
[
"code"
]
=
session
()
->
data
(
"code"
).
toString
();
serverReqJsonObj
[
"data"
]
=
code
;
serverReqJsonObj
[
"t"
]
=
QString
::
number
(
QDateTime
::
currentMSecsSinceEpoch
());
serverReqJsonObj
[
"sign"
]
=
sign
();
}
bool
TaskLogin
::
sendToServer
(
bool
isShowMsg
)
...
...
@@ -111,29 +114,36 @@ bool TaskLogin::sendToServer(bool isShowMsg)
QJsonDocument
json
(
serverReqJsonObj
);
QByteArray
data
=
json
.
toJson
(
QJsonDocument
::
Compact
);
url
=
QString
(
"%1?sign=%2"
).
arg
(
FMPVipSettings
::
instance
()
->
getServerUrl
()).
arg
(
sign
())
;
url
=
FMPVipSettings
::
instance
()
->
getServerUrl
()
+
"/auth"
;
QByteArray
rspData
;
FMNetwork
net
;
net
.
send
(
url
,
data
,
rspData
);
QJsonParseError
jsonErr
;
QJsonDocument
rspJson
=
QJsonDocument
::
fromJson
(
rspData
,
&
jsonErr
);
// 网络错误
if
(
net
.
error
!=
FM_API_SUCCESS
)
{
setError
(
net
.
error
,
net
.
errorMsg
);
serverRspJsonObj
=
rspJson
.
object
();
}
else
{
QJsonParseError
jsonErr
;
QJsonDocument
rspJson
=
QJsonDocument
::
fromJson
(
rspData
,
&
jsonErr
);
// Json错误
if
(
jsonErr
.
error
!=
QJsonParseError
::
NoError
)
{
setError
(
FM_API_BADJSON
);
FMP_ERROR
()
<<
"Unknown data: "
<<
rspData
;
}
else
{
serverRspJsonObj
=
rspJson
.
object
();
// 服务器返回的错误
if
(
serverRspJsonObj
.
contains
(
"errcode"
))
{
setError
(
FM_API_SERVERERROR
,
serverRspJsonObj
[
"errcode"
].
toInt
(),
serverRspJsonObj
[
"errmsg"
].
toString
());
}
}
}
FMP_INFO
()
<<
"Server rsponse: "
<<
serverRspJsonObj
;
if
(
_window
!=
nullptr
)
{
_window
->
setIsBusy
(
false
);
}
...
...
task/taskothers.cpp
View file @
6c341fa9
#
include
"taskothers.h"
#include "fmp_vip_settings.h"
#include "fmnetwork.h"
#include <QJsonDocument>
#include <QDateTime>
#include <fmp_logger_i.h>
//TaskRefundPay::TaskRefundPay(QJsonObject &jsonObj, QObject *parent)
// :FMTaskNoWnd(jsonObj, FM_Order_Revoke, 0, parent)
//{
//}
//void TaskRefundPay::packageServerReq()
//{
// serverReqJsonObj[ServerProps(PosProps.TransId)] = getPosJsonValue(PosProps.TransId);
//}
//void TaskRefundPay::packagePOSRsp()
//{
// std::vector<QString> p;
// p.push_back(PosProps.StatusCode);
// p.push_back(PosProps.Msg);
// foreach(auto prop , p) {
// posRspJsonObj[prop] = getServerJsonValue(ServerProps(prop));
// }
// posRspJsonObj[PosProps.Prompt] = 1;
//}
//TaskRefundOrder::TaskRefundOrder(QJsonObject &jsonObj, QObject *parent)
// :FMTaskNoWnd(jsonObj, FM_Order_Refund, 0, parent)
//{
//}
//void TaskRefundOrder::packageServerReq()
//{
// QJsonObject trans;
// trans[ServerProps(PosProps.Fm_id)] = getPosJsonValue(PosProps.Fm_id);
// serverReqJsonObj[ServerProps(PosProps.Transaction)] = trans;
//}
//void TaskRefundOrder::packagePOSRsp()
//{
// std::vector<QString> p;
// p.push_back(PosProps.StatusCode);
// p.push_back(PosProps.Msg);
// foreach(auto prop , p) {
// posRspJsonObj[prop] = getServerJsonValue(ServerProps(prop));
// }
// posRspJsonObj[PosProps.Prompt] = 1;
//}
TaskRefundPay
::
TaskRefundPay
(
QJsonObject
&
jsonObj
,
QObject
*
parent
)
:
FMTaskNoWnd
(
jsonObj
,
FM_Order_Revoke
,
0
,
parent
)
{
}
void
TaskRefundPay
::
packageServerReq
()
{
// 固定部分
serverReqJsonObj
[
PosProps
.
AppId
]
=
APP_ID
;
serverReqJsonObj
[
PosProps
.
PartnerId
]
=
PARTNER_ID
;
serverReqJsonObj
[
ServerProps
(
PosProps
.
Fm_cmd
)]
=
FM_Type
();
QJsonArray
transIds
;
transIds
.
append
(
getPosJsonValue
(
PosProps
.
TransId
));
QJsonObject
transData
;
transData
[
"transIds"
]
=
transIds
;
serverReqJsonObj
[
"data"
]
=
transData
;
serverReqJsonObj
[
"t"
]
=
QString
::
number
(
QDateTime
::
currentMSecsSinceEpoch
());
serverReqJsonObj
[
"sign"
]
=
sign
();
}
void
TaskRefundPay
::
packagePOSRsp
()
{
std
::
vector
<
QString
>
p
;
p
.
push_back
(
PosProps
.
StatusCode
);
p
.
push_back
(
PosProps
.
Msg
);
foreach
(
auto
prop
,
p
)
{
posRspJsonObj
[
prop
]
=
getServerJsonValue
(
ServerProps
(
prop
));
}
posRspJsonObj
[
PosProps
.
Prompt
]
=
1
;
}
bool
TaskRefundPay
::
sendToServer
(
bool
isShowMsg
)
{
FMP_DEBUG
()
<<
__FUNCTION__
;
packageServerReq
();
QJsonDocument
json
(
serverReqJsonObj
);
QByteArray
data
=
json
.
toJson
(
QJsonDocument
::
Compact
);
url
=
FMPVipSettings
::
instance
()
->
getServerUrl
()
+
"/refund"
;
QByteArray
rspData
;
FMNetwork
net
;
net
.
send
(
url
,
data
,
rspData
);
QJsonParseError
jsonErr
;
QJsonDocument
rspJson
=
QJsonDocument
::
fromJson
(
rspData
,
&
jsonErr
);
// 网络错误
if
(
net
.
error
!=
FM_API_SUCCESS
)
{
setError
(
net
.
error
,
net
.
errorMsg
);
serverRspJsonObj
=
rspJson
.
object
();
}
else
{
// Json错误
if
(
jsonErr
.
error
!=
QJsonParseError
::
NoError
)
{
setError
(
FM_API_BADJSON
);
FMP_ERROR
()
<<
"Unknown data: "
<<
rspData
;
}
else
{
serverRspJsonObj
=
rspJson
.
object
();
// 服务器返回的错误
if
(
serverRspJsonObj
.
contains
(
"errcode"
))
{
setError
(
FM_API_SERVERERROR
,
serverRspJsonObj
[
"errcode"
].
toInt
(),
serverRspJsonObj
[
"errmsg"
].
toString
());
}
}
}
FMP_INFO
()
<<
"Server rsponse: "
<<
serverRspJsonObj
;
if
(
_window
!=
nullptr
)
{
_window
->
setIsBusy
(
false
);
}
bool
isOk
=
(
error
()
==
FM_API_SUCCESS
);
if
(
!
isOk
&&
isShowMsg
)
{
FMMsgWnd
::
FailureWnd
(
errorString
(),
_window
);
}
return
isOk
;
}
TaskRefundOrder
::
TaskRefundOrder
(
QJsonObject
&
jsonObj
,
QObject
*
parent
)
:
FMTaskNoWnd
(
jsonObj
,
FM_Order_Refund
,
0
,
parent
)
{
}
void
TaskRefundOrder
::
packageServerReq
()
{
serverReqJsonObj
[
PosProps
.
AppId
]
=
APP_ID
;
serverReqJsonObj
[
PosProps
.
PartnerId
]
=
PARTNER_ID
;
serverReqJsonObj
[
ServerProps
(
PosProps
.
Fm_cmd
)]
=
FM_Type
();
QJsonObject
transData
;
transData
[
"memberTransId"
]
=
getPosJsonValue
(
PosProps
.
Fm_id
);
serverReqJsonObj
[
"data"
]
=
transData
;
serverReqJsonObj
[
"t"
]
=
QString
::
number
(
QDateTime
::
currentMSecsSinceEpoch
());
serverReqJsonObj
[
"sign"
]
=
sign
();
}
void
TaskRefundOrder
::
packagePOSRsp
()
{
std
::
vector
<
QString
>
p
;
p
.
push_back
(
PosProps
.
StatusCode
);
p
.
push_back
(
PosProps
.
Msg
);
foreach
(
auto
prop
,
p
)
{
posRspJsonObj
[
prop
]
=
getServerJsonValue
(
ServerProps
(
prop
));
}
posRspJsonObj
[
PosProps
.
Prompt
]
=
1
;
}
bool
TaskRefundOrder
::
sendToServer
(
bool
isShowMsg
)
{
FMP_DEBUG
()
<<
__FUNCTION__
;
packageServerReq
();
QJsonDocument
json
(
serverReqJsonObj
);
QByteArray
data
=
json
.
toJson
(
QJsonDocument
::
Compact
);
url
=
FMPVipSettings
::
instance
()
->
getServerUrl
()
+
"/correct"
;
QByteArray
rspData
;
FMNetwork
net
;
net
.
send
(
url
,
data
,
rspData
);
QJsonParseError
jsonErr
;
QJsonDocument
rspJson
=
QJsonDocument
::
fromJson
(
rspData
,
&
jsonErr
);
// 网络错误
if
(
net
.
error
!=
FM_API_SUCCESS
)
{
setError
(
net
.
error
,
net
.
errorMsg
);
serverRspJsonObj
=
rspJson
.
object
();
}
else
{
// Json错误
if
(
jsonErr
.
error
!=
QJsonParseError
::
NoError
)
{
setError
(
FM_API_BADJSON
);
FMP_ERROR
()
<<
"Unknown data: "
<<
rspData
;
}
else
{
serverRspJsonObj
=
rspJson
.
object
();
// 服务器返回的错误
if
(
serverRspJsonObj
.
contains
(
"errcode"
))
{
setError
(
FM_API_SERVERERROR
,
serverRspJsonObj
[
"errcode"
].
toInt
(),
serverRspJsonObj
[
"errmsg"
].
toString
());
}
}
}
FMP_INFO
()
<<
"Server rsponse: "
<<
serverRspJsonObj
;
if
(
_window
!=
nullptr
)
{
_window
->
setIsBusy
(
false
);
}
bool
isOk
=
(
error
()
==
FM_API_SUCCESS
);
if
(
!
isOk
&&
isShowMsg
)
{
FMMsgWnd
::
FailureWnd
(
errorString
(),
_window
);
}
return
isOk
;
}
task/taskothers.h
View file @
6c341fa9
...
...
@@ -4,22 +4,25 @@
#include "fmtasknownd.h"
// 支付退款
//class TaskRefundPay : public FMTaskNoWnd
//{
// Q_OBJECT
//public:
// explicit TaskRefundPay(QJsonObject &jsonObj, QObject *parent = 0);
// void packageServerReq();
// void packagePOSRsp();
//};
class
TaskRefundPay
:
public
FMTaskNoWnd
{
Q_OBJECT
public
:
explicit
TaskRefundPay
(
QJsonObject
&
jsonObj
,
QObject
*
parent
=
0
);
void
packageServerReq
();
void
packagePOSRsp
();
bool
sendToServer
(
bool
isShowMsg
);
};
// 整单退款
//class TaskRefundOrder : public FMTaskNoWnd
//{
// Q_OBJECT
//public:
// explicit TaskRefundOrder(QJsonObject &jsonObj, QObject *parent = 0);
// void packageServerReq();
// void packagePOSRsp();
//};
class
TaskRefundOrder
:
public
FMTaskNoWnd
{
Q_OBJECT
public
:
explicit
TaskRefundOrder
(
QJsonObject
&
jsonObj
,
QObject
*
parent
=
0
);
void
packageServerReq
();
void
packagePOSRsp
();
bool
sendToServer
(
bool
isShowMsg
);
};
#endif // TASKOTHERS_H
task/taskpay.cpp
View file @
6c341fa9
...
...
@@ -35,15 +35,15 @@ QByteArray TaskPay::doTask()
{
FMP_DEBUG
()
<<
__FUNCTION__
;
//获取可用的代金券
TaskCoupon
taskCoupon
(
posReqJsonObj
,
_session
);
QByteArray
ret
=
taskCoupon
.
doTask
();
if
(
taskCoupon
.
error
()
!=
FM_API_SUCCESS
)
{
return
ret
;
}
//
TaskCoupon taskCoupon(posReqJsonObj, _session);
//
QByteArray ret = taskCoupon.doTask();
//
if(taskCoupon.error() != FM_API_SUCCESS)
//
{
//
return ret;
//
}
//查询余额和积分
ret
=
queryMemberInfo
();
QByteArray
ret
=
queryMemberInfo
();
if
(
error
()
!=
FM_API_SUCCESS
)
{
return
ret
;
...
...
@@ -81,31 +81,35 @@ QByteArray TaskPay::queryMemberInfo()
serverReqJsonObj
[
"storeId"
]
=
getPosJsonValue
(
"store_id"
);
serverReqJsonObj
[
"operatorId"
]
=
getPosJsonValue
(
"operator_id"
);
serverReqJsonObj
[
"partnerId"
]
=
PARTNER_ID
;
serverReqJsonObj
[
"code"
]
=
getPosJsonValue
(
"fm_open_id"
);
QJsonObject
code
;
code
[
"code"
]
=
getPosJsonValue
(
"fm_open_id"
);
serverReqJsonObj
[
"data"
]
=
code
;
serverReqJsonObj
[
"t"
]
=
QString
::
number
(
QDateTime
::
currentMSecsSinceEpoch
());
serverReqJsonObj
[
"sign"
]
=
sign
();
QJsonDocument
json
(
serverReqJsonObj
);
QByteArray
data
=
json
.
toJson
(
QJsonDocument
::
Compact
);
url
=
QString
(
"%1?sign=%2"
).
arg
(
FMPVipSettings
::
instance
()
->
getServerUrl
()).
arg
(
sign
())
;
url
=
FMPVipSettings
::
instance
()
->
getServerUrl
()
+
"/auth"
;
QByteArray
rspData
;
FMNetwork
net
;
net
.
send
(
url
,
data
,
rspData
);
QJsonParseError
jsonErr
;
QJsonDocument
rspJson
=
QJsonDocument
::
fromJson
(
rspData
,
&
jsonErr
);
// 网络错误
if
(
net
.
error
!=
FM_API_SUCCESS
)
{
setError
(
net
.
error
,
net
.
errorMsg
);
serverRspJsonObj
=
rspJson
.
object
();
}
else
{
QJsonParseError
jsonErr
;
QJsonDocument
rspJson
=
QJsonDocument
::
fromJson
(
rspData
,
&
jsonErr
);
// Json错误
if
(
jsonErr
.
error
!=
QJsonParseError
::
NoError
)
{
setError
(
FM_API_BADJSON
);
FMP_ERROR
()
<<
"Unknown data: "
<<
rspData
;
}
else
{
serverRspJsonObj
=
rspJson
.
object
();
// 服务器返回的错误
if
(
serverRspJsonObj
.
contains
(
"errcode"
))
{
setError
(
FM_API_SERVERERROR
,
serverRspJsonObj
[
"errcode"
].
toInt
(),
serverRspJsonObj
[
"errmsg"
].
toString
());
...
...
@@ -153,15 +157,18 @@ void TaskPay::packageServerReq()
serverReqJsonObj
[
"stationId"
]
=
getPosJsonValue
(
"pos_id"
);
serverReqJsonObj
[
"storeId"
]
=
getPosJsonValue
(
"store_id"
);
serverReqJsonObj
[
"operatorId"
]
=
getPosJsonValue
(
"operator_id"
);
serverReqJsonObj
[
"transId"
]
=
getPosJsonValue
(
"trans_id"
);
serverReqJsonObj
[
"businessDate"
]
=
getPosJsonValue
(
"business_date"
);
serverReqJsonObj
[
"partnerId"
]
=
PARTNER_ID
;
QJsonObject
transaction
;
transaction
[
"memberTransId"
]
=
""
;
transaction
[
"account"
]
=
getPosJsonValue
(
"fm_open_id"
);
transaction
[
"payAmount"
]
=
getPosJsonValue
(
"order_amount"
).
toInt
()
-
getPosJsonValue
(
"paid_amount"
).
toInt
();
transaction
[
"isUseScore"
]
=
session
()
->
data
(
"isUseScore"
).
toInt
();
//! 会员新接口使用 data 打包业务数据
QJsonObject
transData
;
transData
[
"transId"
]
=
getPosJsonValue
(
"trans_id"
);
transData
[
"businessDate"
]
=
getPosJsonValue
(
"business_date"
);
transData
[
"memberTransId"
]
=
getPosJsonValue
(
"fm_id"
);
transData
[
"account"
]
=
getPosJsonValue
(
"fm_open_id"
);
transData
[
"payAmount"
]
=
getPosJsonValue
(
"order_amount"
).
toInt
()
-
getPosJsonValue
(
"paid_amount"
).
toInt
();
transData
[
"isUseScore"
]
=
session
()
->
data
(
"isUseScore"
).
toInt
();
QJsonArray
products
;
QJsonArray
clientArray
=
getPosJsonValue
(
"products"
).
toArray
();
...
...
@@ -185,7 +192,7 @@ void TaskPay::packageServerReq()
payList
.
push_back
(
balance
);
//积分支付详情
if
(
trans
action
[
"isUseScore"
].
toInt
())
if
(
trans
Data
[
"isUseScore"
].
toInt
())
{
QJsonObject
score
;
score
[
"amount"
]
=
session
()
->
data
(
"score"
).
toInt
();
...
...
@@ -207,10 +214,13 @@ void TaskPay::packageServerReq()
payList
.
push_back
(
coupon
);
}
transaction
[
"products"
]
=
products
;
transaction
[
"payList"
]
=
payList
;
transData
[
"productList"
]
=
products
;
transData
[
"payList"
]
=
payList
;
serverReqJsonObj
[
"data"
]
=
transData
;
serverReqJsonObj
[
PosProps
.
Transaction
]
=
transaction
;
serverReqJsonObj
[
"t"
]
=
QString
::
number
(
QDateTime
::
currentMSecsSinceEpoch
());
serverReqJsonObj
[
"sign"
]
=
sign
();
}
bool
TaskPay
::
sendToServer
(
bool
isShowMsg
)
...
...
@@ -221,22 +231,24 @@ bool TaskPay::sendToServer(bool isShowMsg)
QJsonDocument
json
(
serverReqJsonObj
);
QByteArray
data
=
json
.
toJson
(
QJsonDocument
::
Compact
);
url
=
QString
(
"%1?sign=%2"
).
arg
(
FMPVipSettings
::
instance
()
->
getServerUrl
()).
arg
(
sign
())
;
url
=
FMPVipSettings
::
instance
()
->
getServerUrl
()
+
"/pay"
;
QByteArray
rspData
;
FMNetwork
net
;
net
.
send
(
url
,
data
,
rspData
);
QJsonParseError
jsonErr
;
QJsonDocument
rspJson
=
QJsonDocument
::
fromJson
(
rspData
,
&
jsonErr
);
// 网络错误
if
(
net
.
error
!=
FM_API_SUCCESS
)
{
setError
(
net
.
error
,
net
.
errorMsg
);
serverRspJsonObj
=
rspJson
.
object
();
}
else
{
QJsonParseError
jsonErr
;
QJsonDocument
rspJson
=
QJsonDocument
::
fromJson
(
rspData
,
&
jsonErr
);
// Json错误
if
(
jsonErr
.
error
!=
QJsonParseError
::
NoError
)
{
setError
(
FM_API_BADJSON
);
FMP_ERROR
()
<<
"Unknown data: "
<<
rspData
;
}
else
{
serverRspJsonObj
=
rspJson
.
object
();
}
...
...
@@ -265,16 +277,16 @@ void TaskPay::packagePOSRsp()
posRspJsonObj
[
PosProps
.
Prompt
]
=
0
;
posRspJsonObj
[
PosProps
.
Settlement
]
=
1
;
posRspJsonObj
[
PosProps
.
Fm_open_id
]
=
getServerJsonValue
(
"account"
).
toString
();
posRspJsonObj
[
PosProps
.
Fm_
transI
d
]
=
getServerJsonValue
(
"memberTransId"
).
toString
();
posRspJsonObj
[
PosProps
.
Fm_
i
d
]
=
getServerJsonValue
(
"memberTransId"
).
toString
();
QJsonArray
servPayArray
=
getServerJsonValue
(
"payList"
).
toArray
();
//支付方式描述
QMap
<
QString
,
QString
>
description
;
description
[
"20001"
]
=
"会员储值金支付"
;
description
[
"20002"
]
=
"会员积分支付"
;
description
[
"20003"
]
=
"代金券支付"
;
description
[
"20004"
]
=
"商品券支付"
;
description
[
"20005"
]
=
"现金支付"
;
description
[
"20001"
]
=
QString
::
fromLocal8Bit
(
"会员储值金支付"
)
;
description
[
"20002"
]
=
QString
::
fromLocal8Bit
(
"会员积分支付"
)
;
description
[
"20003"
]
=
QString
::
fromLocal8Bit
(
"代金券支付"
)
;
description
[
"20004"
]
=
QString
::
fromLocal8Bit
(
"商品券支付"
)
;
description
[
"20005"
]
=
QString
::
fromLocal8Bit
(
"现金支付"
)
;
//计算总支付额
QJsonArray
pay_ids
;
...
...
@@ -282,8 +294,8 @@ void TaskPay::packagePOSRsp()
for
(
int
i
=
0
;
i
<
servPayArray
.
size
();
i
++
)
{
QJsonObject
pay_id
;
pay_id
[
"pay_id"
]
=
QString
::
number
(
servPayArray
[
i
].
toObject
()[
"typeModeFlag"
].
toInt
()
);
pay_id
[
"pay_str"
]
=
description
[
QString
::
number
(
servPayArray
[
i
].
toObject
()[
"typeModeFlag"
].
toInt
()
)];
pay_id
[
"pay_id"
]
=
servPayArray
[
i
].
toObject
()[
"typeModeFlag"
].
toString
(
);
pay_id
[
"pay_str"
]
=
description
[
servPayArray
[
i
].
toObject
()[
"typeModeFlag"
].
toString
(
)];
pay_id
[
"pay_amount"
]
=
servPayArray
[
i
].
toObject
()[
"amount"
].
toInt
();
pay_id
[
"code"
]
=
servPayArray
[
i
].
toObject
()[
"code"
].
toString
();
pay_ids
.
push_back
(
pay_id
);
...
...
windows/fmmsgwnd.cpp
View file @
6c341fa9
...
...
@@ -8,6 +8,7 @@ FMMsgWnd::FMMsgWnd(QDialog *parent) :
{
ui
->
setupUi
(
this
);
setAttribute
(
Qt
::
WA_TranslucentBackground
);
setAttribute
(
Qt
::
WA_QuitOnClose
,
false
);
this
->
setWindowFlags
(
windowFlags
()
|
Qt
::
FramelessWindowHint
|
Qt
::
WindowStaysOnTopHint
);
}
...
...
windows/fmviporder.cpp
View file @
6c341fa9
...
...
@@ -173,8 +173,6 @@ void FMVipOrder::on_pay_edit_textChanged(const QString &text)
double
num
=
text
.
toDouble
();
double
maxPay
=
orderInfo
->
getMaxWillPay
();
if
(
num
>
maxPay
)
{
ui
->
pay_edit
->
setText
(
DOUBLE_STR
(
maxPay
));
QString
maxPay_info
=
QString
::
fromLocal8Bit
(
"余额只需支付 %1 元"
);
if
(
maxPay
>=
orderInfo
->
getAmountStr
().
toDouble
())
{
maxPay_info
=
QString
::
fromLocal8Bit
(
"余额最多支付 %1 元"
);
...
...
@@ -187,4 +185,5 @@ void FMVipOrder::on_pay_edit_textChanged(const QString &text)
oldPayText
=
text
;
ui
->
pay_max
->
setText
(
""
);
}
ui
->
pay_edit
->
setText
(
DOUBLE_STR
(
maxPay
));
}
windows/forms/fmmsgwnd.ui
View file @
6c341fa9
...
...
@@ -163,8 +163,8 @@
</property>
<property
name=
"maximumSize"
>
<size>
<width>
8
0
</width>
<height>
16777215
</height>
<width>
6
0
</width>
<height>
60
</height>
</size>
</property>
<property
name=
"styleSheet"
>
...
...
windows/forms/fmviporder.ui
View file @
6c341fa9
...
...
@@ -204,11 +204,11 @@
}
#pay_chk::indicator:unchecked {
image: url(:/chk_unchecked.png);
image: url(:/
img/
chk_unchecked.png);
}
#pay_chk::indicator:checked {
image: url(:/chk_checked.png);
image: url(:/
img/
chk_checked.png);
}
#pay_btn {
...
...
@@ -282,7 +282,7 @@
#coupon_separator
{
max-height: 1px;
border-image: url(:/coupon_separator.png);
border-image: url(:/
img/
coupon_separator.png);
margin: 0 6 10 6;
}
</string>
</property>
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment