swish-api-csharp icon indicating copy to clipboard operation
swish-api-csharp copied to clipboard

Swish For Merchant API Client .Net Standard Library

Swish för handel .NET Standard Library


Enkelt class library byggt i .NET Standard Library för att hantera API anrop för Swish för Handel.

API dokumentation direkt från Swish själva hittas på https://developer.getswish.se/merchants/ och är från den jag utgått.

Updatering 2021-07-08

Godkände och mergeat in ändringar från en Pull Request att köra detta med .Net 5 + support för att inte ha certifikatet lokalt, dessa ändringar är gjorda av Per Samuellsson (https://github.com/per-samuelsson), stort tack!

Updatering 2021-03-04

Godkände och mergeat in ändringar från en Pull Request för att köra Siwsh Payouts, ändringarna är gjorda av Pierre Schönbeck (https://github.com/ikinz), stort tack!

Updatering 2020-05-20

Jag har uppdateat GetSwish ABs test certifikat så koden fungerar i github repositoryt igen i test miljö.

Updatering 2020-05-09

Efter en lång period som koden inte fungerat så har jag fått hjälp av en rad olika utvecklare och till slut fick vi veta vad som var felet och har nu åtgärdat det.

NuGet paketet uppdaterat med senaste koden.

Updatering 2021-03-04

Pierre Schönbeck (ikinz på github) har skickat in en pull request på implementation av Payout apierna, stort tack för det Pierre!

Testa

I detta git repository ingår en test console application för testning, som är uppsatt att köras direkt mot Swish testmiljö med testcertifikat.

Console appen gör en Payment Request, en kontroll av statusen på Payment Request och sedan återköper betalningen och kollar statusen på återköpet.

Installera

Antingen installerar du class library:et från detta repository eller så installerar du det genom NuGet: https://www.nuget.org/packages/SwishApi

PM> Install-Package SwishApi -Version 1.2.0

Kom igång enkelt

Förutom att du har test console appen så kommer här lite kodsnuttar på från console appen.

Kodexempel

I repositoryt finns en Console Application som visar kod exempel hur man använder libraryt förutom Callbacks, se nedan.

Callbacks kodexempel

Här finns kod för ett ASP.NET MVC 5 projekt och Callback kod för både payment och refund, tagna från GitHub repositoryt: https://github.com/RickardPettersson/swish-for-handel-csharp

public string Callback()
{
    Stream req = Request.InputStream;
    req.Seek(0, System.IO.SeekOrigin.Begin);
    string json = new StreamReader(req).ReadToEnd();

    SwishCheckPaymentRequestStatusResponse resultObject = JsonConvert.DeserializeObject<SwishCheckPaymentRequestStatusResponse>(json);

    switch (resultObject.status)
    {
        case "CREATED":
            // Borde kanske aldrig få CREATED här...
            break;
        case "PAID":
            // Betalningen är klar
            break;
        case "DECLINED":
            // Användaren avbröt betalningen
            break;
        case "ERROR":
            // Något gick fel, om betalningen inte sker inom 3 minuter skickas ERROR
            break;
    }

    // When someone like to use this live I should log this and maybe change the status of some order or somethign to be paid or what the status says.
    // To make a refund you need to save the value of paymentReference
    // var paymentReference = resultObject.paymentReference;

    return "OK";
}

public string RefundCallback()
{
    // Exempel Callback JSON sträng
    Stream req = Request.InputStream;
    req.Seek(0, System.IO.SeekOrigin.Begin);
    string json = new StreamReader(req).ReadToEnd();

    SwishRefundSatusCheckResponse resultObject = JsonConvert.DeserializeObject<SwishRefundSatusCheckResponse>(json);

    switch (resultObject.status)
    {
        case "DEBITED":
            // Återköpt
            break;
        case "PAID":
            // Betald
            break;
        case "ERROR":
            // Något gick fel
            break;
    }

    // When someone like to use this live I should log this and maybe change the status of some order or something to be repaid or what the status says.
    // Use payerPaymentReference to get the order
    // var paymentref = resultObject.payerPaymentReference;

    return "OK";
}

Certifikat hantering

Du hitta information om hur du skapar och hanterar ditt egna certifikat för produktion på wiki sidan Hantera certifikat

Bakgrund för projektet

Getswish AB har lanserat Swish för handel men har inte släppt några kodexempel förutom cURL exempel vilket gör det svårt att testa i Windows och att implementera Swish för handel i sitt programmeringsprojekt.

Efter jag la ner väldigt många timmar för att få Swish för handel att fungera i C# så har jag släppt lite olika kod exempel och till slut släppte jag detta class library för att hjälpa andra komma igång.

Programmerat av

Jag som gjort detta projekt heter Rickard Nordström Pettersson och ni hittar mina kontaktuppgifter på http://www.rickardp.se

Jag vill även tacka dessa personer för att de bidragit till olika delar i detta projekt:

  • Pierre Schönbeck (https://github.com/ikinz)
  • Per Samuellsson (https://github.com/per-samuelsson)