104 lines
4.2 KiB
C#
104 lines
4.2 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using gehGassi.Klarna.Checkout;
|
|
|
|
namespace gehGassi.Core.Interfaces
|
|
{
|
|
/// <summary>
|
|
/// Schnittstellenbeschreibung eines Service der alle benötigten Klarna-Funktionen zur Verfügung stellt
|
|
/// </summary>
|
|
public interface IKlarnaService
|
|
{
|
|
/// <summary>
|
|
/// Prüft ob die Klarna Credentials korrekt sind und eine Verbindung zur Api aufgenommen werden kann
|
|
/// </summary>
|
|
/// <param name="username">Klarna Benutzername</param>
|
|
/// <param name="password">Klarna Passwort</param>
|
|
/// <returns>true wenn erfolgreich, false sonst</returns>
|
|
Task<bool> TestCredentialsAsync(string username, string password);
|
|
|
|
/// <summary>
|
|
/// Erstellen einer Klarna-Order
|
|
/// </summary>
|
|
/// <param name="orderId">Id der simple print Bestellung</param>
|
|
/// <param name="username">Klarna Benutzername</param>
|
|
/// <param name="password">Klarna Passwort</param>
|
|
/// <param name="termsUrl">Redirect-Url für AGB</param>
|
|
/// <param name="checkoutUrl">Url für Checkout</param>
|
|
/// <param name="confirmationUrl">Bestätigungs-URL</param>
|
|
/// <param name="pushUrl">URL für Push-Notifications</param>
|
|
/// <returns>Klarna Order oder null, wenn ein Fehler aufgetreten ist</returns>
|
|
Task<Order> CreateOrderAsync(long orderId, string username, string password, string termsUrl, string checkoutUrl, string confirmationUrl, string pushUrl);
|
|
|
|
/// <summary>
|
|
/// Abfragen einer Klarna-Order - Checkout API
|
|
/// </summary>
|
|
/// <param name="klarnaOrderId">Klarna Order ID</param>
|
|
/// <param name="username">Klarna Benutzername</param>
|
|
/// <param name="password">Klarna Passwort</param>
|
|
/// <returns>Klarna Order oder null, wenn nicht gefunden</returns>
|
|
Task<Order> GetOrderAsync(string klarnaOrderId, string username, string password);
|
|
|
|
/// <summary>
|
|
/// Abfragen einer Klarna-Order - OrderManagement API
|
|
/// </summary>
|
|
/// <param name="klarnaOrderId">Klarna Order ID</param>
|
|
/// <param name="username">Klarna Benutzername</param>
|
|
/// <param name="password">Klarna Passwort</param>
|
|
/// <returns>Klarna Order oder null, wenn nicht gefunden</returns>
|
|
Task<Klarna.OrderManagement.Order> GetManagementOrderAsync(string klarnaOrderId, string username, string password);
|
|
|
|
/// <summary>
|
|
/// Bestätigen einer Klarna-Order - OrderManagement API
|
|
/// </summary>
|
|
/// <param name="klarnaOrderId">Klarna Order ID</param>
|
|
/// <param name="username">Klarna Benutzername</param>
|
|
/// <param name="password">Klarna Passwort</param>
|
|
/// <returns>Klarna Order oder null, wenn nicht gefunden</returns>
|
|
Task<bool> AcknowledgeOrderAsync(string klarnaOrderId, string username, string password);
|
|
|
|
/// <summary>
|
|
/// Bestätigen des Versands einer Bestellung - OrderManagement API
|
|
/// </summary>
|
|
/// <param name="orderId">Order ID</param>
|
|
/// <param name="username">Klarna Benutzername</param>
|
|
/// <param name="password">Klarna Passwort</param>
|
|
/// <returns>true wenn erfolgreich, false sonst</returns>
|
|
Task<CaptureOrderResult> CaptureOrderAsync(long orderId, string username, string password);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Rückgabe des Versuchs eine Order als Shipped einzutragen
|
|
/// </summary>
|
|
public enum CaptureOrderResult
|
|
{
|
|
/// <summary>
|
|
/// Erfolgreich
|
|
/// </summary>
|
|
Success = 1,
|
|
/// <summary>
|
|
/// Capture nicht erlaubt
|
|
/// </summary>
|
|
CaptureNotAllowed = 20,
|
|
/// <summary>
|
|
/// Der verfügbare Betrag ist 0
|
|
/// </summary>
|
|
RemainingAuthorizedAmount = 21,
|
|
/// <summary>
|
|
/// Bestellung nicht gefunden
|
|
/// </summary>
|
|
OrderNotFound = 30,
|
|
/// <summary>
|
|
/// Authorisierung gescheitert
|
|
/// </summary>
|
|
AuthorizationFailed = 40,
|
|
/// <summary>
|
|
/// Timeout bei der Kommunikation. Nochmal versuchen
|
|
/// </summary>
|
|
Timeout = 50
|
|
}
|
|
}
|