diff --git a/Libraries/SPTarkov.Server.Core/Controllers/RagfairController.cs b/Libraries/SPTarkov.Server.Core/Controllers/RagfairController.cs
index 5e2d69e2..a607935b 100644
--- a/Libraries/SPTarkov.Server.Core/Controllers/RagfairController.cs
+++ b/Libraries/SPTarkov.Server.Core/Controllers/RagfairController.cs
@@ -864,7 +864,7 @@ public class RagfairController(
// Cleanup of cache now we've used the tax value from it
ragfairTaxService.ClearStoredOfferTaxById(requestRootItemId);
- var buyTradeRequest = CreateBuyTradeRequestObject(CurrencyType.RUB, tax.Value);
+ var buyTradeRequest = CreateBuyTradeRequestObject(CurrencyType.RUB, tax.Value, pmcData.Id.Value);
paymentService.PayMoney(pmcData, buyTradeRequest, sessionId, output);
if (output.Warnings.Count > 0)
{
@@ -1069,7 +1069,7 @@ public class RagfairController(
sellInOncePiece
);
- var request = CreateBuyTradeRequestObject(CurrencyType.RUB, tax);
+ var request = CreateBuyTradeRequestObject(CurrencyType.RUB, tax, pmcData.Id.Value);
paymentService.PayMoney(pmcData, request, sessionId, output);
if (output.Warnings.Count > 0)
{
@@ -1088,12 +1088,13 @@ public class RagfairController(
///
/// What currency: RUB, EURO, USD
/// Amount of currency
+ /// Players id
/// ProcessBuyTradeRequestData
- protected ProcessBuyTradeRequestData CreateBuyTradeRequestObject(CurrencyType currency, double value)
+ protected ProcessBuyTradeRequestData CreateBuyTradeRequestObject(CurrencyType currency, double value, MongoId pmcId)
{
return new ProcessBuyTradeRequestData
{
- TransactionId = "ragfair",
+ TransactionId = pmcId,
Action = "TradingConfirm",
SchemeItems = [new IdWithCount { Id = currency.GetCurrencyTpl(), Count = Math.Round(value) }],
Type = string.Empty,
diff --git a/Libraries/SPTarkov.Server.Core/Controllers/TradeController.cs b/Libraries/SPTarkov.Server.Core/Controllers/TradeController.cs
index facb74ae..83fe65de 100644
--- a/Libraries/SPTarkov.Server.Core/Controllers/TradeController.cs
+++ b/Libraries/SPTarkov.Server.Core/Controllers/TradeController.cs
@@ -87,10 +87,14 @@ public class TradeController(
foreach (var offer in request.Offers)
{
- var fleaOffer = ragfairServer.GetOffer(offer.Id);
+ var fleaOffer = ragfairServer.GetOffer(new MongoId(offer.Id));
if (fleaOffer is null)
{
- return httpResponseUtil.AppendErrorToOutput(output, $"Offer with ID {offer.Id} not found", BackendErrorCodes.OfferNotFound);
+ return httpResponseUtil.AppendErrorToOutput(
+ output,
+ $"Offer with ID: {offer.Id} not found",
+ BackendErrorCodes.OfferNotFound
+ );
}
if (offer.Count == 0)
@@ -156,7 +160,7 @@ public class TradeController(
var buyData = new ProcessBuyTradeRequestData
{
Action = "TradingConfirm",
- Type = "buy_from_ragfair",
+ Type = "buy_from_ragfair_trader",
TransactionId = fleaOffer.User.Id,
ItemId = fleaOffer.Root,
Count = requestOffer.Count,
@@ -188,8 +192,8 @@ public class TradeController(
var buyData = new ProcessBuyTradeRequestData
{
Action = "TradingConfirm",
- Type = "buy_from_ragfair",
- TransactionId = "ragfair",
+ Type = "buy_from_ragfair_pmc",
+ TransactionId = fleaOffer.User.Id,
ItemId = fleaOffer.Id, // Store ragfair offerId in buyRequestData.item_id
Count = requestOffer.Count,
SchemeId = 0,
diff --git a/Libraries/SPTarkov.Server.Core/Helpers/TradeHelper.cs b/Libraries/SPTarkov.Server.Core/Helpers/TradeHelper.cs
index 80c65ee9..b256a5ad 100644
--- a/Libraries/SPTarkov.Server.Core/Helpers/TradeHelper.cs
+++ b/Libraries/SPTarkov.Server.Core/Helpers/TradeHelper.cs
@@ -57,7 +57,7 @@ public class TradeHelper(
List- offerItems = [];
Action? buyCallback;
- if (string.Equals(buyRequestData.TransactionId, "ragfair", StringComparison.OrdinalIgnoreCase))
+ if (string.Equals(buyRequestData.Type, "buy_from_ragfair_pmc", StringComparison.OrdinalIgnoreCase))
{
// Called when player purchases PMC offer from ragfair
buyCallback = buyCount =>
@@ -129,6 +129,7 @@ public class TradeHelper(
}
else
{
+ // Can only be trader purchase
buyCallback = buyCount =>
{
// Update assort/flea item values
diff --git a/Libraries/SPTarkov.Server.Core/Models/Eft/Insurance/InsureRequestData.cs b/Libraries/SPTarkov.Server.Core/Models/Eft/Insurance/InsureRequestData.cs
index 6baf1aa2..8f98df86 100644
--- a/Libraries/SPTarkov.Server.Core/Models/Eft/Insurance/InsureRequestData.cs
+++ b/Libraries/SPTarkov.Server.Core/Models/Eft/Insurance/InsureRequestData.cs
@@ -7,7 +7,7 @@ namespace SPTarkov.Server.Core.Models.Eft.Insurance;
public record InsureRequestData : InventoryBaseActionRequestData
{
[JsonPropertyName("tid")]
- public string? TransactionId { get; set; }
+ public MongoId TransactionId { get; set; }
[JsonPropertyName("items")]
public List? Items { get; set; }
diff --git a/Libraries/SPTarkov.Server.Core/Models/Eft/Trade/ProcessBaseTradeRequestData.cs b/Libraries/SPTarkov.Server.Core/Models/Eft/Trade/ProcessBaseTradeRequestData.cs
index 1dfecbc5..294384dc 100644
--- a/Libraries/SPTarkov.Server.Core/Models/Eft/Trade/ProcessBaseTradeRequestData.cs
+++ b/Libraries/SPTarkov.Server.Core/Models/Eft/Trade/ProcessBaseTradeRequestData.cs
@@ -1,4 +1,5 @@
using System.Text.Json.Serialization;
+using SPTarkov.Server.Core.Models.Common;
using SPTarkov.Server.Core.Models.Eft.Inventory;
namespace SPTarkov.Server.Core.Models.Eft.Trade;
@@ -9,5 +10,5 @@ public record ProcessBaseTradeRequestData : InventoryBaseActionRequestData
public string? Type { get; set; }
[JsonPropertyName("tid")]
- public string? TransactionId { get; set; }
+ public MongoId TransactionId { get; set; }
}
diff --git a/Libraries/SPTarkov.Server.Core/Services/PaymentService.cs b/Libraries/SPTarkov.Server.Core/Services/PaymentService.cs
index 660fd4b3..82082b7d 100644
--- a/Libraries/SPTarkov.Server.Core/Services/PaymentService.cs
+++ b/Libraries/SPTarkov.Server.Core/Services/PaymentService.cs
@@ -76,17 +76,13 @@ public class PaymentService(
// Track the total amount of all currencies.
var totalCurrencyAmount = 0d;
- // TODO: PMC flea offers use a transaction id of "ragfair", hacky
- var isPmcFleaPurchase = request.TransactionId == "ragfair";
- var requestTransactionId = isPmcFleaPurchase ? MongoId.Empty() : new MongoId(request.TransactionId);
+ var requestTransactionId = new MongoId(request.TransactionId);
// Who is recipient of money player is sending
- var payToTrader = !isPmcFleaPurchase && traderHelper.TraderExists(requestTransactionId);
+ var payToTrader = request.Type == "buy_from_ragfair_trader" && traderHelper.TraderExists(requestTransactionId);
// May need to convert to trader currency
- var trader = isPmcFleaPurchase
- ? new TraderBase { Currency = CurrencyType.RUB }
- : traderHelper.GetTrader(requestTransactionId, sessionID);
+ var trader = payToTrader ? traderHelper.GetTrader(requestTransactionId, sessionID) : new TraderBase { Currency = CurrencyType.RUB }; // TODO: cleanup
// Loop through each type of currency involved in the trade
foreach (var (currencyTpl, currencyAmount) in currencyAmounts)