using BTCPayServer.Client;
using BTCPayServer.Client.Models;
namespace LittleShop.Testing;
///
/// Test script to verify BTCPay Server connection and store configuration
/// Run this after configuring your BTCPay Server credentials
///
public class BTCPayConnectionTest
{
public static async Task TestConnection(string baseUrl, string apiKey, string storeId)
{
try
{
Console.WriteLine("Testing BTCPay Server connection...");
Console.WriteLine($"Base URL: {baseUrl}");
Console.WriteLine($"Store ID: {storeId}");
Console.WriteLine();
var client = new BTCPayServerClient(new Uri(baseUrl), apiKey);
// Test 1: Get server info
Console.WriteLine("1. Testing server connection...");
var serverInfo = await client.GetServerInfo();
Console.WriteLine($" ✅ Connected to BTCPay Server v{serverInfo.Version}");
Console.WriteLine($" Supported cryptocurrencies: {string.Join(", ", serverInfo.SupportedPaymentMethods)}");
Console.WriteLine();
// Test 2: Get store information
Console.WriteLine("2. Testing store access...");
var store = await client.GetStore(storeId);
Console.WriteLine($" ✅ Store found: {store.Name}");
Console.WriteLine($" Store website: {store.Website}");
Console.WriteLine();
// Test 3: Test invoice creation
Console.WriteLine("3. Testing invoice creation...");
var invoiceRequest = new CreateInvoiceRequest
{
Amount = 0.001m,
Currency = "BTC",
Metadata = new Dictionary
{
["orderId"] = "TEST-001",
["description"] = "BTCPay Server connection test"
}
};
var invoice = await client.CreateInvoice(storeId, invoiceRequest);
Console.WriteLine($" ✅ Test invoice created: {invoice.Id}");
Console.WriteLine($" Invoice status: {invoice.Status}");
Console.WriteLine($" Payment URL: {invoice.CheckoutLink}");
Console.WriteLine();
// Test 4: Get invoice details
Console.WriteLine("4. Testing invoice retrieval...");
var retrievedInvoice = await client.GetInvoice(storeId, invoice.Id);
Console.WriteLine($" ✅ Invoice retrieved: {retrievedInvoice.Id}");
Console.WriteLine($" Amount: {retrievedInvoice.Amount} {retrievedInvoice.Currency}");
Console.WriteLine();
Console.WriteLine("🎉 All tests passed! BTCPay Server integration is ready.");
}
catch (Exception ex)
{
Console.WriteLine($"❌ Test failed: {ex.Message}");
if (ex.InnerException != null)
{
Console.WriteLine($" Inner exception: {ex.InnerException.Message}");
}
}
}
// Example usage - replace with your actual credentials
public static async Task Main(string[] args)
{
const string baseUrl = "https://pay.silverlabs.uk";
const string apiKey = "YOUR_API_KEY_HERE";
const string storeId = "YOUR_STORE_ID_HERE";
if (apiKey == "YOUR_API_KEY_HERE" || storeId == "YOUR_STORE_ID_HERE")
{
Console.WriteLine("Please update the credentials in this file before running the test.");
return;
}
await TestConnection(baseUrl, apiKey, storeId);
}
}