Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
F
FMVip_Today
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
FMVip_Today
Commits
686345da
Commit
686345da
authored
May 16, 2017
by
unknown
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
1. 充值/支付服务端超过30秒未响应时,向服务端发送冲正请求,并向POS返回失败信息。
parent
1d787f9f
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
67 additions
and
3 deletions
+67
-3
FMVip/FMVip.pro
+1
-1
FMVip/fmvipforward.cpp
+62
-0
FMVip/fmvipforward.h
+3
-1
FMVip/main.cpp
+1
-1
No files found.
FMVip/FMVip.pro
View file @
686345da
...
...
@@ -4,7 +4,7 @@
#
#-------------------------------------------------
QT
+=
core
gui
network
sql
QT
+=
core
gui
network
sql
concurrent
CONFIG
+=
c
++
11
...
...
FMVip/fmvipforward.cpp
View file @
686345da
...
...
@@ -9,6 +9,10 @@
#include <QTimer>
#include <QSettings>
#include <QApplication>
#include <QtConcurrent>
#include <QFuture>
#include <QSharedPointer>
#include <QSemaphore>
#include "fmbackup.h"
#include <QDebug>
...
...
@@ -126,6 +130,10 @@ void FMVipForward::request(const QJsonObject &reqJob)
}
else
{
//超时
qDebug
()
<<
"定时器超时"
;
// 超时后,支付和充值应该自动冲正
if
(
_reqType
==
FM_VIP_PAY
||
_reqType
==
FM_VIP_FUND
)
{
autoReversal
(
reqJob
);
}
onServerFinished
(
reply
,
true
);
}
}
...
...
@@ -560,3 +568,57 @@ QMap<QString, Coupon> FMVipForward::getCouponMap(const QString key)
return
couponMap
;
}
void
FMVipForward
::
autoReversal
(
const
QJsonObject
&
reqJob
)
{
QSharedPointer
<
QSemaphore
>
share_spr
(
new
QSemaphore
());
QtConcurrent
::
run
(
[
reqJob
,
share_spr
,
this
]()
{
share_spr
->
acquire
();
QJsonObject
reqJsonObj
;
for
(
QString
prop
:
{
"appId"
,
"storeId"
,
"stationId"
,
"operatorId"
,
"partnerId"
,
"t"
})
{
reqJsonObj
[
prop
]
=
reqJob
[
prop
];
}
if
(
reqJob
[
"reqType"
]
==
FM_VIP_FUND
)
{
reqJsonObj
[
"reqType"
]
=
FM_VIP_REFUND
;
QJsonObject
transObj
;
transObj
[
"memberTransId"
]
=
reqJob
[
"transId"
];
reqJsonObj
[
"transaction"
]
=
transObj
;
}
else
if
(
reqJob
[
"reqType"
]
==
FM_VIP_PAY
)
{
reqJsonObj
[
"reqType"
]
=
FM_VIP_REVOKE
;
reqJsonObj
[
"transId"
]
=
reqJob
[
"transId"
];
}
QString
signUrl
=
sign
(
reqJsonObj
);
QString
url
=
this
->
_urlStr
.
arg
(
signUrl
);
qDebug
()
<<
"冲正url:"
<<
url
;
QNetworkAccessManager
manger
;
QNetworkRequest
request
(
url
);
request
.
setRawHeader
(
"Content-Type"
,
"text/json"
);
QJsonDocument
reqJson
(
reqJsonObj
);
QByteArray
data
=
reqJson
.
toJson
(
QJsonDocument
::
Compact
);
qDebug
()
<<
"冲正数据: "
<<
data
;
QNetworkReply
*
reply
=
manger
.
post
(
request
,
data
);
QEventLoop
loop
;
connect
(
&
manger
,
&
QNetworkAccessManager
::
finished
,
&
loop
,
&
QEventLoop
::
quit
);
connect
(
reply
,
static_cast
<
void
(
QNetworkReply
::*
)(
QNetworkReply
::
NetworkError
)
>
(
&
QNetworkReply
::
error
),
&
loop
,
&
QEventLoop
::
quit
);
loop
.
exec
();
reply
->
deleteLater
();
if
(
reply
->
error
()
!=
QNetworkReply
::
NoError
)
{
qDebug
()
<<
"冲正网络异常:"
<<
reply
->
error
()
<<
" "
<<
reply
->
errorString
();
}
qDebug
()
<<
"冲正返回:"
<<
QString
::
fromUtf8
(
reply
->
readAll
());
});
share_spr
->
release
();
}
FMVip/fmvipforward.h
View file @
686345da
#ifndef FMVIPFORWARD_H
#
ifndef
FMVIPFORWARD_H
#define FMVIPFORWARD_H
#include "fmapicfg.h"
...
...
@@ -94,6 +94,8 @@ private:
void
request
(
const
QJsonObject
&
reqJob
);
QString
sign
(
const
QJsonObject
&
reqJob
)
const
;
void
autoReversal
(
const
QJsonObject
&
reqJob
);
private
:
static
FMVipForward
*
_instance
;
...
...
FMVip/main.cpp
View file @
686345da
#include "fmsockserver.h"
#
include
"fmsockserver.h"
#include "fmvipdispatcher.h"
#include "include/fmutils/fmutils.hpp"
#include <QApplication>
...
...
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