
Ansich ist dies ein Weg die Spenden zu "automatisieren"
Das System basiert auf dem API das OneBip zur verfügung stellt:
Vorkentnisse in PHP können von Vorteil sein...
Datenbank:
PHP Code:
CREATE TABLE `coins_onebip` (
`id` int(10) NOT NULL auto_increment,
`buyer_id` varchar(100) NOT NULL default '',
`coins` varchar(100) NOT NULL default '',
`status` varchar(100) NOT NULL default '',
`pass` varchar(100) NOT NULL default '',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=11 ;
PHP Code:
<?php
/*
-------------------------------------------------------
------------OneBip IPN System by ooCheateroo---------
-------------Basierend auf OneBip's API Script----------
-------------------------------------------------------
*/
session_start();
// Wenn eine payment_id "übertragen" wird dann: (Wird nicht zwingend benötigt)
if(isset($_REQUEST['payment_id'])){
if(!isset($_SESSION["OneBip_Pass"])){
?>
<?php
// Schauen OB ein hash abgesendet wurde, wenn nicht dann:
if (!isset($_REQUEST['hash'])) {
echo "ERROR: Invalid hash code!!!";
exit(); //Raus, raus, raus, abbruch
}else{
//Wenn doch, dann:
$my_api_key = 'Dieser Key wird über die Accountinfos festgelegt'; // Normaler Hash-Code (Nicht gecryptet) => Bei den Einstellungen zu finden
$basename = basename($_SERVER['REQUEST_URI']);// Hiner dem haupt URI, um auf die aktuelle Seite zuzugreifen ( z.B '/index.php') wird gelöscht.
$pos = strrpos($basename, "&hash");//Sucht die position von &hash im string (URI)
$basename_without_hash = substr($basename, 0, $pos);//Den URI ohne den hash
$my_hash = md5($my_api_key . $basename_without_hash);//Mein Key und Uri alles verschlüsselt
//Wenn mein hash dem im Request nicht gleicht, dann:
if ($my_hash != $_REQUEST['hash']) {
log("ERROR: this isn't a valid Onebip notification!");
// Note: "log()" sample function -> Wird von OneBip gebraucht ;-)
echo "ERROR: Invalid hash code";
exit();//Alles abgebrochen
}
}
//Wenns jedoch gut ausgeht, dann kommt das:
//Daten die OneBip zu einem Sendet
$payment_id = $_REQUEST['payment_id'];
$country = $_REQUEST['country'];
$currency = $_REQUEST['currency'];
$price = $_REQUEST['price'];
$tax = $_REQUEST['tax'];
$commission = $_REQUEST['commission'];
$amount = $_REQUEST['amount'];
$original_price = $_REQUEST['original_price'];
$original_currency = $_REQUEST['original_currency'];
if($error){
echo "ERROR: Fehler bei der Zahlung!";
}else{
echo 'OK'; // OneBip braucht ein OK als Zeichen dass alles gut ausgegangen ist
//DB Verbindung herstellen
include('database.php');
$pass2 = rand(1000,1000000);
$_SESSION["OneBip_Pass"] = $pass2;
$pass = md5($pass2);
$money = $price*100; //1 Cent = 100 Coins
$sql = mysql_query("SELECT * FROM coins_onebip WHERE buyer_id = '$payment_id'");
$menge = mysql_num_rows($sql);
//Onebip refresht das ganze ständig, deswegen wird kontrolliert ob die Buyer_id schon benutzt wurde/ eingesetzt wurde
if($menge == 0)
{
mysql_query("INSERT INTO coins_onebip (buyer_id, coins, status, pass) VALUES ('". mysql_real_escape_string($payment_id) ."', '".mysql_real_escape_string($money)."', 'Aktiv' , '".mysql_real_escape_string($pass)."') ");
}
}
//Ende OK
//OneBip pass aktiv
}else{
echo "ERROR: Anderes OneBip Passwort!";
}
//Wenn gar kein OneBip geöffnet wird
}else{
echo "ERROR: Nichterlaubter Zutritt!!!";
}
?>
So hier ne kleine Erklärung:
1. Ihr fügt die DB in eure mt2 Datenbank ein.
2. Ihr macht ne php Datei, mit dem IPN Sys und schreib einen Buchtsabensalat hier rein (Dies ist euer API Key)
PHP Code:
$my_api_key = 'Buchtabensalat hier rein'; // Normaler Hash-Code (Nicht gecryptet) => Bei den Einstellungen zu finden.
Beispiel der databse.php
PHP Code:
<?php
mysql_connect("localhost", "root" , "passwort")
or die("Verbindung zur Datenbank konnte nicht hergestellt werden");
mysql_select_db("datenbank") or die ("Datenbank konnte nicht ausgewählt werden");
?>
5. Ihr schreibt den API Key von Vorhin hier rein (Onebib vergleicht den Code im IPN System mit dem Key den ihr hier eingebt, ist dieser nicht gleich wird das Script abgebrochen)
6. Ihr ändert die Thank You Page zu eurer Seite
7. Ihr ändert die Nortification URL zu eurer Seite mit dem IPN Sys.
8. Ihr geht zu Request Money -> My Buttons und macht euch nen Button.
9. Den HTML-Code des Buttons macht ihr auf eure Seite
10. Jetzt aufpassen: Wenn der User was kauft wird zwar alles in die coins_onebip Datenbank geschrieben, er hat aber nochimmer keine Coins:
Dies kann man so lösen machen (Ne seperate Datei erstellen mit diesem Inhalt):
PHP Code:
<?php
/*
-------------------------------------------------------
------------OneBip IPN System by ooCheateroo---------
-------------Basierend auf OneBip's API Script----------
-------------------------------------------------------
*/
session_start();
if(isset($_POST['submit2']) && $_POST['submit2'] == 'Coins abholen') {
require_once('database.php');
if(isset($_SESSION["OneBip_Pass"])){
$username = $_SESSION["username"]; // Gegebenenfalls anpassen
$passw = md5($_SESSION["OneBip_Pass"]);
$id = mysql_real_escape_string($_POST["id"]);
$ip = $_SERVER['REMOTE_ADDR'];
$zeit = time();
$zeit_ende = $zeit + 86400; //Ein Tag hat 86400 Sekunden
//IP-Sperre Anschaun
$sqla = mysql_query("SELECT * FROM ip_sperre WHERE ip = '$ip' AND $zeit < zeit");
$mengea = mysql_num_rows($sqla);
if($mengea != 0)
{
echo "Du bist ein Tag lang gesperrt!";
}else{
//Test ob alles richtig eingegeben
$sqls = mysql_query("SELECT * FROM coins_onebip WHERE buyer_id = '$id' AND status = 'Aktiv' AND pass = '$passw'");
$menge = mysql_num_rows($sqls);
if($menge == 0)
{
//IP sperre bei falscher Eingabe
mysql_query("INSERT INTO ip_sperre (ip, zeit) VALUES ('$ip', '$zeit_ende') ");
echo "ID falsch, überprüfe deine Daten.";
}else{
$sql = mysql_query("SELECT * FROM coins_onebip WHERE buyer_id = '$id'");
$row = mysql_fetch_array($sql);
$coins = $row['coins'];
mysql_query("UPDATE coins_onebip SET status='Abgeschlossen' WHERE buyer_id = '$id'");
$eintrag = "UPDATE account SET coins=coins+'$coins' WHERE login = '$username'";
$eintragen = mysql_query($eintrag);
if($eintragen == true)
{
unset($_SESSION["OneBip_Pass"]);
echo "Sie haben jetz $coins Coins mehr auf dem Konto";
}
else
{
echo "Fehler";
}
//menege = 0 else
}
//IP kontrolle
}
//session
}else{
echo "Du hast keine Coins gekauft!!!";
}
//Btton:
}
?>
HTML Code:
<br> <form action="" method="post"> ID:<br> <input type="text" size="24" maxlength="50" name="id" ><br> <input type="submit" name="submit2" value="Coins abholen"> </form>
Achtung: Ihr müsst die Daten in der Datenbank lassen, da Onebib das ganze ständig updatet. Dies hat zur Folge dass wenn ihr einen Abgeschlossenen Datensatz löscht, dass OneBip wieder einen neuen in der Datenbank erstellt, wodurch der Spieler die Coins nochmals abrufen kann.
Achtung 2: Wenn ein User Coins gekauft hast muss er als erstes die Coins eincashen bevor er neue kaufen kann!!!
#Update- ip-Sperre:
PHP Code:
CREATE TABLE `ip_sperre` (
`id` int(10) NOT NULL auto_increment,
`ip` varchar(100) NOT NULL default '',
`zeit` varchar(100) NOT NULL default '',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=11 ;
mfg, ooCheateroo







