Added payment gateway ledger service to payments feature
This commit is contained in:
@@ -1,6 +1,5 @@
|
||||
using LiteCharms.Features.Hasher;
|
||||
using LiteCharms.Features.Hasher.Configuration;
|
||||
using LiteCharms.Features.Models;
|
||||
|
||||
namespace LiteCharms.Features.Extensions;
|
||||
|
||||
@@ -20,83 +19,5 @@ public static class Hash
|
||||
services.AddSingleton<HashService>();
|
||||
|
||||
return services;
|
||||
}
|
||||
|
||||
public static string ToRawPayfastPayload(this PayfastWebhookPayload input, string passphrase)
|
||||
{
|
||||
var parameters = new List<string>();
|
||||
|
||||
if (!string.IsNullOrWhiteSpace(input.Amount))
|
||||
parameters.Add($"amount={WebUtility.UrlEncode(input.Amount)}");
|
||||
|
||||
if (!string.IsNullOrWhiteSpace(input.ItemName))
|
||||
parameters.Add($"item_name={WebUtility.UrlEncode(input.ItemName)}");
|
||||
|
||||
if (!string.IsNullOrWhiteSpace(input.MPaymentId))
|
||||
parameters.Add($"m_payment_id={WebUtility.UrlEncode(input.MPaymentId)}");
|
||||
|
||||
string payload = string.Join("&", parameters);
|
||||
|
||||
if (!string.IsNullOrWhiteSpace(passphrase))
|
||||
payload += $"&passphrase={WebUtility.UrlEncode(passphrase)}";
|
||||
|
||||
return payload;
|
||||
}
|
||||
|
||||
public static (PayfastWebhookPayload Payload, string Passphrase) FromRawPayfastPayload(this string rawPayload)
|
||||
{
|
||||
string passphrase = string.Empty;
|
||||
var payload = new PayfastWebhookPayload();
|
||||
|
||||
if (string.IsNullOrWhiteSpace(rawPayload)) return (payload, passphrase);
|
||||
|
||||
var segments = rawPayload.Split('&', StringSplitOptions.RemoveEmptyEntries);
|
||||
|
||||
foreach (var segment in segments)
|
||||
{
|
||||
int delimiterIndex = segment.IndexOf('=');
|
||||
if (delimiterIndex == -1)
|
||||
continue;
|
||||
|
||||
string key = segment[..delimiterIndex].Trim();
|
||||
string rawValue = segment[(delimiterIndex + 1)..];
|
||||
|
||||
string decodedValue = WebUtility.UrlDecode(rawValue);
|
||||
|
||||
switch (key.ToLowerInvariant())
|
||||
{
|
||||
case "amount":
|
||||
payload.Amount = decodedValue;
|
||||
break;
|
||||
case "item_name":
|
||||
payload.ItemName = decodedValue;
|
||||
break;
|
||||
case "m_payment_id":
|
||||
payload.MPaymentId = decodedValue;
|
||||
break;
|
||||
case "passphrase":
|
||||
passphrase = decodedValue;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return (payload, passphrase);
|
||||
}
|
||||
|
||||
public static (PayfastWebhookPayload Payload, string Passphrase) FromRawPayfastPayload(this IFormCollection form)
|
||||
{
|
||||
string passphrase = string.Empty;
|
||||
var payload = new PayfastWebhookPayload();
|
||||
|
||||
if (form.IsNullOrEmpty()) return (payload, passphrase);
|
||||
|
||||
payload = new PayfastWebhookPayload
|
||||
{
|
||||
Amount = form.TryGetValue("amount", out var amountValues) ? amountValues.ToString() : null,
|
||||
ItemName = form.TryGetValue("item_name", out var itemValues) ? itemValues.ToString() : null,
|
||||
MPaymentId = form.TryGetValue("m_payment_id", out var paymentIdValues) ? paymentIdValues.ToString() : null,
|
||||
};
|
||||
|
||||
return (payload, passphrase);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user