Beste cp'ers,
Ik ben nu aan de slag gegaan met de TargetPay wallie api.
(http://www.targetpay.com/info/…ed-wallie-docu?setlang=en)
Daar heb ik de volgende code uit kunnen bakken
(met als standaard script het bel script van TP)
PHP
<div class="box-xl">
<div class="box">
<div align="center">
<?php
class ip2country {
public $mysql_host='localhost';
public $db_name='ip2c';
public $db_user='user';
public $db_pass='';
public $table_name='ip2c';
private $ip_num=0;
private $ip='';
private $country_code='';
private $country_name='';
private $con=false;
function ip2country()
{
$this->set_ip();
}
public function get_ip_num()
{
return $this->ip_num;
}
public function set_ip($newip='')
{
if($newip=='')
$newip=$this->get_client_ip();
$this->ip=$newip;
$this->calculate_ip_num();
$this->country_code='';
$this->country_name='';
}
public function calculate_ip_num()
{
if($this->ip=='')
$this->ip=$this->get_client_ip();
$this->ip_num=sprintf("%u",ip2long($this->ip));
}
public function get_country_code($ip_addr='')
{
if($ip_addr!='' && $ip_addr!=$this->ip)
$this->set_ip($ip_addr);
if($ip_addr=='')
{
if($this->ip!=$this->get_client_ip())
$this->set_ip();
}
if($this->country_code!='')
return $this->country_code;
if(!$this->con)
$this->mysql_con();
$sq="SELECT country_code,country_name FROM ".$this->table_name. " WHERE ". $this->ip_num." BETWEEN begin_ip_num AND end_ip_num";
$r=@mysql_query($sq,$this->con);
if(!$r)
return '';
$row=@mysql_fetch_assoc($r);
$this->close();
$this->country_name=$row['country_name'];
$this->country_code=$row['country_code'];
return $row['country_code'];
}
public function get_country_name($ip_addr='')
{
$this->get_country_code($ip_addr);
return $this->country_name;
}
public function get_client_ip()
{
$v='';
$v= (!empty($_SERVER['REMOTE_ADDR']))?$_SERVER['REMOTE_ADDR'] :((!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) ? $_SERVER['HTTP_X_FORWARDED_FOR']: @getenv('REMOTE_ADDR'));
if(isset($_SERVER['HTTP_CLIENT_IP']))
$v=$_SERVER['HTTP_CLIENT_IP'];
return htmlspecialchars($v,ENT_QUOTES);
}
public function mysql_con()
{
$this->con=@mysql_connect($this->mysql_host,$this->db_user,$this->db_pass);
if(!$this->con)
return false;
if( !mysql_query('USE ' . $this->db_name))
{
$this->close();
return false;
}
return true;
}
public function get_mysql_con()
{
return $this->con;
}
public function create_mysql_table()
{
if(!$this->con)
return false;
mysql_query('DROP table ' . $this->table_name,$this->con);
return mysql_query("CREATE table " . $this->table_name ." (id int(10) unsigned auto_increment, begin_ip varchar(20),end_ip varchar(20),begin_ip_num int(11) unsigned,end_ip_num int(11) unsigned,country_code varchar(3),country_name varchar(150), PRIMARY KEY(id),INDEX(begin_ip_num,end_ip_num))ENGINE=MyISAM",$this->con);
}
public function close()
{
@mysql_close($this->con);
$this->con=false;
}
}
$ip2c=new ip2country();
$ip2c->mysql_host='localhost';
$ip2c->db_user='dbuser';
$ip2c->db_pass='password';
$ip2c->db_name='database';
$ip2c->table_name='ip2c';
if(isset($_POST['submit'])){
if(is_numeric($_POST['amount']) && $_POST['amount'] < 851 && $_POST['amount'] > 5){
?>
<META HTTP-EQUIV="Refresh" CONTENT="0; URL=callcredits.php?a=wallie2&am=<?php echo $_POST['amount']; ?>&c=31">
<?php
} else{
echo '<h1>Bestelpagina</h1>';
echo '<font color="red">Dit aantal is geen getal, is groter dan 850 credits, of kleiner dan 6 credits. Gelieve een getal in te vullen, kleiner of gelijk aan 800, en groter of gelijk aan 6 credits.</font><br />';
echo '<a href="callcredits.php?a=wallie2&am=15">Terug</a>';
echo '<div>';
}
} else{
if($_GET['am'] > 800 && $_POST['amount'] > 5 && is_numeric($_GET['am'])){
echo '<h1>Bestelpagina</h1>';
echo '<font color="red">ERROR: Dit is geen getal, is groter dan 800 of kleiner dan 6 credits.</font><br />';
echo '<a href="callcredits.php?a=wallie2&am=15">Terug</a>';
echo '<div>';
} else{
if($_GET['am'] == "" || $_GET['am'] == "0"){
$_GET['am'] = "15";
}
if(date("w") == 5 && date("H") == 20){
$numb = 0.0423*$_GET['am']/2;
} else{
$numb = 0.0423*$_GET['am'];
}
$reken = number_format($numb, 2, ',', '.');
$reken2 = round($numb, 2);
// Gegevens van Targetmedia
//$country = geoip_country_code_by_name('mafiastar.eu');
$kosten = $numb/; //(corresponderend met het betaalnummer - Dient correct te worden weergegeven op de site. Eventuele boetes komen voor uw eigen rekening.)
$layoutcode = '31055'; //Uw layoutcode waarop het tegoed moet worden bijgeschreven
$testmodule = '0'; //Is dit script nog in de testfase 1=ja, 0=nee
$omschrijving = ''.$_GET['am'].' credits voor '.$own['username'].'';
$url = 'http://www.targetpay.com/wallie/start?rtlo='.$layoutcode.'&description='.$omschrijving.'&amount='.$reken2.'&userip='.$_SERVER['REMOTE_ADDR'].'&returnurl=http://mafiastar.eu/callcredits.php?a=wallie2';
//Het script:
echo '<h1>1) Aantal credits bepalen:</h1>';
?>
<form method="post">
<input type="text" name="amount" value="<?php echo $_GET['am']; ?>" maxlength="4" size="1"> credits
<input name="submit" value="Verander" type="submit"><br />
</form><br />
<h1>2) Controleer de gegevens:</h1>
<table width="35%">
<tr>
<td><b>IP:</b></td>
<td><?php echo $_SERVER['REMOTE_ADDR']; ?></td>
</tr>
<tr>
<td><b>Land:</b></td>
<td><?php echo $ip2c->get_country_name(); ?></td>
</tr>
<tr>
<td><b>Landcode:</b></td>
<td><?php echo $ip2c->get_country_code(); ?></td>
</tr>
<tr>
<td><b>Aantal credits:</b></td>
<td><?php echo $_GET['am']; ?> credits</td>
</tr>
<tr>
<td><b>Gebruikersnaam:</b></td>
<td><?php echo $own['username']; ?></td>
</tr>
<tr>
<td><b>Bedrag te betalen:</b></td>
<td>€<?php echo $reken; ?></td>
</tr>
</table>
<?php
echo "<h1>3) Afrekenen</h1>
<font color=\"red\">Bepaal eerst het aantal credits, en check de gevens hierboven voordat je onderstaand nummer gaat bellen!</font><br />
<div class='betaling'>";
// De bezoeker komt 'fris' op deze pagina. Er wordt gevraagt om het nummer te bellen en de voorgelezen code in te voeren in het invoerveld hieronder.
echo "<form action='".$url."' method='post'>
<span class='call'>Om €".$reken." te betalen, en ".$_GET['am']." credits te krijgen, doe je het volgende:<br /></span>
<span class='call'>Klik op de knop \"verder\":</span><br><br>
<input type='submit' value='Verder' name='betaal'>
</form>";
// De betaalknop is ingedrukt. We controleren hieronder of de betaling is voldaan.
$paycode = $_POST['code'];
// Gegevens ophalen
$url="http://www.targetpay.com/wallie/check?rtlo=$layoutcode&trxid=$paycode&once=1";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); // return into a variable
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
$reactie = curl_exec($ch);
// Hier controleren we of de reactie 000 OK weergeeft, zo ja dan is de betaling voldaan.
switch ($reactie) {
case "000 OK":
echo '<b>Bedankt voor je betaling.</b><br />
De betaling is succesvol gelukt, er zijn ';
echo $_GET['am']; echo ' credits bijgeschreven.<br />Veel plezier ermee!';
mysql_query("UPDATE `users` SET `callcredits`=`callcredits`+'{$_GET['am']}' WHERE `username`='" . $own['username'] . "'");
mysql_query("INSERT INTO `paylogs` (naar, hoeveel, bedrag, ontvangen) VALUES ('" . $own['username'] . "', '{$_GET['am']}', '$reken', '1')");
break;
// Als niet de 000 OK code wordt teruggegeven hebben we hier een verdere Nederlandse vertaling van de foutcode.
case "TP0010 Transaction not finished, try again later":
echo "<span class='allert'> ! </span> De betaling is niet voltooid, probeer het later nog eens.";
break;
case "TP0012 Transaction not finished and expired":
echo "<span class='allert'> ! </span> De betaling is niet voltooid, en is verlopen.";
break;
case "TP0014 Already redeemed at YYYY-MM-DD HH:MM:SS":
echo "<span class='allert'> ! </span> De betaling is al eerder verwerkt.";
break;
case "TP0020 No layoutcode given":
echo "<span class='allert'> ! </span> Er is geen layoutcode meegegeven";
break;
case "TP0021 No transaction ID given":
echo "<span class='allert'> ! </span> Er is geen transactie ID meegegeven";
break;
case "TP0022 No transaction with this ID":
echo "<span class='allert'> ! </span> Er is geen transactie met dit id!";
break;
case "TP0023 Layoutcode doesn't match transaction":
echo "<span class='allert'> ! </span> De layoutcode is niet voor deze transactie.";
break;
}
if($reactie != "000 OK"){echo "<br> <a href='" . $_SERVER['PHP_SELF'] . "'>« Terug</a>
<br><br><font size='1'>Opmerking: Betaalde pincodes zijn circa 24 uur geldig!</font>";}
}}
echo "</div>";
?>
</div>
Toon Meer
Ik loop vast bij de volgende stap:
2.2 Resultaatcode's
Daar moet ik een trxcode uit halen.
Maar snap niet hoe, met welke checks, en waar ik die uit moet halen?
En, hoe moet ik nu exact checken of er een betaling is?
Ik hoop dat jullie kunnen helpen, want ik vond namelijk geen Wallie api op het net.
Lars:cheer: