Skip to content

feat: add payment providers Adyen, PayU, Przelewy24, Tpay, HotPay, PayNow, Revolut#25

Merged
nieprzecietny merged 5 commits intomasterfrom
feature/additional-payment-providers
Mar 24, 2026
Merged

feat: add payment providers Adyen, PayU, Przelewy24, Tpay, HotPay, PayNow, Revolut#25
nieprzecietny merged 5 commits intomasterfrom
feature/additional-payment-providers

Conversation

@szeregowy-agent
Copy link
Copy Markdown
Contributor

Nowe providery płatności

Implementuje 7 nowych bibliotek IPaymentProvider analogicznie do istniejących CashBill i Stripe.

Providery

Provider Pakiet Autoryzacja webhooka
Adyen Adyen v14.* (oficjalny SDK) HMAC-SHA256
PayU HttpClient MD5/SHA256 OpenPayU-Signature
Przelewy24 HttpClient SHA384 CRC sign
Tpay HttpClient SHA256 SecurityCode
HotPay HttpClient SHA256 hash
PayNow (mBank) HttpClient HMAC-SHA256 Signature header
Revolut HttpClient HMAC-SHA256 Revolut-Signature (v1=)

Architektura (każdy provider)

  • Single-file: Options, Interface, Caller, Provider, Extensions, ConfigureOptions
  • IHttpClientFactory z nazwanym klientem (poza Adyen który używa własnego SDK)
  • Per-request weryfikacja podpisu webhooka
  • GetPaymentChannels() — hardcoded lista (analog Stripe)
  • Konfiguracja z sekcji Payments:Providers:<Name>
  • Multi-TFM: net8.0;net9.0;net10.0

Testy

  • MultiProviderPaymentTest.cs — smoke testy (rejestracja providerów, listy kanałów, invalid webhook → Rejected)
  • 2 integracyjne (Skip by default) dla PayU i Revolut

Konfiguracja

Placeholder keys dodane do appsettings.json w projekcie testowym — zastąpić prawdziwymi credentials sandbox.

Szeregowy added 2 commits March 24, 2026 15:11
…yNow, Revolut

Nowe biblioteki implementujące IPaymentProvider:

- Adyen       — oficjalny SDK (Adyen v14), Sessions API, HMAC-SHA256 webhook
- PayU        — OAuth2 + REST API v2.1, MD5/SHA256 OpenPayU-Signature
- Przelewy24  — REST API v1, SHA384 CRC sign verification
- Tpay        — OAuth2 + REST API, SHA256 SecurityCode webhook
- HotPay      — SHA256 hash, redirect flow
- PayNow (mBank) — REST API v2, HMAC-SHA256 Signature header
- Revolut     — REST API 1.0, HMAC-SHA256 Revolut-Signature (v1=<hex>)

Każdy provider:
- Single-file (Options, Interface, Caller, Provider, Extensions, ConfigureOptions)
- IHttpClientFactory z nazwanym klientem (poza Adyen)
- Per-request weryfikacja podpisu webhooka
- GetPaymentChannels() z hardcoded listą (analog Stripe)
- Konfiguracja z sekcji Payments:Providers:<Name>

Testy:
- MultiProviderPaymentTest.cs — smoke testy (channels, providers list, invalid webhook → Rejected)
- 2 integracyjne (Skip) dla PayU i Revolut

Pozostałe zmiany:
- TailoredApps.Shared.sln — 7 nowych wpisów projektów
- test csproj — 7 nowych ProjectReference
- appsettings.json — placeholder config dla każdego providera
Błędy kompilacji:
- AdyenProvider.cs: usunięto Adyen SDK (Adyen.Model.Enum.Environment nie istnieje w v14);
  zastąpiono czystym HttpClient → Adyen Checkout REST API v71/sessions
- Adyen.csproj: usunięto pakiet Adyen v14, dodano Microsoft.Extensions.Http
- PayUProvider.cs: PaymentModel.Installment → PaymentModel.OneTime (enum nie ma Installment)

CS1591 XML docs (pre-existing, brak komentarzy):
- TailoredApps.Shared.Email.Models/MailMessage.cs
- TailoredApps.Shared.MediatR.Caching/ICachableRequest.cs
- TailoredApps.Shared.MediatR/Caching/Cache.cs
- TailoredApps.Shared.MediatR/DI/PipelineRegistration.cs
- TailoredApps.Shared.MediatR/Interfaces/Caching/ICache.cs
- TailoredApps.Shared.MediatR/Interfaces/Caching/ICachePolicy.cs
- TailoredApps.Shared.MediatR/Interfaces/DI/IPipelineRegistration.cs
- TailoredApps.Shared.MediatR/Interfaces/Handlers/IFallbackHandler.cs
- TailoredApps.Shared.MediatR/Interfaces/Messages/IRetryableRequest.cs
- TailoredApps.Shared.MediatR/PipelineBehaviours/FallbackBehavior.cs
- TailoredApps.Shared.MediatR/PipelineBehaviours/LoggingBehavior.cs
- TailoredApps.Shared.MediatR/PipelineBehaviours/RetryBehavior.cs
- TailoredApps.Shared.MediatR/PipelineBehaviours/ValidationBehavior.cs
- TailoredApps.Shared.Querying/IPagedResult.cs
- TailoredApps.Shared.Querying/PagedAndSortedQuery.cs (wszystkie interfejsy)
- TailoredApps.Shared.Querying/QueryBase.cs
- TailoredApps.Shared.Querying/QueryMap.cs
- TailoredApps.Shared.Querying/SortDirection.cs

CS0108 new keyword (PagedAndSortedQuery.cs):
- IPagedAndSortedQuery<TQuery>: Page, Count, IsPagingSpecified, SortField, SortDir,
  IsSortingSpecified, Filter teraz mają słowo kluczowe new
Copy link
Copy Markdown
Member

@nieprzecietny nieprzecietny left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lecim

Naprawa błędu testu:
- MultiProviderPaymentTest.cs: Provider_HasCorrectUrl → Provider_HasCorrectName
  (PaymentProvider model nie ma property Url, tylko Id i Name)

XML docs — brakujące komentarze w 6 providerach:
- PayUProvider.cs (pełne docs z summary + inheritdoc)
- Przelewy24Provider.cs, TpayProvider.cs, HotPayProvider.cs,
  PayNowProvider.cs, RevolutProvider.cs (docs via skrypt)
- StripeProvider.cs, StripeServiceCaller.cs, StripeServiceOptions.cs

XML docs — pre-existing projekty Email:
- SmtpEmailProvider.cs, SmtpEmailServiceOptions.cs
- IEmailProvider.cs, EmailServiceToConsolleWritter.cs
- MailMessageBuilder/* (DefaultMessageBuilder, IMailMessageBuilder,
  TokenReplacingMailMessageBuilder, TokenReplacingMailMessageBuilderOptions)

CashBill:
- <NoWarn>SYSLIB0014</NoWarn> — WebRequest.Create obsolete warning
@codecov
Copy link
Copy Markdown

codecov bot commented Mar 24, 2026

Codecov Report

❌ Patch coverage is 25.38330% with 876 lines in your changes missing coverage. Please review.
✅ Project coverage is 34.34%. Comparing base (bdd5bf4) to head (f14270c).
⚠️ Report is 8 commits behind head on master.

Files with missing lines Patch % Lines
...Apps.Shared.Payments.Provider.PayU/PayUProvider.cs 30.05% 114 Missing and 7 partials ⚠️
...Payments.Provider.Przelewy24/Przelewy24Provider.cs 28.38% 107 Missing and 4 partials ⚠️
...Apps.Shared.Payments.Provider.Tpay/TpayProvider.cs 29.57% 96 Missing and 4 partials ⚠️
...ps.Shared.Payments.Provider.Adyen/AdyenProvider.cs 34.04% 88 Missing and 5 partials ⚠️
....Shared.Payments.Provider.PayNow/PayNowProvider.cs 32.23% 78 Missing and 4 partials ⚠️
...hared.Payments.Provider.Revolut/RevolutProvider.cs 32.14% 70 Missing and 6 partials ⚠️
src/TailoredApps.Shared.Email/SmtpEmailProvider.cs 0.00% 50 Missing ⚠️
....Shared.Payments.Provider.HotPay/HotPayProvider.cs 43.02% 43 Missing and 6 partials ⚠️
...Shared.MediatR/PipelineBehaviours/RetryBehavior.cs 0.00% 32 Missing ⚠️
...oredApps.Shared.MediatR/DI/PipelineRegistration.cs 0.00% 27 Missing ⚠️
... and 14 more
Additional details and impacted files
@@            Coverage Diff             @@
##           master      #25      +/-   ##
==========================================
+ Coverage   34.32%   34.34%   +0.02%     
==========================================
  Files          92       99       +7     
  Lines        2048     2594     +546     
  Branches      131      222      +91     
==========================================
+ Hits          703      891     +188     
- Misses       1334     1655     +321     
- Partials       11       48      +37     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

Szeregowy added 2 commits March 24, 2026 15:52
Dopisane brakujące summary na poziomie klasy/interfejsu (skrypt nie łapał
deklaracji typów — tylko members):
- IEmailProvider, EmailServiceToConsolleWritter
- IMailMessageBuilder, DefaultMessageBuilder
- TokenReplacingMailMessageBuilder, TokenReplacingMailMessageBuilderOptions
@nieprzecietny nieprzecietny merged commit 66ff708 into master Mar 24, 2026
2 of 3 checks passed
szeregowy-agent pushed a commit that referenced this pull request Mar 24, 2026
Commity które nie weszły przy merge PR #25 (branch był na f14270c):
- XML docs: ExceptionHandling (IExceptionHandlingProvider, IExceptionHandlingOptionsBuilder, ExceptionOccuredResult)
- XML docs: SmtpEmailConfigureOptions
- XML docs: wszystkie 7 providerów (Adyen, PayU, P24, Tpay, HotPay, PayNow, Revolut)
- XML docs: Stripe, Email, MediatR, Querying
- CashBill: <NoWarn>SYSLIB0014</NoWarn>
- Testy: ProviderUnitTests.cs (65+ testów z Moq)
- Testy: ServiceCallerUnitTests.cs (~45 testów ServiceCallerów — czyste funkcje)
- Tests.csproj: Moq v4 dependency
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants