4 * -------------------------------------------
5 * Mit dieser Klasse ist ein einfacher Primeratransfer von Ihrem Account
6 * zu dem Account eines bei Primusportal.de registrierten Mitglieds m�glich.
8 *------------------ Aenderungen durch Roland Haeder 09.08.2008 ----------------
9 * Klasse umbenannt nach PrimeraApi, damit sie in das Framework besser passt.
10 * Zudem sind alle oeffentlichen Attribute nun privat, der Konstruktor hat den
11 * neuen "magischen" Namen __construct() und "normale" Konstanten sind nach
12 * Klassenkonstanten umbenannt. Unsinnige else-Bloecke sind noch umgewandelt.
13 * Methodennamen fangen nun immer mit einem kleinen Buchstaben an. Zudem sind
14 * die Methoden Pay,Query und Parse umbenannt.
15 *------------------ Aenderungen durch Roland Haeder 09.08.2008 ----------------
17 * Die Einbindung des Interfaces geschieht folgenderma�en:
18 * 1. Einbindung der Klasse in Ihr PHP-Auszahlungsskript:
20 * require_once( "PFAD/ZU/DER/KLASSE/PrimeraApi.class.php" );
21 * $PPUsername = "username"; // Ihr Username bei Primusportal
22 * $PPPassword = "passwort"; // Ihr Passwort bei Primusportal
24 * $Interface = new PrimeraApi($PPUsername, $PPPassword);
25 * 2. Durchf�hren einer Auszahlung:
27 * $Status = $Interface->payPrimera($PayReceiver, $PayAmount, $PayDescription);
29 * Wobei $PayReicer der Username des Empf�ngers bei
30 * Primusportal.de ist. $PayAmount ist der gerundete( !! ) Betrag an Primera,
31 * die der Empf�nger erhalten soll. $PayDescription ist eine von Ihnen
32 * festgelegte kurze Beschreibung. Die L�nge dieses Textes darf 100 Zeichen
33 * nicht �berschreiten. Beispiel:
34 * $status = $Interface->payPrimera("garbage", 10000, "Auszahlung IhreSeite.de - id: 12345");
35 * 3. �berpr�fung des Status (R�ckgabecode):
38 * // Ein Fehler ist aufgetreten
39 * // Fehlerbehandlung hier einf�gen...
41 * // Auszahlung erfolgreich durchgef�hrt
42 * // F�hren Sie hier Ihre Datenbankabfragen durch, um die Auszahlung zu
46 * Die komplette R�ckgabe des Interfaces wird als assoziatives Array in der Klassen-
47 * variable __data gespeichert:
48 * __data => array('status' => R�ckgabecode (PI_DONE, PI_SENDER_ERROR, ...),
49 * "statustext" => Status in Worten (z.B.: "Transaktion erfolgreich durchgef�hrt"),
53 * @author Andreas Schmidt <xxgarbagexx@web.de>
54 * @author Roland Haeder <webmaster@ship-simu.org>
56 * @copyright (c) 2007 by Primusportal.de
57 * @copyright (c) 2008 by Roland Haeder
58 * @copyright 2009, 2010 by Mailer Developer Team
62 * Fehler - Interfacebenutzer
67 * Statuscode f�r erfolgreich ausgef�hrte Transaktion
72 * Fehler - User existiert nicht oder ist gesperrt
74 const PI_RECEIVER_ERROR = 301;
77 * Sender-Account Fehler (User nicht existent, gesperrt, ...)
79 const PI_SENDER_ERROR = 401;
84 const PI_AMOUNT_ERROR = 501;
89 const PI_TOO_LESS_PRIMERA = 502;
92 * User nicht aktiv oder existiert nicht
94 const PI_USER_CHECK_ERROR = 601;
99 const PI_USER_CHECK_OK = 602;
102 * Primerastand erfolgreich geholt
104 const PI_GET_PRIMERA_DONE = 701;
107 * URL f�r das Interface auf dem Primusserver:
109 var $host = 'http://www.primusportal.de';
110 var $path = '/transfer.interface.2.0.php';
115 var $separator = ':';
127 function PrimeraApi ($PPUsername, $PPPassword) {
129 $this->username = $PPUsername;
130 $this->password = $PPPassword;
134 * Anfrage senden und R�ckgabecode in Variable speichern
136 function queryApi ( $data = array() ) {
137 // Base64-encode username and password hash
138 $data['PrimusInterface_Username'] = base64_encode($this->username);
139 $data['PrimusInterface_Password'] = base64_encode($this->password);
142 $return = sendPostRequest($this->host.$this->path, $data);
144 // Convert the array into a full string
145 $returnStr = implode(chr(10), $return);
147 // Extract the real content, strip header away
148 $content = explode('<!-- return-start -->', $returnStr);
150 // Store headers away for debugging
151 $this->headers = $content[0];
153 // Return the content
158 * Funktion parst die R�ckgabe vom Transferskript:
160 function parseContent ( $content ) {
161 $x = explode(chr(10), $content);
163 foreach ($x as $currentLine) {
164 $line_exploded = explode(':', $currentLine,2);
165 if (count($line_exploded) > 1) {
166 $return[$line_exploded[0]] = $line_exploded[1];
173 * @param int/string $Receiver UserID / Username des Empf�ngers
174 * @param int $Amount Betrag in ganzzahligen Primera
175 * @param string $Description Beschreibung (Sichtbar in Einzelauflistung)
177 function payPrimera ($Receiver, $Amount, $Description = '') {
179 $postData = array('PrimusInterface_Action' => 'Pay',
180 'PrimusInterface_Receiver' => base64_encode($Receiver),
181 'PrimusInterface_Amount' => base64_encode($Amount),
182 'PrimusInterface_Description' => base64_encode($Description) );
184 $postReturn = $this->parseContent( $this->queryApi($postData) );
186 $this->data = $postReturn;
187 if ($postReturn['status'] == '200') {
194 * �berpr�ft den Status eines Primus-Users
195 * - existiert der User
197 * @param string/int $User Userid / Username
199 function CheckPrimusUser($User) {
201 $postData = array('PrimusInterface_Action'=> 'CheckPrimusUser',
202 'PrimusInterface_CheckPrimusUser' => $User);
204 $postReturn = $this->parseContent( $this->queryApi($postData) );
206 $this->data = $postReturn;
208 if ($postReturn['status'] == self::PI_USER_CHECK_OK) {
215 * Die Funktion liefer den aktuellen Primerastand
217 function getPrimera() {
219 $postData = array( 'PrimusInterface_Action' => 'GetPrimera' );
220 $postReturn = $this->parseContent( $this->queryApi($postData) );
222 $this->data = $postReturn;
223 if ($postReturn['status'] == self::PI_GET_PRIMERA_DONE) {
224 $primera = $postReturn['primera'];
232 function getData () {