Closed walle89 closed 8 years ago
gjorde denna lite snabbt... och det verkar funka... :) ska nog kontrollera Exception på login.. men vet inte riktigt hur jag kollar det.
https://github.com/NisseDILLIGAF/SwedbankJson/commit/1814aa522c8f9c3ebd3301c99ff3cd9bc8301cfd
Du har dock problemet att den fortfarande använde auth-url:en istället för unauth: https://github.com/NisseDILLIGAF/SwedbankJson/blob/master/src/Auth/AbstractAuth.php#L25
Sen är det inte akut eftersom att personlig kod fungerar fortfarande och jag tror nog att det kommer finnas en lösning fram tills dess.
jo, det har du rätt i ... visste inte om det gjorde något att jag använde auth-url:en ..? Jaha.. jag har fått uppfattningen att personlig kod skulle sluta fungera nu i mars...! Är det inte så så e det ju inte så akut :)
Det finns inga säkra uppgifter om när den försvinner, bara att den förr eller senare kommer att försvinna.
Jag har nu lagt upp en fungerande lösning under trädet NoAuth. Denna kör Guzzle 6 och därmed finns kravet PHP 5.5.
För den som vill testa, följ dessa instruktioner:
Steg 1: Skapa en ny tom mapp med följande composer.json innehåll:
{
"require": {
"walle89/swedbank-json": "dev-NoAuth"
}
}
Steg 2: Följ instruktionerna i övrigt enligt README.ME.
Steg 3: För testning använd följande kod (ändra 'subscribeID' till den prenumeration av konto som önskas eventuellt BANK_APP till den som du använder):
<?php
require_once '../vendor/autoload.php';
define('BANK_APP', 'swedbank');
echo '
<pre>';
try {
$auth = new SwedbankJson\Auth\UnAuth(BANK_APP);
$bankConn = new SwedbankJson\SwedbankJson($auth);
} // Fel av användare
catch (SwedbankJson\UserException $e) {
echo $e->getMessage();
exit;
} // Systemfel och övriga fel
catch (Exception $e) {
echo 'Swedbank-fel: ' . $e->getMessage() . ' (Err #' . $e->getCode() . ")\r\n" . $e->getTraceAsString();
exit;
}
var_dump($bankConn->quickBalance('*subscribeID*')); # Ersätt mig
Steg 4: Om inte redan har ett subscribeID har jag gjort ett verktyg för att enkelt ta reda på det. Efter man följt instruktionerna är det bara att kopiera och ersätta raden som det står "Ersätt mig". Just denna kod använder sig av mobilt BankID, men du kan anpassa det för att köra med bankdosa eller med personlig kod (om den tillåter att skapa snabbsaldo):
<?php
session_start();
require_once '../vendor/autoload.php';
define('USERNAME', 198903060000); // Personnummer
define('BANK_APP', 'swedbank');
$auth = null;
try
{
// Utloggning
if (isset($_GET['logout']))
{
$auth = unserialize($_SESSION['swedbankjson_auth']);
$auth->terminate();
exit('Du är nu utloggad');
}
// Steg 1 - Inled auth
if (!isset($_SESSION['swedbankjson_auth']))
{
$auth = new SwedbankJson\Auth\MobileBankID(BANK_APP, USERNAME);
$auth->initAuth();
exit('Öppna BankID-appen och godkänn inloggingen. Därefter uppdatera sidan.');
}
// Steg 2 - Verifiera inlogging
$auth = unserialize($_SESSION['swedbankjson_auth']);
if (!$auth->verify())
exit("Du uppdaterade sidan, men inloggningen är inte godkänd i BankID-appen. När det är gjort, försök igen.");
} // Systemfel och övriga fel
catch (Exception $e) {
echo '<pre>Fel: ' . $e->getMessage() . ' (Err #' . $e->getCode() . ")\r\n" . $e->getTraceAsString().'</pre>';
}
// Steg 3 - Genomför
$bankConn = new SwedbankJson\SwedbankJson($auth);
if(count($_POST))
{
$subscribeAccount = filter_input(INPUT_POST, 'account', FILTER_SANITIZE_FULL_SPECIAL_CHARS);
$subInfo = $bankConn->quickBalanceSubscription($subscribeAccount);
exit("var_dump(\$bankConn->quickBalance('{$subInfo->subscriptionId}'));");
}
$accounts = $bankConn->quickBalanceAccounts();
?>
<!doctype html>
<html lang="sv">
<head>
<meta charset="UTF-8">
<title>Snabbsaldo</title>
</head>
<body>
<form action="" method="post">
<select name="account" id="account">
<option value="">Välj konto</option>
<?php foreach($accounts->accounts as $a): ?>
<option value="<?=$a->quickbalanceSubscription->id?>"><?=$a->name?></option>
<?php endforeach; ?>
</select><br>
<button>Prenumerera på snabbsaldo för konto</button>
</form>
<a href="?logout">Logga ut</a>
</body>
</html>
Steg 5: Se ditt saldo genom att ladda sidan med kodexempel 1. Tänk dock på att Swedbank bara tillåter ett anrop var 10:e sekund. Tätare intervall ger ett felmeddelande.
Säg till om det funkar, eller kontakta mig om en felrapport dyker upp.
I och med version 0.6.0 släpptes nu finns nu stöd bland annat snabbsaldo utan krav på inlogging. Med anledning av detta stänger jag nu denna issue.
Att kunna se snabbsaldo (aka. quickbalance) utan att behöva logga in.