Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > General Coding > Coding Tutorials
You last visited: Today at 22:36

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



[How2]IPN System mit OneBip

Discussion on [How2]IPN System mit OneBip within the Coding Tutorials forum part of the General Coding category.

Reply
 
Old   #1
 
elite*gold: 0
Join Date: Dec 2008
Posts: 877
Received Thanks: 788
[How2]IPN System mit OneBip


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` (
  `
idint(10NOT NULL auto_increment,
  `
buyer_idvarchar(100NOT NULL default '',
  `
coinsvarchar(100NOT NULL default '',
  `
statusvarchar(100NOT NULL default '',
  `
passvarchar(100NOT NULL default '',
  
PRIMARY KEY  (`id`)
ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=11 
IPN (Instant Payment Notification):
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($basename0$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. 
3. Ihr ladet die php Datei auf euren Webspace hoch (die database.php muss natürlich angepasst werden...)
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");
?>
4. Ihr geht zu OneBip Pannel dort zu Manage -> My Profile und dann zu Settings.
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:
}
?>
Und das hier drunter:
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>
Mit diesem Script können die Spieler ihre Coins abrufen indem sie die OneBip ID des Kaufs eingeben. Nach dem Erhalten der Coins wird der Status der ID in eurer DB auf Abgeschlossen gesetzt, dadurch können die Spieler die Coins nicht nochmal bekommen.

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` (
  `
idint(10NOT NULL auto_increment,
  `
ipvarchar(100NOT NULL default '',
  `
zeitvarchar(100NOT NULL default '',
  
PRIMARY KEY  (`id`)
ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=11 
#Update2: Sessionsicherung eingebaut

mfg, ooCheateroo
ooCheateroo is offline  
Thanks
14 Users
Old 03/18/2011, 20:06   #2
 
elite*gold: 0
Join Date: Dec 2009
Posts: 1,807
Received Thanks: 866
nice !
Luna.Host is offline  
Old 03/18/2011, 20:08   #3
 
elite*gold: 121
Join Date: Feb 2008
Posts: 654
Received Thanks: 411
Hast ne PM. Und danke für's releasen!
Legend2007 is offline  
Old 03/18/2011, 20:28   #4

 
nico_w's Avatar
 
elite*gold: 0
Join Date: Aug 2008
Posts: 5,150
Received Thanks: 10,486
Du musst ja nicht Zwangsweise eine numerische ID nehmen, kannst ja auch eine Zahlen/Buchstabenkombination nehmen, ist dann nichtmehr so einfach die rauszufinden.
nico_w is offline  
Old 03/18/2011, 20:30   #5
 
elite*gold: 35
Join Date: Jun 2009
Posts: 2,187
Received Thanks: 6,906
Thanks.
Hat das was mit IP zu tun oder mit IPN?
Weil IPN kenn ich nich xD

Ach nico lies mal pls pn's habe dir vor fast 6 Wochen eine geschrieben und immer noch keine antwort
CranK™ is offline  
Old 03/18/2011, 20:32   #6



 
sLay.'s Avatar
 
elite*gold: 80
The Black Market: 121/0/1
Join Date: Feb 2010
Posts: 4,407
Received Thanks: 2,857
Cool das du meinen Thread erwähnt hast Hatte auch ebend fertiges Script von MKMT2 bekommen ;p
sLay. is offline  
Old 03/18/2011, 20:37   #7
 
elite*gold: 0
Join Date: Dec 2008
Posts: 877
Received Thanks: 788
Quote:
Originally Posted by nico_w View Post
Du musst ja nicht Zwangsweise eine numerische ID nehmen, kannst ja auch eine Zahlen/Buchstabenkombination nehmen, ist dann nichtmehr so einfach die rauszufinden.
An sich ist es ja ne gute Idee, jedoch lässt sich die Session des Users nicht aufrufen und so hat man zwar nen Kombination drauf, jedoch weiß der User es nicht (Leider verschickt OneBip keine request mit der E-mail also auch keine Kontaktmöglichkeit). Die ID hat der user in seinem OneBip Konto stehen...

Quote:
Originally Posted by sLay. View Post
Cool das du meinen Thread erwähnt hast Hatte auch ebend fertiges Script von MKMT2 bekommen ;p
Wär interessant mein und deren Script zu vergleichen, natürlich nur wenn du deren Einverständniss hast...
ooCheateroo is offline  
Old 03/18/2011, 20:41   #8



 
sLay.'s Avatar
 
elite*gold: 80
The Black Market: 121/0/1
Join Date: Feb 2010
Posts: 4,407
Received Thanks: 2,857
Yo hab ich. Adde mich in Skype oder ICQ.
Skype:vladii.1
sLay. is offline  
Old 03/18/2011, 21:46   #9
 
elite*gold: 40
Join Date: Mar 2010
Posts: 1,156
Received Thanks: 516
danke,werde es mal probieren
Imperium2 is offline  
Thanks
1 User
Old 03/18/2011, 21:56   #10
 
CanbiZ's Avatar
 
elite*gold: 0
Join Date: Dec 2010
Posts: 1,237
Received Thanks: 351
Danke!
CanbiZ is offline  
Old 03/18/2011, 22:02   #11


 
AkinCooperation's Avatar
 
elite*gold: 157
Join Date: May 2010
Posts: 2,122
Received Thanks: 504
Thx 4 how to!
AkinCooperation is offline  
Old 03/19/2011, 08:50   #12
 
elite*gold: 0
Join Date: Dec 2008
Posts: 877
Received Thanks: 788
So hab jetzt ne zusätzliche sicherheit mit Sessions eingebaut, der User darf sich nur nicht ausloggen...
ooCheateroo is offline  
Old 03/19/2011, 16:44   #13
 
elite*gold: 121
Join Date: Feb 2008
Posts: 654
Received Thanks: 411
Ich würd die Session noch in cookies abspeichern die nach dem ausloggen auch gelöscht werden weil die Session allein wird nur für ca. 30 - 60 minuten aufrecht gehalten.. wenn nicht weniger.. kommt aber an den php.ini einstellungen an.. wenn du das ganze dann in cookies abspeicherst, musst du dann noch einen check implementieren was überprüft ob der gespeicherte pass auch gültig ist (noch nicht benutzt or w.e)
Legend2007 is offline  
Old 03/19/2011, 18:55   #14
 
~|-FairPlay-|~'s Avatar
 
elite*gold: 47
Join Date: Dec 2009
Posts: 370
Received Thanks: 57
das teste ich gleich mal net schlecht danke
~|-FairPlay-|~ is offline  
Old 03/19/2011, 22:48   #15
 
KillHumans's Avatar
 
elite*gold: 0
Join Date: Jan 2010
Posts: 416
Received Thanks: 95
Skype: LoopYz555


Pls i need your help!

Thank You...
KillHumans is offline  
Reply

Tags
coins, handy, ipn, onebip, spenden


Similar Threads Similar Threads
[How2] weiteres Upp-system einbauen
02/06/2011 - Metin2 PServer Guides & Strategies - 22 Replies
Hi , ich weis nicht ob es das schonmal gab , falls ja könnt ihr mein ignor , reported oder what ever aber nicht spammen Nun ja , ich möchte euch zeigen wie ihr ein ganz neues verfahren zum uppen von items einstellen könnt , und nicht immer mit 3 perlen oder traktek machen braucht. was wir brauchen: -Einen Server -navicat -Ein wenig Brain
[S]10 cent PSC [B] 2,49€ Onebip
02/02/2011 - Trading - 0 Replies
Suche einen psc rest von mindestens 10 cent. zahle 2,49 Onebip an euch :)



All times are GMT +1. The time now is 22:37.


Powered by vBulletin®
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2026 elitepvpers All Rights Reserved.