Lagt till funktionalitet för nya payout. Försökt följa din kodlayout så mycket som möjligt men det är så klart fritt fram att ändra runt.
Tänk på att installera rätt certifikat. Endast Swish_Merchant_TestSigningCertificate_1234679304.p12 fungerar för signering i mss. Samma certifikat som vanligt används dock för anropet.
Nya filer
Modeller
PayoutRequestEnvelope.cs
Objekt som skickas till Swish. Innehåller följande:
PayoutRequestData payload - Data för anropet
string callbackUrl - Callback
string signature - Base64-sträng med datan i payload signerad med SHA512/RSA.
Efter objektet skapats är det viktigt att funktionen PayoutRequestEnvelope.buildSignature(); körs. Denna funktion bygger upp signaturfältet utefter data i payload. Notera att payloadobjektet måste vara klart. Inget får förändras efter buildSignature() körs. Skulle något förändras, kör funktionen igen.
buildSignature() kommer leta upp certifikatet, från din store, med samma serienummer som skickas med till client.MakePayoutRequest(). Se till att rätt certifikat hittas där.
En liten konstig sak som inte var jättetydlig i Swish dokumentation är att payload-objektet måste hashas två gånger. Det är löst i koden men om någon vill pilla kan det vara bra att veta. I min kod körs först en computeHash() och sedan görs en ytterligare hashning i RSA.signData()-funktionen. Det fungerar även att köra SHA512Managed.computeHash() två gånger och sedan köra RSA.signHash() istället. RSA.signHash() gör ingen hashning själv.
PayoutRequestData.cs
Dataobjekt som skickas
PayoutRequestResponse.cs
Returdata
HTTP-loggning
Lagt till ett mellanlager som kan ge output med den data som skickas och tas emot. Hjälpte enormt vid utveckling av detta så lämnade det kvar. Sätts på genom att sätta:
client._enableHTTPLog = true;
Ändringar
Client.cs
Lagt till funktion MakePayoutRequest samt lagt till stöd för HTTP-loggning.
SwishApiConsoleTest
Lagt till test för MakePayoutRequest.
Notera att du måste lägga in ett riktigt personnummer till makePayoutRequest() innan du kör.
Beskrivning
Lagt till funktionalitet för nya payout. Försökt följa din kodlayout så mycket som möjligt men det är så klart fritt fram att ändra runt.
Tänk på att installera rätt certifikat. Endast Swish_Merchant_TestSigningCertificate_1234679304.p12 fungerar för signering i mss. Samma certifikat som vanligt används dock för anropet.
Nya filer
Modeller
PayoutRequestEnvelope.cs
Objekt som skickas till Swish. Innehåller följande:
Efter objektet skapats är det viktigt att funktionen
PayoutRequestEnvelope.buildSignature();
körs. Denna funktion bygger upp signaturfältet utefter data i payload. Notera att payloadobjektet måste vara klart. Inget får förändras efter buildSignature() körs. Skulle något förändras, kör funktionen igen.buildSignature() kommer leta upp certifikatet, från din store, med samma serienummer som skickas med till
client.MakePayoutRequest()
. Se till att rätt certifikat hittas där.En liten konstig sak som inte var jättetydlig i Swish dokumentation är att payload-objektet måste hashas två gånger. Det är löst i koden men om någon vill pilla kan det vara bra att veta. I min kod körs först en computeHash() och sedan görs en ytterligare hashning i RSA.signData()-funktionen. Det fungerar även att köra SHA512Managed.computeHash() två gånger och sedan köra RSA.signHash() istället. RSA.signHash() gör ingen hashning själv.
PayoutRequestData.cs
Dataobjekt som skickas
PayoutRequestResponse.cs
Returdata
HTTP-loggning
Lagt till ett mellanlager som kan ge output med den data som skickas och tas emot. Hjälpte enormt vid utveckling av detta så lämnade det kvar. Sätts på genom att sätta:
client._enableHTTPLog = true;
Ändringar
Client.cs
Lagt till funktion MakePayoutRequest samt lagt till stöd för HTTP-loggning.
SwishApiConsoleTest
Lagt till test för MakePayoutRequest.
Notera att du måste lägga in ett riktigt personnummer till makePayoutRequest() innan du kör.