Fix SilverPay payment integration JSON serialization

- Changed JSON naming policy from CamelCase to SnakeCaseLower for SilverPay API compatibility
- Fixed field name from 'fiat_amount' to 'amount' in request body
- Used unique payment ID instead of order ID to avoid duplicate external_id conflicts
- Modified SilverPayApiResponse to handle string amounts from API
- Added [JsonIgnore] attributes to computed properties to prevent JSON serialization conflicts
- Fixed test compilation errors (mock service and enum casting issues)
- Updated SilverPay endpoint to http://10.0.0.52:8001/

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2025-09-22 04:38:28 +01:00
parent 034b8facee
commit 5138242a99
5 changed files with 23 additions and 11 deletions

View File

@@ -57,8 +57,11 @@ public class CryptoPaymentService : ICryptoPaymentService
// Use SilverPAY
_logger.LogInformation("Creating SilverPAY order for {Currency}", currency);
// Generate payment ID first to use as external_id
var paymentId = Guid.NewGuid();
var silverPayOrder = await _silverPayService.CreateOrderAsync(
order.Id.ToString(),
paymentId.ToString(), // Use unique payment ID instead of order ID
order.TotalAmount,
currency,
$"Order #{order.Id} - {order.Items.Count} items",
@@ -67,7 +70,7 @@ public class CryptoPaymentService : ICryptoPaymentService
var cryptoPayment = new CryptoPayment
{
Id = Guid.NewGuid(),
Id = paymentId, // Use the same payment ID
OrderId = orderId,
Currency = currency,
WalletAddress = silverPayOrder.PaymentAddress,