Ergebnis 1 bis 6 von 6

Thema: Primera 3 Schnittstelle gesucht.

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Neuer Benutzer
    Registriert seit
    01.07.2007
    Beiträge
    10

    Primera 3 Schnittstelle gesucht.

    Moinsen zusammen,

    gibt es schon eine Schnittstelle zur neuen Primus 3 API für das VMS?

    Wenn nicht, was soll sowas kosten wenn es einer von euch macht?
    Würde es dann auch hier zum Download anbieten.

    Gruß
    Inetconn

  2. #2
    Erfahrener Benutzer Avatar von jpwfour
    Registriert seit
    06.02.2008
    Beiträge
    3.717

    AW: Primera 3 Schnittstelle gesucht.

    Gibts da eine öffentliche Dokumentation zu der API oder ist die Geheim?
    Kill one man, and you are a murderer.
    Kill millions of men, and you are a conqueror.
    Kill them all, and you are a god.
    - Jean Rostand, Thoughts of a Biologist (1939)

  3. #3
    Erfahrener Benutzer
    Registriert seit
    28.12.2008
    Beiträge
    275

    AW: Primera 3 Schnittstelle gesucht.

    https://www.primusportal.de/api/beschreibung/

    müsste die beschreibung sein

  4. #4
    Neuer Benutzer
    Registriert seit
    01.07.2007
    Beiträge
    10

    AW: Primera 3 Schnittstelle gesucht.

    Job ist richtig.
    Kann auch gerne einen Primera-EF zur Verfügung stellen damit man das testen kann.

  5. #5
    Erfahrener Benutzer Avatar von jpwfour
    Registriert seit
    06.02.2008
    Beiträge
    3.717

    AW: Primera 3 Schnittstelle gesucht.

    Im Prinzip ist das genau analog zu allen bisherigen Schnittstellen, also eine Schnittstellen Datei kopieren, und die URLs + Fehlercodes entsprechend anpassen.
    Aber: Klamm etc geben die Daten getrennt mit "|" aus, Primera bietet jetzt scheinbar nur noch JSON oder XML an. Eigene Parser dafür schreiben kommt damit eigentlich nicht in Frage, kann man machen, aber iwie doch sehr unsinnig ^^

    Seit PHP 5.2.0 ist die JSON-Erweiterung standardmäßig mit PHP gebündelt und kompiliert.
    JSON läuf man also Gefahr, dass dies auf älteren Sharedhosting Angeboten nicht verfügbar ist.

    XML sollte eigentlich sogut wie überall verfügbar sein, da dies standardmäßig aktiviert ist, der Hoster kann es aber auch explizit deaktivieren:

    Die XMLReader-Erweiterung steht für PHP 5.0.0 unter PECL zur Verfügung. Ab PHP 5.1.0 ist sie standardmäßig mitgeliefert und seit PHP 5.1.2 standardmäßig aktiviert.
    XMLReader also für gaaanz alte Software auch nicht zu gebrauchen, soll ich also nun eine Schnittstelle mit XML Parser schreiben? nöö, keine Lust ;-) Ich würde der Einfachheit halber JSON oder SimpleXML nehmen, aber mir dann anhören zu müssen, dass hier noch Webbis PHP4 nutzen, das will ich mir ersparen ^^

    Kann nicht verstehen, warum Primera hier nur noch diese beiden Formate anbietet, und nicht mehr das gute alte "|" oder "," getrennte Datenformat. Spart sogar Traffic ^^

    Ja ich weis, XML & JSON sind robuster und besser erweiterbar, aber hauptsächlich scheinen sie modern und trendy, weil EF und Werbenetzwerke nun seit mehr als 10 Jahren die CSV Variante nutzen, und iwie gabs da noch nie Probleme ....
    Kill one man, and you are a murderer.
    Kill millions of men, and you are a conqueror.
    Kill them all, and you are a god.
    - Jean Rostand, Thoughts of a Biologist (1939)

  6. #6
    Erfahrener Benutzer Avatar von jpwfour
    Registriert seit
    06.02.2008
    Beiträge
    3.717

    Beitrag AW: Primera 3 Schnittstelle gesucht.

    Falls das mal wer testen mag, Schnittstellen Datei fürs VMS, abspeichern als primera3.php in /lib/schnittstellen/, im Adminforce entsprechend die Daten eintragen.

    Voraussetzungen:
    • PHP 5
    • SimpleXML Erweiterung: Dazu via phpinfo(); checken, ob libxml = active und SimpleXML Abschnitt vorhanden
    • https Unterstützung: Registered PHP Streams: https und Abschnitt openssl vorhanden?


    PHP-Code:
    <?php
    /*
    https://www.primusportal.de/api/beschreibung/
    */

    // Primeraauszahlung
    function auszahlen ($betreiber_id,$betreiber_pw,$kunden_id,$kunden_pw,$betreiber_kennung,$trans_menge,$trans_betreff,$trans_code) {
    global 
    $error,$trans_ausgabe;

    // SecVMS change begin
    $trans_betreff urlencode($trans_betreff);
    $kunden_id urlencode($kunden_id);
    $kunden_pw urlencode($kunden_pw);
    $trans_menge urlencode($trans_menge);
    // SecVMS change end

    $returned='';
    $ret=@file("https://www.primusportal.de/api/handler/pay.xml?username=".$betreiber_id."&password=".$betreiber_pw."&receiver=".$kunden_id."&subject=".$trans_betreff."&primera=".$trans_menge."");
    for(
    $i=0;$i<count($ret);$i++) {
      
    $returned.=$ret[$i];
    }

    if( 
    class_exists('SimpleXMLElement') ) {
        try {
            
    $xml = new SimpleXMLElement($returned);
            if((string)
    $xml->success == "1"){
                
    // alles ok? evtl die gesamte rueckgabe checken
            
    }else{
                
    $error "true";
                
    $trans_ausgabe = (string)$xml->{'error_description'};
                if (
    $trans_ausgabe == ""$trans_ausgabe "Unbekannter Fehler";
            }
        }catch(
    Exception $e){
            
    $error "true";
            
    $trans_ausgabe "SimpleXML error: ".$e->getMessage();
        }
    }else{
        
    $error "true";
        
    $trans_ausgabe "SimpleXML missing";
    }

    return 
    $error;
    return 
    $trans_ausgabe;
    }

    // Primeraeinzahlung
    function einzahlen ($betreiber_id,$betreiber_pw,$kunden_id,$kunden_pw,$betreiber_kennung,$trans_menge,$trans_betreff,$trans_code){
    global 
    $error,$trans_ausgabe;

    // SecVMS change begin
    $trans_betreff urlencode($trans_betreff);
    $kunden_id urlencode($kunden_id);
    $kunden_pw urlencode($kunden_pw);
    $trans_menge urlencode($trans_menge);
    // SecVMS change end

    $returned='';
    $ret=file("https://www.primusportal.de/api/handler/deposit.xml?username=".$betreiber_id."&password=".$betreiber_pw."&from=".$kunden_id."&subject=".$trans_betreff."&primera=".$trans_menge."&primera_password=".$kunden_pw."");
    for(
    $i=0;$i<count($ret);$i++) {
      
    $returned.=$ret[$i];
    }

    if( 
    class_exists('SimpleXMLElement') ) {
        try {
            
    $xml = new SimpleXMLElement($returned);
            if((string)
    $xml->success == "1"){
                
    // alles ok? evtl die gesamte rueckgabe checken
            
    }else{
                
    $error "true";
                
    $trans_ausgabe = (string)$xml->{'error_description'};
                if (
    $trans_ausgabe == ""$trans_ausgabe "Unbekannter Fehler";
            }
        }catch(
    Exception $e){
            
    $error "true";
            
    $trans_ausgabe "SimpleXML error: ".$e->getMessage();
        }
    }else{
        
    $error "true";
        
    $trans_ausgabe "SimpleXML missing";
    }

    return 
    $error;
    return 
    $trans_ausgabe;
    }

    // Kontostand eines Users abfragen
    function usercheck ($betreiber_id,$betreiber_pw,$kunden_id,$kunden_pw){
    global 
    $error,$trans_ausgabe,$user_saldo;

    // SecVMS change begin
    $kunden_id urlencode($kunden_id);
    $kunden_pw urlencode($kunden_pw);
    // SecVMS change end

    $returned='';
    $ret=@file("https://www.primusportal.de/api/handler/get-user-primera.xml?username=".$betreiber_id."&password=".$betreiber_pw."&user_username=".$kunden_id."&user_primera_password=".$kunden_pw."");
    for(
    $i=0;$i<count($ret);$i++){
      
    $returned.=$ret[$i];
    }

    if( 
    class_exists('SimpleXMLElement') ) {
        try {
            
    $xml = new SimpleXMLElement($returned);
            if((string)
    $xml->success == "1"){
                
    $user_saldo = (float)$xml->{'get-user-primera'}->primera;
            }else{
                
    $error "true";
                
    $trans_ausgabe = (string)$xml->{'error_description'};
                if (
    $trans_ausgabe == ""$trans_ausgabe "Unbekannter Fehler";
            }
        }catch(
    Exception $e){
            
    $error "true";
            
    $trans_ausgabe "SimpleXML error: ".$e->getMessage();
        }
    }else{
        
    $error "true";
        
    $trans_ausgabe "SimpleXML missing";
    }

    return 
    $error;
    return 
    $trans_ausgabe;
    return 
    $user_saldo;
    }

    // Kontostand eines Users abfragen wird benutzt zum Validieren der Userdaten, weil sonst nur noch Validieren von Usernamen ohne Passwort moeglich
    function uservalidate ($betreiber_id,$betreiber_pw,$kunden_id,$kunden_pw){
    global 
    $error,$trans_ausgabe;

    // SecVMS change begin
    $kunden_id urlencode($kunden_id);
    $kunden_pw urlencode($kunden_pw);
    // SecVMS change end

    $returned='';
    $ret=@file("https://www.primusportal.de/api/handler/get-user-primera.xml?username=".$betreiber_id."&password=".$betreiber_pw."&user_username=".$kunden_id."&user_primera_password=".$kunden_pw."");
    for(
    $i=0;$i<count($ret);$i++){
      
    $returned.=$ret[$i];
    }

    if( 
    class_exists('SimpleXMLElement') ) {
        try {
            
    $xml = new SimpleXMLElement($returned);
            if((string)
    $xml->success == "1"){
                
    $user_saldo = (float)$xml->{'get-user-primera'}->primera;
            }else{
                
    $error "true";
                
    $trans_ausgabe = (string)$xml->{'error_description'};
                if (
    $trans_ausgabe == ""$trans_ausgabe "Unbekannter Fehler";
            }
        }catch(
    Exception $e){
            
    $error "true";
            
    $trans_ausgabe "SimpleXML error: ".$e->getMessage();
        }
    }else{
        
    $error "true";
        
    $trans_ausgabe "SimpleXML missing";
    }

    return 
    $error;
    return 
    $trans_ausgabe;
    }
    ?>
    Anmerkungen:

    Testen natürlich auf eigene Gefahr.

    Zur Überprüfung des Usernamens UND des Passworts bietet sich nur die Kontostand Abfragen Methode an, da "Validieren von Usernamen" nur den Namen ohne Passwort prüft, bietet sich bei der Anmeldung jetzt iwie nicht so an ...

    Da die API Dokumentation keine Infos dazu enthält, wie die Fehlercodes/Beschreibungen zurückgegeben werden, hab ich das jetzt einfach geraten, und verwende die Beschreibung aus dem XML, in der Hoffnung, dass diese Aussagekräftig genug ist...

    Im Fall, dass der <success> Knoten vorhanden ist und eine "1" enthält, werden die weiteren Daten, die geliefert werden, aktuell noch nicht überprüft. Könnte man natürlich noch checken, ob die Menge die transferiert wurde auch mit der abgeschickten übereinstimmt usw.

    Wer tatsächlich noch PHP 4 nutzt, hat halt Pech gehabt/sollte updaten ^^ Merkt man daran, dass nix mehr geht, nachdem man die Datei hochgeladen hat und bspw. eine Auszahlung vornehmen will :P

    Wer die Voraussetzungen nicht erfüllt, aber Alternativen hat, JSON, XML Reader etc. kann sich ja mal melden. Wer keine SSL Unterstützung hat, hat wohl auch Pech gehabt, da die Scnittstelle wohl nur via https:// angeboten wird. Hoster fragen, ob der das aktiviert.
    Kill one man, and you are a murderer.
    Kill millions of men, and you are a conqueror.
    Kill them all, and you are a god.
    - Jean Rostand, Thoughts of a Biologist (1939)

Ähnliche Themen

  1. wo bekomme ich eine Primera Schnittstelle
    Von erik3009 im Forum Support zu Addons & Erweiterungen
    Antworten: 2
    Letzter Beitrag: 27.04.2013, 12:51
  2. [S] Primera Schnittstelle
    Von Jabazz im Forum Scripte
    Antworten: 5
    Letzter Beitrag: 07.08.2010, 00:10
  3. [S] Primera Schnittstelle
    Von nanos im Forum Scripte
    Antworten: 6
    Letzter Beitrag: 07.03.2009, 21:36
  4. Primera Schnittstelle?
    Von adau im Forum Scripte
    Antworten: 0
    Letzter Beitrag: 24.04.2008, 23:45
  5. Suche Primera schnittstelle
    Von eldano im Forum Scripte
    Antworten: 5
    Letzter Beitrag: 07.01.2008, 13:57

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •