Commit 563ebb98 by gujin.wang

1.给数据库添加一个字段,存放该订单的支付总额。2.添加对只使用卡券情况的处理逻辑 3.在支付失败的情况下,对已核销的卡券进行冲正,并从核销表中删除该券的核销记录。

parent b1ad9a9c
fmp_epay @ c988b99a
Subproject commit 868048a7f72e86ed42cb700d87ea7374f9678a9a
Subproject commit c988b99a3f696f278ec4e8ef323f37a2892f4dc0
......@@ -100,6 +100,19 @@ QJsonValue FMPRedeem::SearchJsonArray(QJsonArray& searchJson, QString searchKey)
return value;
}
QJsonObject FMPRedeem::Reverse(QJsonObject request)
{
QString apppath = QCoreApplication::applicationDirPath();
QSettings settings(QString("%1/FreemudPOS.ini").arg(apppath), QSettings::IniFormat);
_url = settings.value(FMP_INIKEY_EPAYURL).toString();
request["reqtype"] = 3;
QByteArray reqData = QJsonDocument(request).toJson(QJsonDocument::Compact);
reqData = CheckSendArray(reqData);
QJsonObject retJson = SendRequest(reqData);
FMP_DEBUG() << "Reverse " + request["transactions"].toObject()["code"].toString() + ":" << retJson;
return retJson;
}
QJsonObject FMPRedeem::Redeem(const double needPay, const QJsonArray& productsInfo)
{
FMP_DEBUG() << "Recv redeem data: " << QJsonDocument(productsInfo).toJson(QJsonDocument::Compact);
......@@ -158,6 +171,7 @@ QJsonObject FMPRedeem::Redeem(const double needPay, const QJsonArray& productsIn
QJsonObject FMPRedeem::SendRequest(const QByteArray &reqData)
{
FMP_DEBUG() << "Send data: " << reqData;
FMP_DEBUG() << "Send url: " << _url;
QJsonObject retJson;
QNetworkAccessManager nam;
......@@ -176,7 +190,6 @@ QJsonObject FMPRedeem::SendRequest(const QByteArray &reqData)
req.setHeader(QNetworkRequest::ContentLengthHeader, reqData.length());
reply = nam.post(req, reqData);
reply->deleteLater();
// 使用定时器处理超时
QEventLoop loop;
......@@ -210,7 +223,7 @@ QJsonObject FMPRedeem::SendRequest(const QByteArray &reqData)
retJson["statusCode"] = FM_API_TIMEOUT;
retJson["msg"] = QString::fromLocal8Bit("请求超时");
}
reply->deleteLater();
FMP_DEBUG() << "Server response: " << QJsonDocument(retJson).toJson(QJsonDocument::Compact);
return retJson;
}
......@@ -228,16 +241,16 @@ QJsonObject FMPRedeem::ShowForUnConsum(QJsonObject json)
if( ConsumptionDialog::ShowForUnConsum(act_name, code_name,time_name,coupon))
{
QJsonObject redeemJson;
redeemJson["ver"] = 2;
redeemJson["clientReqCount"] = (++_clientReqCount%=10000000);
redeemJson["reqtype"] = 71;
redeemJson["partnerId"] = _partner_id;
redeemJson["store_id"] = _store_id;
redeemJson["station_id"] = _station_id;
redeemJson["trans_id"] = QString::number(QDateTime::currentDateTimeUtc().toTime_t());
redeemJson["operator_id"] = _operator_id;
redeemJson["business_date"] = QDate::currentDate().toString("yyyyMMdd");
_redeem_json = QJsonObject();
_redeem_json["ver"] = 2;
_redeem_json["clientReqCount"] = (++_clientReqCount%=10000000);
_redeem_json["reqtype"] = 71;
_redeem_json["partnerId"] = _partner_id;
_redeem_json["store_id"] = _store_id;
_redeem_json["station_id"] = _station_id;
_redeem_json["trans_id"] = QString::number(QDateTime::currentDateTimeUtc().toTime_t());
_redeem_json["operator_id"] = _operator_id;
_redeem_json["business_date"] = QDate::currentDate().toString("yyyyMMdd");
if( couponType == 0){ //商品券
if(!IsContinue(SearchJsonObject(json, "paid").toInt()))
......@@ -279,7 +292,7 @@ QJsonObject FMPRedeem::ShowForUnConsum(QJsonObject json)
transaction["products"] = products;
transactions.append(transaction);
redeemJson["transactions"] = transactions;
_redeem_json["transactions"] = transactions;
}
if( couponType == 1){ //代金券
if(!IsContinue(SearchJsonObject(json, "amount").toInt()))
......@@ -297,9 +310,9 @@ QJsonObject FMPRedeem::ShowForUnConsum(QJsonObject json)
QJsonArray transactions;
transactions.append(transaction);
redeemJson["transactions"] = transactions;
_redeem_json["transactions"] = transactions;
}
QByteArray reqData = QJsonDocument(redeemJson).toJson();
QByteArray reqData = QJsonDocument(_redeem_json).toJson();
reqData = CheckSendArray(reqData);
QJsonObject redeemResult;
......@@ -379,6 +392,11 @@ QJsonObject FMPRedeem::ShowForMismatch(QJsonObject json)
return mismatch;
}
QJsonObject FMPRedeem::GetRedeemJson() const
{
return _redeem_json;
}
bool FMPRedeem::IsContinue(int couponAmount)
{
if(_needPay < couponAmount/100.0)
......
......@@ -30,6 +30,8 @@ public:
virtual ~FMPRedeem();
QJsonObject Redeem(const double needPay, const QJsonArray& productsInfo); //券码核销
QJsonObject Reverse(QJsonObject request);
QJsonObject GetRedeemJson()const;
protected:
const FMPContext GetContext() const { return _context; }
......@@ -61,6 +63,7 @@ private:
int _partner_id;
QString _url;
QJsonArray _products_info;
QJsonObject _redeem_json; //存放核销请求字符串
int _clientReqCount;
const FMPContext _context;
QPointer<FMPStartEventHandler> _ste_handler;
......
......@@ -21,6 +21,9 @@ public:
}
virtual QJsonObject Redeem(const double needPay, const QJsonArray& productsInfo) = 0; //券码核销
virtual QJsonObject Reverse(QJsonObject request) = 0; //卡券冲正
virtual QJsonObject GetRedeemJson()const = 0;
signals:
void TriggerInit();
void TriggerUninit();
......
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