165 lines
9.2 KiB
C#
165 lines
9.2 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using gehGassi.Dto.Common;
|
|
using gehGassiApp.Core.Interfaces.Synchronization;
|
|
using gehGassiApp.Domain.Common;
|
|
using gehGassiApp.Domain.Payment;
|
|
using gehGassiApp.Domain.Users;
|
|
using gehGassiApp.Domain.Walks;
|
|
|
|
namespace gehGassiApp.Core.Interfaces
|
|
{
|
|
/// <summary>
|
|
/// Schnittstellenbeschreibung für einen Service der die Verwaltung von Zahlungen übernimmt
|
|
/// </summary>
|
|
public interface IPaymentService: ISyncPushPullService<Payout>
|
|
{
|
|
/// <summary>
|
|
/// Gibt eine Liste von Wallets eines App-Users zurück
|
|
/// </summary>
|
|
/// <param name="appUserId">Id des App-Users</param>
|
|
/// <param name="accessToken">Aktuelles Accesstoken</param>
|
|
/// <param name="token">CancellationToken</param>
|
|
/// <returns>CommunicationResult</returns>
|
|
Task<CommunicationResult<List<Wallet>>> GetWalletsAsync(string appUserId, string accessToken, CancellationToken token);
|
|
|
|
/// <summary>
|
|
/// Gibt den Saldo eines Wallets zurück
|
|
/// </summary>
|
|
/// <param name="appUserId">Id des App-Users</param>
|
|
/// <param name="walletType">Typ des Wallets</param>
|
|
/// <param name="accessToken">Aktuelles Accesstoken</param>
|
|
/// <param name="token">CancellationToken</param>
|
|
/// <returns>CommunicationResult</returns>
|
|
Task<CommunicationResult<long>> GetWalletBalanceAsync(string appUserId, WalletType walletType, string accessToken, CancellationToken token);
|
|
|
|
/// <summary>
|
|
/// Gibt die Bankverbindung eines App-Users zurück
|
|
/// </summary>
|
|
/// <param name="appUserId">Id des App-Users</param>
|
|
/// <param name="accessToken">Aktuelles Accesstoken</param>
|
|
/// <param name="token">CancellationToken</param>
|
|
/// <returns>CommunicationResult</returns>
|
|
Task<CommunicationResult<BankAccount>> GetBankAccountAsync(string appUserId, string accessToken, CancellationToken token);
|
|
|
|
/// <summary>
|
|
/// Anlegen oder Bearbeiten eines Bankkontos
|
|
/// </summary>
|
|
/// <param name="bankAccount">Bankkonto</param>
|
|
/// <param name="accessToken">Aktuelles Accesstoken</param>
|
|
/// <param name="token">CancellationToken</param>
|
|
/// <returns>CommunicationResult mit einem AppUser der die entsprechende BankId gesetzt hat</returns>
|
|
Task<CommunicationResult<AppUser>> CreateOrUpdateBankAccountAsync(BankAccount bankAccount, string accessToken, CancellationToken token);
|
|
|
|
/// <summary>
|
|
/// Authorisierung der Bezahlung eines Walks mit dem Guthaben eines Wallets
|
|
/// Das Geld wird vom Guthabenkonto auf das Transaktions-Konto gelegt
|
|
/// </summary>
|
|
/// <param name="appUserId">Id des App-Users</param>
|
|
/// <param name="walkId">Id des Walks</param>
|
|
/// <param name="ammount">Zu zahlender Bertrag</param>
|
|
/// <param name="accessToken">Aktuelles Accesstoken</param>
|
|
/// <param name="token">CancellationToken</param>
|
|
/// <returns>CommunicationResult</returns>
|
|
Task<CommunicationResult<Walk>> AuthorizeWalkWithCreditAsync(string appUserId, string walkId, decimal ammount, string accessToken, CancellationToken token);
|
|
|
|
/// <summary>
|
|
/// Authorisierung der Bezahlung eines Walks komplett mit einem Gutschein
|
|
/// </summary>
|
|
/// <param name="voucherId">Id des Gutscheins</param>
|
|
/// <param name="voucherCode">Code des Gutscheins</param>
|
|
/// <param name="appUserId">Id des App-Users</param>
|
|
/// <param name="walkId">Id des Walks</param>
|
|
/// <param name="ammount">Zu zahlender Bertrag</param>
|
|
/// <param name="accessToken">Aktuelles Accesstoken</param>
|
|
/// <param name="token">CancellationToken</param>
|
|
/// <returns>CommunicationResult</returns>
|
|
Task<CommunicationResult<Walk>> AuthorizeWalkWithVoucherAsync(string voucherId, string voucherCode, string appUserId, string walkId, decimal ammount, string accessToken, CancellationToken token);
|
|
|
|
/// <summary>
|
|
/// Einzahlen einer Summe auf das Transaktions-Konto eines App-Users mit Bezug auf einen Walk.
|
|
/// Es können gebühren sofort auf das Transaktions-Konto des Mandanten abgeführt werden
|
|
/// </summary>
|
|
/// <param name="appUserId">Id des App-Users</param>
|
|
/// <param name="walkId">Id des Walks</param>
|
|
/// <param name="ammount">Zu zahlender Bertrag</param>
|
|
/// <param name="fees">Anfallende Gebühren</param>
|
|
/// <param name="fromCredit">Betrag der zusätzlich vom Guthabenkonto bezahlt werden muss</param>
|
|
/// <param name="payInType">Typ der Einzahlung</param>
|
|
/// <param name="accessToken">Aktuelles Accesstoken</param>
|
|
/// <param name="token">CancellationToken</param>
|
|
/// <returns>CommunicationResult mit dem ReturnUrl, wenn erfolgreich</returns>
|
|
Task<CommunicationResult<string>> PayInAsync(string appUserId, string walkId, decimal ammount, decimal fees, decimal fromCredit, PayInType payInType, string accessToken, CancellationToken token);
|
|
|
|
/// <summary>
|
|
/// Holen der letzten KYC-Dokumente eines App-Users
|
|
/// </summary>
|
|
/// <param name="appUserId">Id des App-Users</param>
|
|
/// <param name="accessToken">Aktuelles Accesstoken</param>
|
|
/// <param name="token">CancellationToken</param>
|
|
/// <returns>CommunicationResult mit dem aktuell gültigen KYC-Dokument oder null, wenn keines vorhanden</returns>
|
|
Task<CommunicationResult<IdentityDocument>> GetLatestKycDocumentAsync(string appUserId, string accessToken, CancellationToken token);
|
|
|
|
/// <summary>
|
|
/// KYC-Dokument für einen App-User erstellen mit einer Seite
|
|
/// </summary>
|
|
/// <param name="appUserId">Id des App-Users</param>
|
|
/// <param name="source">Dokument-Quelle</param>
|
|
/// <param name="fileOneName">Dateiname</param>
|
|
/// <param name="fileOne">Datei als byte-Array</param>
|
|
/// <param name="accessToken">Aktuelles Accesstoken</param>
|
|
/// <param name="token">CancellationToken</param>
|
|
/// <returns>CommunicationResult mit dem aktuell erstellten KYC-Dokument</returns>
|
|
Task<CommunicationResult<IdentityDocument>> CreateKycDocumentAsync(string appUserId, IdentityDocumentSource source, string fileOneName, byte[] fileOne, string accessToken, CancellationToken token);
|
|
|
|
/// <summary>
|
|
/// KYC-Dokument für einen App-User erstellen mit zwei Seiten
|
|
/// </summary>
|
|
/// <param name="appUserId">Id des App-Users</param>
|
|
/// <param name="source">Dokument-Quelle</param>
|
|
/// <param name="fileOneName">Dateiname Datei 1</param>
|
|
/// <param name="fileOne">Datei 1 als byte-Array</param>
|
|
/// <param name="fileTwoName">Dateiname Datei 2</param>
|
|
/// <param name="fileTwo">Datei 2 als byte-Array</param>
|
|
/// <param name="accessToken">Aktuelles Accesstoken</param>
|
|
/// <param name="token">CancellationToken</param>
|
|
/// <returns>CommunicationResult mit dem aktuell erstellten KYC-Dokument</returns>
|
|
Task<CommunicationResult<IdentityDocument>> CreateKycDocumentAsync(string appUserId, IdentityDocumentSource source, string fileOneName, byte[] fileOne, string fileTwoName, byte[] fileTwo, string accessToken, CancellationToken token);
|
|
|
|
/// <summary>
|
|
/// Gibt Walks vom Server zurück
|
|
/// </summary>
|
|
/// <param name="appUserId">Id App-Users</param>
|
|
/// <param name="sortOrders">Liste von Sortierangaben</param>
|
|
/// <param name="take">Wie viele Walks sollen abgerufen werden? -1 Wenn nicht anwenden.</param>
|
|
/// <param name="skip">Wie viele Walks sollen ausgelassen werden? -1 Wenn nicht anwenden.</param>
|
|
/// <param name="accessToken">Aktuelles Accesstoken</param>
|
|
/// <param name="token">CancellationToken</param>
|
|
/// <returns>Nächster Walk oder null, wenn keiner vorhanden</returns>
|
|
Task<ListCommunicationResult<List<Payout>>> GetPayoutsAsync(string appUserId, List<DynamicSortOrder> sortOrders, int take, int skip, string accessToken, CancellationToken token);
|
|
|
|
/// <summary>
|
|
/// Erstellen einer Auszahlung
|
|
/// </summary>
|
|
/// <param name="appUserId">Id des App-Users</param>
|
|
/// <param name="ammount">Betrag der ausgezahlt werden soll</param>
|
|
/// <param name="accessToken">Aktuelles Accesstoken</param>
|
|
/// <param name="token">CancellationToken</param>
|
|
/// <returns>CommunicationResult</returns>
|
|
Task<CommunicationResult<Payout>> CreatePayoutAsync(string appUserId, decimal ammount, string accessToken, CancellationToken token);
|
|
|
|
/// <summary>
|
|
/// Gibt eine Auszahlung eines App-Users zurück
|
|
/// </summary>
|
|
/// <param name="appUserId">Id des App-Users</param>
|
|
/// <param name="payoutId">Id der Auszahlung</param>
|
|
/// <param name="accessToken">Aktuelles Accesstoken</param>
|
|
/// <param name="token">CancellationToken</param>
|
|
/// <returns>CommunicationResult</returns>
|
|
Task<CommunicationResult<Payout>> GetPayoutAsync(string appUserId, string payoutId, string accessToken, CancellationToken token);
|
|
}
|
|
}
|