using Marco.Pms.Model.Employees; using Marco.Pms.Model.ViewModels.PaymentGetway; using Razorpay.Api; using System.Security.Cryptography; using System.Text; namespace Marco.Pms.Services.Helpers { public class PaymentHelper { private readonly IConfiguration _configuration; private readonly string key = "YOUR_RAZORPAY_KEY"; private readonly string secret = "YOUR_RAZORPAY_SECRET"; public PaymentHelper(IConfiguration configuration) { _configuration = configuration; key = configuration["Razorpay:Key"] ?? ""; secret = configuration["Razorpay:Secret"] ?? ""; } public CreateOrderVM CreateOrder(double amount, Employee loggedInEmployee, Guid tenantId) { RazorpayClient client = new RazorpayClient(key, secret); var receipt = $"rec_{Guid.NewGuid()}"; var length = receipt.Length; Dictionary options = new Dictionary { { "amount", amount * 100 }, // amount in paise { "currency", "INR" }, { "receipt", receipt}, { "payment_capture", 1 } }; Order order = client.Order.Create(options); var response = new CreateOrderVM { OrderId = order["id"], Key = key }; return response; } public string GetExpectedSignature(string payload) { string expectedSignature; using (var hmac = new HMACSHA256(Encoding.UTF8.GetBytes(secret))) { var hash = hmac.ComputeHash(Encoding.UTF8.GetBytes(payload)); expectedSignature = Convert.ToHexString(hash).ToLower(); } return expectedSignature; } } }