mirror of
https://github.com/bitwarden/server.git
synced 2025-06-30 23:52:50 -05:00
Fix PayPal IPN Logging (#3768)
* Remove request logging, fix txn_id correlation * Respond 400 when txn_id is missing * More cleanup
This commit is contained in:
@ -75,6 +75,14 @@ public class PayPalController : Controller
|
||||
|
||||
var transactionModel = new PayPalIPNTransactionModel(requestContent);
|
||||
|
||||
_logger.LogInformation("PayPal IPN: Transaction Type = {Type}", transactionModel.TransactionType);
|
||||
|
||||
if (string.IsNullOrEmpty(transactionModel.TransactionId))
|
||||
{
|
||||
_logger.LogError("PayPal IPN: Transaction ID is missing");
|
||||
return Ok();
|
||||
}
|
||||
|
||||
var entityId = transactionModel.UserId ?? transactionModel.OrganizationId;
|
||||
|
||||
if (!entityId.HasValue)
|
||||
@ -83,7 +91,7 @@ public class PayPalController : Controller
|
||||
return BadRequest();
|
||||
}
|
||||
|
||||
var verified = await _payPalIPNClient.VerifyIPN(entityId.Value, requestContent);
|
||||
var verified = await _payPalIPNClient.VerifyIPN(transactionModel.TransactionId, requestContent);
|
||||
|
||||
if (!verified)
|
||||
{
|
||||
|
@ -2,5 +2,5 @@
|
||||
|
||||
public interface IPayPalIPNClient
|
||||
{
|
||||
Task<bool> VerifyIPN(Guid entityId, string formData);
|
||||
Task<bool> VerifyIPN(string transactionId, string formData);
|
||||
}
|
||||
|
@ -21,9 +21,9 @@ public class PayPalIPNClient : IPayPalIPNClient
|
||||
_logger = logger;
|
||||
}
|
||||
|
||||
public async Task<bool> VerifyIPN(Guid entityId, string formData)
|
||||
public async Task<bool> VerifyIPN(string transactionId, string formData)
|
||||
{
|
||||
LogInfo(entityId, $"Verifying IPN against {_ipnEndpoint}");
|
||||
LogInfo(transactionId, $"Verifying IPN against {_ipnEndpoint}");
|
||||
|
||||
if (string.IsNullOrEmpty(formData))
|
||||
{
|
||||
@ -34,8 +34,6 @@ public class PayPalIPNClient : IPayPalIPNClient
|
||||
|
||||
var requestContent = string.Concat("cmd=_notify-validate&", formData);
|
||||
|
||||
LogInfo(entityId, $"Request Content: {requestContent}");
|
||||
|
||||
requestMessage.Content = new StringContent(requestContent, Encoding.UTF8, "application/x-www-form-urlencoded");
|
||||
|
||||
var response = await _httpClient.SendAsync(requestMessage);
|
||||
@ -52,35 +50,35 @@ public class PayPalIPNClient : IPayPalIPNClient
|
||||
};
|
||||
}
|
||||
|
||||
LogError(entityId, $"Unsuccessful Response | Status Code: {response.StatusCode} | Content: {responseContent}");
|
||||
LogError(transactionId, $"Unsuccessful Response | Status Code: {response.StatusCode} | Content: {responseContent}");
|
||||
|
||||
return false;
|
||||
|
||||
bool Verified()
|
||||
{
|
||||
LogInfo(entityId, "Verified");
|
||||
LogInfo(transactionId, "Verified");
|
||||
return true;
|
||||
}
|
||||
|
||||
bool Invalid()
|
||||
{
|
||||
LogError(entityId, "Verification Invalid");
|
||||
LogError(transactionId, "Verification Invalid");
|
||||
return false;
|
||||
}
|
||||
|
||||
bool Unhandled(string content)
|
||||
{
|
||||
LogWarning(entityId, $"Unhandled Response Content: {content}");
|
||||
LogWarning(transactionId, $"Unhandled Response Content: {content}");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
private void LogInfo(Guid entityId, string message)
|
||||
=> _logger.LogInformation("Verify PayPal IPN ({RequestId}) | {Message}", entityId, message);
|
||||
private void LogInfo(string transactionId, string message)
|
||||
=> _logger.LogInformation("Verify PayPal IPN ({Id}) | {Message}", transactionId, message);
|
||||
|
||||
private void LogWarning(Guid entityId, string message)
|
||||
=> _logger.LogWarning("Verify PayPal IPN ({RequestId}) | {Message}", entityId, message);
|
||||
private void LogWarning(string transactionId, string message)
|
||||
=> _logger.LogWarning("Verify PayPal IPN ({Id}) | {Message}", transactionId, message);
|
||||
|
||||
private void LogError(Guid entityId, string message)
|
||||
=> _logger.LogError("Verify PayPal IPN ({RequestId}) | {Message}", entityId, message);
|
||||
private void LogError(string transactionId, string message)
|
||||
=> _logger.LogError("Verify PayPal IPN ({Id}) | {Message}", transactionId, message);
|
||||
}
|
||||
|
Reference in New Issue
Block a user