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: