Permalänk

Hämta Swedbank API och CORS

Hej
Vi fick en gruppprojekt att skapa en open banking app prototyp med hjälp av Swedbank API
Jag har provat den kod för att se hur ajax requesten fungerar

$.ajax({ type:'GET', url:'https://psd2.api.swedbank.com//sandbox/v1/accounts', success:function(results){ console.log(results); }, statusCode:{ 500:function(){ console.log('Server error'); } } });

Jag får två olika fel meddelande

1. jquery-3.1.1.min.js:4 GET https://psd2.api.swedbank.com//sandbox/v1/accounts 500 (Internal Server Error)
2. Failed to load https://psd2.api.swedbank.com//sandbox/v1/accounts: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost' is therefore not allowed access. The response had HTTP status code 500.

Frågor:
1. Jag har googlat för att se vad betyder 500 Internal Server Error. Hittade jag det betyder det finns något fel i servern. Som webbserven använder jag XAMPP APACHE, och ingen backend språk. Ska man ändra config i XAMPP-app? Hur? Hur kan man lösa det?

2. Andra fel meddelande, är det CORS? Hur kan man fixa det utan någon backend? Finns något fel med ajax koden? Vi är frontendare och lärare sa ingen backend behövs för att göra projekt.

Permalänk
Medlem

Det är inte tillåtet att använda Javascript Ajax anrop till andra domäner än den du är på just nu, dvs localhost.

Men finns saker som jsonp man kan använda för att kringgå det.

De andra lösningarna kräver backend.

Permalänk
Skrivet av Terrell:

Det är inte tillåtet att använda Javascript Ajax anrop till andra domäner än den du är på just nu, dvs localhost.

Men finns saker som jsonp man kan använda för att kringgå det.

De andra lösningarna kräver backend.

OK. Hur gör man en jsonp anrop? Den API som ska jag anropa är swedbank API. Jag tror APIs format är XML

Permalänk
Inaktiv

Det bästa du kan göra är att sätta upp en engen server som pratar med APIet och hostar din lilla webbsida.

Då kan du även hantera datan och returnera det snyggare som du vill ha det.

Permalänk
Medlem

Tillhör det verkligen uppgiften att koda i Javascript mot Swedbanks API?

Jag hade nog hellre byggt den fysiska API-kopplingen mot Swedbank i en backend-lösning.

Visa signatur

Windows 11 Pro | Intel i7 8700 | ASUS Prime Z370-P | Corsair 16GB 3000MHz | ASUS GTX 1080 | Fractal Design Define S | Corsair RM750x | Hyper 212 EVO

Permalänk
Skrivet av Joppis:

Tillhör det verkligen uppgiften att koda i Javascript mot Swedbanks API?

Jag hade nog hellre byggt den fysiska API-kopplingen mot Swedbank i en backend-lösning.

Problemet är vi är frontendare och finns ingen backend i vår kurs.
Lärare föreslog oss att använda Javascript/JQuery ajax request för att hämta API

Permalänk
Keeper of Traditions
Skrivet av ProgrammeringElev:

Problemet är vi är frontendare och finns ingen backend i vår kurs.
Lärare föreslog oss att använda Javascript/JQuery ajax request för att hämta API

Jag tror du missförstått vad ett API är. Det är de publika funktionerna från Swedbank som du har åtkomst till, inte datan du hämtar.

En snabb googling ger lite kodexempel du kanske kan titta på:
https://github.com/walle89/SwedbankJson

Där verkar de använda JSON i alla fall?

Visa signatur

|| Intel 8700K || Asus RTX 4070 TI Super TUF || Samsung 750 EVO 500GB & Kingston A2000 1TB & Samsung 960 EVO 250GB || Corsair RM 850x || Antec P183 || Asus G-Sync RoG Swift PG279Q || Dell XPS 15 || Thinkpad X220

The Force is like Duct Tape, it has a light side, a dark side, and holds the universe together.

Permalänk
Medlem

Du har använt APIet på felaktigt sätt. För det första så är det flertalet headers som måste sättas. Du måste även skicka med flertalet GET-parametrar. Allt detta är någorlunda dokumenterat i deras PDF samt även i deras Swagger för APIet.

Då deras API inte stödjer CORS så måste man använda JSONP. Då det (vad jag vet) är omöjligt att sätta/modifiera headers på ett JSONP-request så går det inte att göra detta i javascript. Med det sagt så ser jag inte hur detta är tänkt att fungera i Javascript.

Om din lärare anser att detta går att lösa i (browser/klient-baserad) Javascript så finns det många utvecklare som vill ha reda på det hacket.

Deras dokumentation är under all kritik. Det är däremot i BETA och det ser ut som att endast ca 200 testare håller på just nu så det går inte att förvänta sig så mycket.

Visa signatur

ηλί, ηλί, λαμά σαβαχθανί!?

Permalänk
Skrivet av ProgrammeringElev:

Jag får två olika fel meddelande

1. jquery-3.1.1.min.js:4 GET https://psd2.api.swedbank.com//sandbox/v1/accounts 500 (Internal Server Error)
2. Failed to load https://psd2.api.swedbank.com//sandbox/v1/accounts: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost' is therefore not allowed access. The response had HTTP status code 500.

Du har ett slash för mycket i URL:en. Testa med https://psd2.api.swedbank.com/sandbox/v1/accounts så borde det gå bättre.

Skrivet av ProgrammeringElev:

2. Andra fel meddelande, är det CORS? Hur kan man fixa det utan någon backend? Finns något fel med ajax koden? Vi är frontendare och lärare sa ingen backend behövs för att göra projekt.

Ja, det går genom att skicka OPTIONS-request (pre-flight), men det kräver att API:ets webbserver har stöd för det. Frågan är om det inte är lite out of scope för kursen?

Permalänk
Skrivet av protovaffe:

Du har ett slash för mycket i URL:en. Testa med https://psd2.api.swedbank.com/sandbox/v1/accounts så borde det gå bättre.

Ja, det går genom att skicka OPTIONS-request (pre-flight), men det kräver att API:ets webbserver har stöd för det. Frågan är om det inte är lite out of scope för kursen?

2. Det är sant. Tror lite över kurs. Annan grupp fick att göra en login tjänst(prototyp, ingen databas behövs). Den är super-enkelt. Bara sätta några <input> taggar och visa fel meddelande när behövs. Men vår grupp lite svårare ...

Permalänk

någon som har använt Swedbank API förut?

Vi fick en uppgift att skapa prototyp för en open banking applikation.

Min lärare har fixat
#17111412
problem med hans egna PHP kod
Nu jag kan koppla sig till Swedbank account API utan problem
Jag har testat alla 3 Swedbank Acoount API exemplar och fungerade allt men jag har två teoretiska frågor

Swedbank har en pdf fil som beskriver Swedbank API
https://www.swedbank.se/idc/groups/public/@i/@sc/@all/@kp/doc...

1. I exemplen de använder key som kallas Authorization, och värde Bearer ThisWillBeYourOauthToken123
Jag förstår värdet är unik och den måste vara namnet på token men hur man får det?
2. Jag behöver lite tip hur ska man koda för att få användarens saldo med deras personliga uppgifter(personnummer , konto.. det spelar ingen roll just nu)? Bank ID vi ska inte använda
Jag använder Javascript/JQuery/PHP . Det är bättre om man kan göra det utan PHP.. (kan inte PHP så mycket)

Permalänk

Swedbank Open Banking API. Implementera sparkonto?

https://developer.swedbank.com/admin/app/api-explorer
Swedbank har 2 olika API
sandbox account API och sandbox payment API
Man kan anropa dem på olika sätt
Men vilken API ska jag anropa för att implementera ett test sparkonto?
Jag läste dokumentet men det är på engelska och jag fattade inte

Permalänk
Medlem

Det borde ju stå i dokumentationen, dock kan vi inte se den eftersom man måste regga sig för att komma in på dev portal. Men borde rimligtvis vara Account API? Savings account kan vara ett sjysst nyckelord att leta efter.

Permalänk
Skrivet av toobypls:

Det borde ju stå i dokumentationen, dock kan vi inte se den eftersom man måste regga sig för att komma in på dev portal. Men borde rimligtvis vara Account API? Savings account kan vara ett sjysst nyckelord att leta efter.

https://www.swedbank.se/idc/groups/public/@i/@sc/@all/@kp/doc...

den är länk till dokument.
Står på engelska och lite svårt att förstå
Jag har implementerat grundliggande konto API(100 SEK) men sparkonto jag hittar inte
Ha provat CTRL+F saving och hittade inget

Permalänk
Medlem
Skrivet av ProgrammeringElev:

https://www.swedbank.se/idc/groups/public/@i/@sc/@all/@kp/doc...

den är länk till dokument.
Står på engelska och lite svårt att förstå
Jag har implementerat grundliggande konto API(100 SEK) men sparkonto jag hittar inte
Ha provat CTRL+F saving och hittade inget

Finns det inte exempel i Swaggern? Borde ju finnas någon account type du kan sätta när du skapar account?

Skickades från m.sweclockers.com

Permalänk
Hedersmedlem

*** 3 trådar sammanfogade ***

Jag har sammanfogat dessa tre trådar då det i grunden är samma frågeställning. Se forumregel § 3.3. Om regeln inte följs kan ämnet anses förbrukat och trådarna låsas. Förutom att regeln håller forumet mer lättläst är det troligen också lättare för andra att kommentera när all information är tillgänglig i en och samma tråd.

/KimTjik

Permalänk
Medlem
Skrivet av ProgrammeringElev:

https://www.swedbank.se/idc/groups/public/@i/@sc/@all/@kp/doc...

den är länk till dokument.
Står på engelska och lite svårt att förstå
Jag har implementerat grundliggande konto API(100 SEK) men sparkonto jag hittar inte
Ha provat CTRL+F saving och hittade inget

Hur har du implementerat det?

Det finns totalt fem metoder

GET /accounts/ List Accounts
GET /accounts/{accountID}/ List specific account
GET /accounts/{accountID}/transactions/ Read transaction list

POST /payments/se-domestic-ct Initiate Swedish Domestic Payment
POST /payments/pain.001-sepa-credit-transfers Initiate SEPA Payment with pain.001.001.03 XML

Dessa är dokumenterade i dokumentationen samt deras Swagger. Det står även att det endast är statisk data i sandboxen.

Visa signatur

ηλί, ηλί, λαμά σαβαχθανί!?

Permalänk
Skrivet av Leedow:

Hur har du implementerat det?

Det finns totalt fem metoder

GET /accounts/ List Accounts
GET /accounts/{accountID}/ List specific account
GET /accounts/{accountID}/transactions/ Read transaction list

POST /payments/se-domestic-ct Initiate Swedish Domestic Payment
POST /payments/pain.001-sepa-credit-transfers Initiate SEPA Payment with pain.001.001.03 XML

Dessa är dokumenterade i dokumentationen samt deras Swagger. Det står även att det endast är statisk data i sandboxen.

jaja
min lärare hjälpte mig med hans PHP kod eftersom CORS blockerade mitt jquery ajax anrop.
Så det fungerar just nu
Inget problem med sandboxen just nu