diff --git a/MidrandBooksApi/MidrandBooksApi.csproj b/MidrandBooksApi/MidrandBooksApi.csproj
index d075a31..70c4a5a 100644
--- a/MidrandBooksApi/MidrandBooksApi.csproj
+++ b/MidrandBooksApi/MidrandBooksApi.csproj
@@ -54,13 +54,13 @@
-
+
-
+
diff --git a/MidrandBooksApi/Payments/Payfast/PayfastCheckoutEndpoint.cs b/MidrandBooksApi/Payments/Payfast/PayfastCheckoutEndpoint.cs
deleted file mode 100644
index eb76c82..0000000
--- a/MidrandBooksApi/Payments/Payfast/PayfastCheckoutEndpoint.cs
+++ /dev/null
@@ -1,45 +0,0 @@
-using LiteCharms.Features.Abstractions;
-using LiteCharms.Features.Api;
-using LiteCharms.Features.Extensions;
-using LiteCharms.Features.MidrandBooks.Customers;
-using LiteCharms.Features.MidrandBooks.Payments;
-using LiteCharms.Features.MidrandBooks.Payments.Models;
-using LiteCharms.Features.MidrandBooks.Products;
-using static LiteCharms.Features.Extensions.Api;
-
-namespace MidrandBooksApi.Payments.Payfast;
-
-[ApiVersionTarget(1)]
-public sealed class PayfastCheckoutEndpoint : IEndpoint
-{
- private static readonly ActivitySource PaymentActivitySource = new("MidrandBooksApi.Payments");
-
- public void Map(IEndpointRouteBuilder builder)
- {
- builder.MapPost("payments/payfast/checkout", ([FromBody, Required] Cart shoppingCart, ProductService productService,
- PaymentService paymentService, PayfastService payfastService, CustomerService customerService, IJobOrchestrator jobOrchestrator,
- CancellationToken cancellationToken = default) =>
- {
- using Activity? activity = PaymentActivitySource.StartActivity("GeneratePayfastCheckoutUrl", ActivityKind.Server);
-
- activity?.SetTag("messaging.system", "midrandbooks-api");
- activity?.SetTag("messaging.destination.name", "payments/payfast/checkout");
-
- // do work
-
- var checkoutUrl = string.Empty;
-
- activity?.SetStatus(ActivityStatusCode.Ok);
-
- return Results.Ok(checkoutUrl);
- })
- .RequireAuthorization()
- .WithDescription("Payfact checkout processor back-channel.")
- .WithName(typeof(PayfastCheckoutEndpoint).ToEndpointName())
- .MapToApiVersion(new ApiVersion(1))
- .Produces(StatusCodes.Status200OK)
- .Produces(StatusCodes.Status400BadRequest)
- .Produces(StatusCodes.Status401Unauthorized)
- .WithTags(Api.Payments); ;
- }
-}
diff --git a/MidrandBooksApi/Program.cs b/MidrandBooksApi/Program.cs
index cecd562..d594084 100644
--- a/MidrandBooksApi/Program.cs
+++ b/MidrandBooksApi/Program.cs
@@ -22,7 +22,9 @@ builder.Services.AddQuartzSchedulerClient(MidrandShopSchedulerName, builder.Conf
builder.Services.AddEmailServices(builder.Configuration);
builder.Services.AddEmailServiceBus();
+builder.Services.AddHttpClient();
builder.Services.AddShopServices();
+builder.Services.AddPayfastServices(builder.Configuration);
builder.Services.AddHashServices(builder.Configuration);
builder.Services.AddMidrandShopDatabase(builder.Configuration);
diff --git a/MidrandBooksApi/appsettings.json b/MidrandBooksApi/appsettings.json
index db2d93e..42c64a4 100644
--- a/MidrandBooksApi/appsettings.json
+++ b/MidrandBooksApi/appsettings.json
@@ -1,17 +1,20 @@
{
- "LiteCharmsSettings": {
+ "PayfastSettings": {
+ "CheckoutUrl": "https://sandbox.payfast.co.za/eng/process",
+ "ValidHosts": [
+ "www.payfast.co.za",
+ "sandbox.payfast.co.za",
+ "w1w.payfast.co.za",
+ "w2w.payfast.co.za",
+ "ips.payfast.co.za",
+ "api.payfast.co.za",
+ "payment.payfast.io"
+ ]
+ },
+ "LiteCharmsSettings": {
"Authority": "https://sts.security.khongisa.co.za",
"Audience": "midrandbooks-api"
},
- "ValidPayfastHosts": [
- "www.payfast.co.za",
- "sandbox.payfast.co.za",
- "w1w.payfast.co.za",
- "w2w.payfast.co.za",
- "ips.payfast.co.za",
- "api.payfast.co.za",
- "payment.payfast.io"
- ],
"HasherSettings": {
"MinHashLength": 11
},
@@ -22,7 +25,6 @@
"CdnBaseUrl": "https://bookshop.cdn.khongisa.co.za"
},
"Monitoring": {
- "ApiKey": "",
"Address": "http://aspire-dashboard-service.aspire.svc.cluster.local:18889",
"ServiceName": "MidrandBooks.DEV"
},
diff --git a/midrandbooksapi-uat.yml b/midrandbooksapi-uat.yml
index 56b7fc6..cbd255d 100644
--- a/midrandbooksapi-uat.yml
+++ b/midrandbooksapi-uat.yml
@@ -19,13 +19,14 @@ data:
BookshopS3Settings__Region: "garage"
BookshopS3Settings__BucketName: "bookshop"
BookshopS3Settings__CdnBaseUrl: "https://bookshop.cdn.khongisa.co.za"
- ValidPayfastHosts__0: "www.payfast.co.za"
- ValidPayfastHosts__1: "sandbox.payfast.co.za"
- ValidPayfastHosts__2: "w1w.payfast.co.za"
- ValidPayfastHosts__3: "w2w.payfast.co.za"
- ValidPayfastHosts__4: "ips.payfast.co.za"
- ValidPayfastHosts__5: "api.payfast.co.za"
- ValidPayfastHosts__6: "payment.payfast.io"
+ PayfastSettings__CheckoutUrl: "https://sandbox.payfast.co.za/eng/process"
+ PayfastSettings__ValidHosts__0: "www.payfast.co.za"
+ PayfastSettings__ValidHosts__1: "sandbox.payfast.co.za"
+ PayfastSettings__ValidHosts__2: "w1w.payfast.co.za"
+ PayfastSettings__ValidHosts__3: "w2w.payfast.co.za"
+ PayfastSettings__ValidHosts__4: "ips.payfast.co.za"
+ PayfastSettings__ValidHosts__5: "api.payfast.co.za"
+ PayfastSettings__ValidHosts__6: "payment.payfast.io"
LiteCharmsSettings__Authority: "https://sts.security.khongisa.co.za"
LiteCharmsSettings__Audience: "midrandbooks-api"
---
@@ -39,12 +40,14 @@ data:
connection-string: SG9zdD0xOTIuMTY4LjEuMTcwO0RhdGFiYXNlPW1pZHJhbmRzaG9wLWRldjtVc2VybmFtZT1taWRyYW5kc2hvcC1kZXYtdXNlcjtQYXNzd29yZD1hUFh5a0tnM3RTOWNtRDtQZXJzaXN0IFNlY3VyaXR5IEluZm89VHJ1ZQ==
connection-string-quartz: SG9zdD0xOTIuMTY4LjEuMTcwO0RhdGFiYXNlPXNjaGVkdWxlci1kZXY7VXNlcm5hbWU9c2NoZWR1bGVyLWRldi11c2VyO1Bhc3N3b3JkPWtWVm1vV0tKM3h6Z1FYO1BlcnNpc3QgU2VjdXJpdHkgSW5mbz1UcnVl
aspire-apikey: bWMzRzYzSzJqNVpPRXNpMEFqTW9qTFRYbTFLRVpGY3R6SUlqU3dEaVRHdXQ4cUdTa1B1V3d4R1AxUmJzY0pVbw==
- hasher-salt: VEdsbmFIUWdRMmhoY20xekxDQk5hV1J5WVc1a1FtOXZhM01nYldGclpTQnNiM1J6SUc5bUlHMXZibVY1SUdGdVpDQmhjbVVnWVNCemRXTmpaWE56Wm5Wc0lIWnBjbUZzSUhOMGIzSjVJR2x1SUZOdmRYUm9JRUZtY21sallRPT0=
- hasher-payfastpassphrase: OUdBSVIwdFdwaFgwcU8=
+ hasher-salt: VEdsbmFIUWdRMmhoY20xekxDQk5hV1J5WVc1a1FtOXZhM01nYldGclpTQnNiM1J6SUc5bUlHMXZibVY1SUdGdVpDQmhjbVVnWVNCemRXTmpaWE56Wm5Wc0lIWnBjbUZzSUhOMGIzSjVJR2x1SUZOdmRYUm9JRUZtY21sallRPT0=
bookshop-s3-accesskey: R0s1MTRkMmNlOGRjNjkyMzdhMDVjMDFlZWY=
bookshop-s3-secretkey: ZWFhZmVkYTFhZWQ0MDllY2ZlNjA3MTRlY2RhNTQ5YjgyYmRmNWEzZGFmOWYxOGRkNjFmNjZiNDk3M2E2NDgyZQ==
litecharms-clientid: bWlkcmFuZGJvb2tzLWFwaQ==
litecharms-clientsecret: c2VjcmV0X2YzZjA0YWNhYTMzNmVlOTEzZDRjNjdlYmQwOTE1ZWFlYzQ0NzdmYTkwOTdlYTJhYzkyZGE4ZDc0NjgzZTAyNTU=
+ payfast-passphrase: OUdBSVIwdFdwaFgwcU8=
+ payfast-merchantid: MTAwNDkzMDc=
+ payfast-merchantkey: anU2bmF2bjBqY2JmMA==
---
apiVersion: v1
kind: PersistentVolumeClaim
@@ -122,11 +125,21 @@ spec:
secretKeyRef:
name: midrandbooksapi-secrets
key: hasher-salt
- - name: HasherSettings__PayfastPassphrase
+ - name: PayfastSettings__Passphrase
valueFrom:
secretKeyRef:
- name: midrandbooksapi-secrets
- key: hasher-payfastpassphrase
+ name: scheduler-secrets
+ key: payfast-passphrase
+ - name: PayfastSettings__MerchantId
+ valueFrom:
+ secretKeyRef:
+ name: scheduler-secrets
+ key: payfast-merchantid
+ - name: PayfastSettings__MerchantKey
+ valueFrom:
+ secretKeyRef:
+ name: scheduler-secrets
+ key: payfast-merchantkey
- name: ConnectionStrings__PostgresScheduler
valueFrom:
secretKeyRef: