curl mit php ausführen


Status
Dieses Thema wurde gelöst! Zur Lösung gehen…

tklustig

Erfahrenes Mitglied
#1
Hallo Leute,
folgender Code:
PHP:
$curl = curl_init();
curl_setopt_array($curl, array(CURLOPT_RETURNTRANSFER => 1,CURLOPT_URL => 'https://fintechtoolbox.com/bankcodes/50010517',CURLOPT_USERAGENT => 'Codular Sample cURL Request'));
$resp = curl_exec($curl);
curl_close($curl);
var_dump($resp);
die();
Code:
gibt mir folgenden String zurück:
Code:
string '{"bank_code":{"code":"50010517","property":1,"description":"ING-DiBa","postal_code":"60628","city":"Frankfurt am Main","bank_name":"ING-DiBa Frankfurt am Main","pan":"29165","bic":"INGDDEFFXXX","mark_of_conformity":"C1"}}' (length=221)
Ich benötige folgende Angaben aus diesem String:
  1. ING-DiBa Frankfurt am Main
  2. INGDDEFFXXX
Wie komme ich am elegantesten an diese Informationen ran? Der Aufbau des Strings ist immer derselbe, allerdings variieren natürlich die Values.
 

Sempervivum

Erfahrenes Mitglied
#2
Das ist ganz offensichtlich JSON und dann ist die Auswertung leicht: String dekodieren und die gewünschten Werte auslesen:
Code:
        $resp = '{"bank_code":{"code":"50010517","property":1,"description":"ING-DiBa","postal_code":"60628","city":"Frankfurt am Main","bank_name":"ING-DiBa Frankfurt am Main","pan":"29165","bic":"INGDDEFFXXX","mark_of_conformity":"C1"}}';
        $respobj = json_decode($resp);
        var_dump($respobj);
        $bank = $respobj->bank_code->description . ' ' . $respobj->bank_code->city;
        $bic = $respobj->bank_code->bic;
 

tklustig

Erfahrenes Mitglied
#3
Perfekt. Saubere Lösung. Vielen Dank dafür. Werde den vollständigen Code in Kürze posten, damit alle anderen, die für gegebene BLZ und Kontonummer kostenlos BIC, Institut und IBAN in die Datenbank transferieren wollen, ebenfalls davon profitieren:unsure:
 

tklustig

Erfahrenes Mitglied
#4
Hier, wie versprochen, der vollständige Code. Als Übergabeparameter habe ich statische Werte genommen. De facto kommen die entweder aus der Datenbank oder aber aus einem Formular
PHP:
.
        $key = 'TopSecret'; //muss durch eine kostenlose Registrierung initialisiert worden sein
        $laenderkennung = 'DE';
        $kontonummer = '1523864225';
        $blz = '50010517';
        // erzeuge einen neuen cURL-Handle
        $curl = curl_init();
        curl_setopt_array($curl, array(CURLOPT_RETURNTRANSFER => 1, CURLOPT_URL => 'https://fintechtoolbox.com/bankcodes/' . $blz));
        $webserviceValues = curl_exec($curl);
        $respobj = json_decode($webserviceValues);
        var_dump($respobj);
        $bank = $respobj->bank_code->description . ' ' . $respobj->bank_code->city;
        $bic = $respobj->bank_code->bic;
        var_dump($bank);
        var_dump($bic);
        curl_close($curl);
        $iban = $this->CalcIban($laenderkennung, $blz, $kontonummer);
        var_dump($iban);
        die();
.
.
    private function CalcIban($laenderkennung, $bankleitzahl, $kontonummer) {
        try {
            $laenderkennungTranslate = false;
            while (strlen($kontonummer) < 10) {
                $kontonummer = '0' . $kontonummer;
            }
            $alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
            $landExplode = str_split($laenderkennung);
            if (count($landExplode) == 2) {
                foreach ($landExplode as $check) {
                    $laenderkennungTranslate .= (string) strpos($alphabet, $check) + 10;
                }
                $laenderkennungTranslate = $laenderkennungTranslate . '00';
                if ($laenderkennungTranslate) {
                    $ibanRaw = $bankleitzahl . $kontonummer . $laenderkennungTranslate;
                    if (strlen($ibanRaw) == 24) {
                        $pruefsumme = 98 - bcmod($ibanRaw, 97);
                        if ($pruefsumme < 10)
                            $pruefnummer = '0' . $pruefsumme;
                        $iban = $laenderkennung . $pruefsumme . $bankleitzahl . $kontonummer;
                    }
                }
                return $iban;
            } else {
                print_r('Error!Error!Error<br>Länderkennung hat das falsche Format');
                die();
            }
        } catch (\Exception $error) {
            error_handling::error_without_id($error, BankverbindungController::RenderBackInCaseOfError);
        }
    }
ergibt folgende Ausgabe:
Code:
X:\xampp\htdocs\yii2_ErkanImmo\backend\controllers\BankverbindungController.php:58:
object(stdClass)[140]
  public 'bank_code' =>
    object(stdClass)[146]
      public 'code' => string '50010517' (length=8)
      public 'property' => int 1
      public 'description' => string 'ING-DiBa' (length=8)
      public 'postal_code' => string '60628' (length=5)
      public 'city' => string 'Frankfurt am Main' (length=17)
      public 'bank_name' => string 'ING-DiBa Frankfurt am Main' (length=26)
      public 'pan' => string '29165' (length=5)
      public 'bic' => string 'INGDDEFFXXX' (length=11)
      public 'mark_of_conformity' => string 'C1' (length=2)
X:\xampp\htdocs\yii2_ErkanImmo\backend\controllers\BankverbindungController.php:61:string 'ING-DiBa Frankfurt am Main' (length=26)
X:\xampp\htdocs\yii2_ErkanImmo\backend\controllers\BankverbindungController.php:62:string 'INGDDEFFXXX' (length=11)
X:\xampp\htdocs\yii2_ErkanImmo\backend\controllers\BankverbindungController.php:65:string 'DE73500105171523864225' (length=22)
 
Zuletzt bearbeitet:
Status
Dieses Thema wurde gelöst! Zur Lösung gehen…