Commit f5e69428 by Carwyn

修正第二次请求不弹出窗口、socket 中途关闭崩溃问题

parent 2eeb1cce
......@@ -21,7 +21,7 @@ int FMPVipPrivate::Init()
Q_Q(FMPVip);
FMPHomeInterface *home = q->GetService<FMPHomeInterface>(q->_ctx);
if(q->_inited) {
home->notification(QString::fromLocal8Bit("[非码会员]已在运行!"));
home->notification(QString::fromLocal8Bit("[非码POS插件]已在运行!"));
} else {
_settings = q->GetService<FMPSettingsInterface>(q->_ctx);
FMPVipSettings::instance()->init(_settings);
......@@ -32,7 +32,7 @@ int FMPVipPrivate::Init()
q->_inited = true;
home->notification(QString::fromLocal8Bit("[非码会员]启动成功!"));
home->notification(QString::fromLocal8Bit("[非码POS插件]启动成功!"));
FMP_INFO() << "Vip start";
}
......
......@@ -28,8 +28,8 @@ void FMPVipServer::Listen(quint16 port)
void FMPVipServer::Write(const QByteArray &data)
{
if(socket->write(data) == -1) {
FMP_ERROR() << "Write error: " <<socket->error() << socket->errorString();
if(!socket || socket->write(data) == -1) {
FMP_ERROR() << "Write error: " << (socket ? socket->errorString() : "connection closed.");
}
}
......@@ -49,23 +49,21 @@ void FMPVipServer::onNewConnection()
void FMPVipServer::onDisconnected()
{
FMP_DEBUG() << "Socket disconnected.";
socket->deleteLater();
socket->close();
}
void FMPVipServer::onReadyRead()
{
QByteArray recvData = socket->readAll();
// FMSOCKEHEADER header = {0};
// memcpy(&header, recvData.data(), sizeof(FMSOCKEHEADER));
// if(header.flag != FMSOCKFLAG) {
// FMP_WARN() << "Incompatible protocol.";i j
// return;
// }
QByteArray rspData;
dispatcher->doTask(recvData/*.mid(sizeof(FMSOCKEHEADER))*/, rspData);
dispatcher->doTask(recvData, rspData);
rspData;
Write(rspData);
socket->waitForDisconnected();
socket->deleteLater();
socket = nullptr;
}
......@@ -56,6 +56,7 @@ void FMVipDispatcher::doTask(const QByteArray &reqData, QByteArray &rspData)
epay->DockPayRequest(reqData);
epay->StartService();
rspData = epay->DockPayRespond();
epay->StopService();
}
else {
rspData = QString::fromLocal8Bit("{\"msg:\":\"支付服务不可用\"}").toUtf8();
......@@ -66,9 +67,10 @@ void FMVipDispatcher::doTask(const QByteArray &reqData, QByteArray &rspData)
if (_ctx) {
ctkServiceReference ref =_ctx->getServiceReference<FMPePayInterface>();
FMPePayInterface *epay = _ctx->getService<FMPePayInterface>(ref);
// epay->DockRefundRequest(reqData);
// epay->StartService();
// rspData = epay->DockRefundRespond();
epay->DockRefundRequest(reqData);
epay->StartService();
rspData = epay->DockRefundRespond();
epay->StopService();
}
else {
rspData = QString::fromLocal8Bit("{\"msg:\":\"退款服务不可用\"}").toUtf8();
......
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