payPrimera($PayReceiver, $PayAmount, $PayDescription); * * Wobei $PayReicer der Username des Empfängers bei * Primusportal.de ist. $PayAmount ist der gerundete( !! ) Betrag an Primera, * die der Empfänger erhalten soll. $PayDescription ist eine von Ihnen * festgelegte kurze Beschreibung. Die Länge dieses Textes darf 100 Zeichen * nicht überschreiten. Beispiel: * $status = $apiInstance->payPrimera('garbage', 10000, 'Auszahlung IhreSeite.de - ID: 12345'); * 3. Überprüfung des Status (Rückgabecode): * CODE: * if ($status === false) { * // Ein Fehler ist aufgetreten * // Fehlerbehandlung hier einfügen... * } else { * // Auszahlung erfolgreich durchgeführt * // Führen Sie hier Ihre Datenbankabfragen durch, um die Auszahlung zu * // bestätigen... * } * * Die komplette Rückgabe des Interfaces wird als assoziatives Array in der Klassen- * variable $data gespeichert: * $data = array( * 'status' => Rückgabecode (PI_DONE, PI_SENDER_ERROR, ...), * 'statustext' => Status in Worten (z.B.: 'Transaktion erfolgreich durchgeführt'), * ); * * * @author Andreas Schmidt * @author Roland Haeder * @version 1.0 - beta * @copyright (c) 2007 by Primusportal.de * @copyright (c) 2008, 2011 by Roland Haeder */ class PrimeraApi extends BaseFrameworkSystem { /** * Fehler - Interfacebenutzer */ const PI_ERROR = -1; /** * Statuscode für erfolgreich ausgeführte Transaktion */ const PI_DONE = 200; /** * Fehler - User existiert nicht oder ist gesperrt */ const PI_RECEIVER_ERROR = 301; /** * Sender-Account Fehler (User nicht existent, gesperrt, ...) */ const PI_SENDER_ERROR = 401; /** * Betrag fehler */ const PI_AMOUNT_ERROR = 501; /** * Zu wenig Primera */ const PI_TOO_LESS_PRIMERA = 502; /** * User nicht aktiv oder existiert nicht */ const PI_USER_CHECK_ERROR = 601; /** * User aktiv */ const PI_USER_CHECK_OK = 602; /** * Primerastand erfolgreich geholt */ const PI_GET_PRIMERA_DONE = 701; /** * HTTP-EOL */ const HTTP_EOL = "\r\n"; /** * URL für das Interface auf dem Primusserver: */ private $host = 'www.primusportal.de'; private $path = '/transfer.interface.2.0.php'; private $errno = 0; private $err = ''; private $separator = ':'; private $username = ''; private $password = ''; private $data = array(); /** * Konstruktor */ public function __construct ($primusUsername, $primusPassword) { // Call parent constructor parent::__construct(); // Set data $this->username = $primusUsername; $this->password = $primusPassword; } /** * Anfrage senden und Rueckgabecode in Variable speichern */ private function queryApi ( $data = array() ) { $fp = fsockopen($this->host, 80, $this->errno, $this->_err); if (!$fp) return false; $data['PrimusInterface_Username'] = base64_encode($this->username); $data['PrimusInterface_Password'] = base64_encode(md5($this->password)); // POST-Daten uebermitteln: $queryData = http_build_query($data, '', '&'); $request .= 'POST ' . $this->path . 'HTTP/1.1' . self::HTTP_EOL; $request .= 'Host: ' . $this->host . self::HTTP_EOL; $request .= 'Content-type: application/x-www-form-urlencoded' . self::HTTP_EOL; $request .= 'Content-length: '. strlen($queryData) . self::HTTP_EOL; $request .= 'Connection: close' . self::HTTP_EOL; $request .= self::HTTP_EOL; $request .= $queryData; fputs($fp, $request); $return = ''; while (!feof($fp)) { $return .= fgets($fp, 128); } // END - while $content = explode('', $return); return $content[1]; } /** * Funktion parst die Rückgabe vom Transferskript: */ private function parseContent ( $content ) { $x = explode("\n", $content); $return = array(); foreach($x as $currentLine) { $line_exploded = explode($this->separator, $currentLine,2); if (count($line_exploded) > 1) { $return[$line_exploded[0]] = $line_exploded[1]; } // END - if } // END - foreach return $return; } /** * @param int/string $Receiver UserID / Username des Empfängers * @param int$Amount Betrag in ganzzahligen Primera * @param string $Description Beschreibung (Sichtbar in Einzelauflistung) */ public function payPrimera ($Receiver, $Amount, $Description = '') { $valid = false; $postData = array( 'PrimusInterface_Action' => 'Pay', 'PrimusInterface_Receiver' => base64_encode($Receiver), 'PrimusInterface_Amount' => base64_encode($Amount), 'PrimusInterface_Description' => base64_encode($Description) ); $postReturn = $this->parseContent( $this->queryApi($postData) ); $this->data = $postReturn; if ($postReturn['status'] == '200') { $valid = true; } // END - if return $valid; } /** * Überprüft den Status eines Primus-Users * - existiert der User * - ist er aktiv * @param string/int $User Userid / Username */ public function checkPrimusUser ($userName) { $valid = false; $postData = array( 'PrimusInterface_Action' => 'CheckPrimusUser', 'PrimusInterface_CheckPrimusUser' => $userName ); $postReturn = $this->parseContent( $this->queryApi($postData) ); $this->data = $postReturn; if ($postReturn['status'] == self::PI_USER_CHECK_OK) { $valid = true; } // END - if return $valid; } /** * Die Funktion liefer den aktuellen Primerastand */ public function getPrimera() { $primera = false; $postData = array( 'PrimusInterface_Action' => 'GetPrimera' ); $postReturn = $this->parseContent( $this->queryApi($postData) ); $this->data = $postReturn; if ($postReturn['status'] == self::PI_GET_PRIMERA_DONE) { $primera = $postReturn['primera']; } // END - if return $primera; } } // [EOF] ?>