Scripts

Mollie.nl betaal script

Een lange tijd geleden heb ik bij de tutorials een korte handleiding geplaatst met betrekking tot Mollie.nl Micropayments. Alhoewel het enorm eenvoudig is toe te passen voor verschillende systemen (activeren van advertenties, upgraden van iemand zijn 'score') kreeg ik toch enorm veel vragen. Om die reden heb ik het script maar uitgebreid zodat men een beter voorbeeld heeft om het toe te passen. In plaats van het activeren van een rij zou je natuurlijk ook een query kunnen toepassen om iemand zijn score te updaten, maar dat mag je zelf toepassen.

mollienl-betaal-script
Verwerken.php, deze laat je door Mollie aanspreken zodra een betaling goed is verlopen!

<?php
include('verbinding.php');

$ipadressen = array (
    '82.94.203.80',
    '82.94.203.81',
    '82.94.203.82',
    '82.94.203.83',
    '82.94.203.84',
    '82.94.203.85',
    '82.94.203.86'
);

if($_SERVER['REQUEST_METHOD'] == "GET")
{
    //Iemand roept ons aan met een aantal GET variabelen! Wie is het?
    $ipadres = $_SERVER['REMOTE_ADDR'];

    //We laten alleen de onderstaande ipadressen toe... Die zijn van Mollie!
    if(in_array($ipadres, $ipadressen))
    {
        //We verwachten dat er parameters worden meegestuurd.
        if(isset($_GET['parameter']) && !empty($_GET['parameter']))
        {
            //Zijn deze parameters numeriek?
            if(is_numeric($_GET['parameter'][1]) && is_numeric($_GET['parameter'][2]))
            {
                $id		= mysql_real_escape_string($_GET['parameter'][1]);
                $inlogcode 	= mysql_real_escape_string($_GET['parameter'][2]);
                
                //Alles klopt! Activeer die rij!
                $query 		= "UPDATE inlogcodes SET geactiveerd = 'j', tijd = NOW() WHERE id = '".$id."' AND inlogcode = '".$inlogcode."'";
                $resultaat 	= mysql_query($query);
                
                if($resultaat && mysql_affected_rows() == 1)
                {
                        //Dit is de enige output die Mollie kan hebben... de betaling is ontvangen!        
                        echo 'OK';
                }
            }
        }
    }
}
?>

Mollie.php, deze laat je door de gebruiker openen. Hij/zij krijgt de simpele keuze tussen het aanvragen van een code om een betaling op te starten of om in te loggen met een reeds aangevraagde (en evt. betaalde) code. Dat inloggen is niet altijd nodig... Als je alleen een rij wilt updaten zou je dat er dus ook uit kunnen halen, maar wat als je nou een bepaalde download wilt aanbieden? Of een spelletje? Die kan je daar in het inlog gedeelte invoegen.

[code]
<?php
//Hier vul je je mollie micropaymentid in.
$mollieid	    = '202425';
$molliepartnerid    = '15115';

$acties 	= array('inloggen','aanvragen');

include('verbinding.php');
?>
<html>
<head>
<script language="javascript" src="http://www.mollie.nl/partners/js/<?php echo $molliepartnerid; ?>.js"> </script>
<title>Mollie.nl PHP-Script.</title>
</head>
<body>
<?php
if(isset($_GET['actie']) && !empty($_GET['actie']))
{
	if(in_array($_GET['actie'],$acties))
	{
		$actie = mysql_real_escape_string($_GET['actie']);
		
		switch($actie)
		{
			case 'inloggen':
				if($_SERVER['REQUEST_METHOD'] == 'POST')
				{
					if(isset($_POST['inlogcode']) && !empty($_POST['inlogcode']))
					{
						if(is_numeric($_POST['inlogcode']))
						{
							$inlogcode = mysql_real_escape_string($_POST['inlogcode']);
							
							$query = "SELECT id, geactiveerd FROM inlogcodes WHERE inlogcode = '".$inlogcode."'";
							$resultaat = mysql_query($query);

							if($resultaat && mysql_num_rows($resultaat) == 1)
							{
								$rij 	= mysql_fetch_array($resultaat);

								$id 		= $rij['id'];
								$geactiveerd 	= $rij['geactiveerd'];

								if($geactiveerd == 'j')
								{
                                                                        echo '<p>Gefeliciteerd, deze inlogcode is succesvol geactiveerd!</p>';
								}else{
									echo '<p>Deze code is nog niet betaald en dus ook nog niet geactiveerd. Je kunt <a href="#" onClick="mbetaal(\'id='.$mollieid.'&parameter[1]='.$id.'&parameter[2]='.$inlogcode.'\');return false;">hier</a> klikken om hem alsnog te activeren.</p>';
								}
							}else{
								echo '<p>Er bestaat geen account met deze inlogcode!</p>';
							}
						}else{
							echo '<p>Ik verwacht een numerieke inlogcode!</p>';
						}
					}else{
						echo '<p>Ik verwacht een inlogcode!</p>';
					}
				}else{
					echo '<form action="'.$_SERVER['PHP_SELF'].'?actie=inloggen" method="post">';	
                                        echo '<label for="inlogcode" accesskey="i">Inlogcode: </label>';	
                                        echo '<input type="text" id="inlogcode" name="inlogcode" tabindex="1" value="" title="Uw inlogcode"><br><br>';	                        
                                        echo '<input type="submit" name="versturen" value="Versturen" id="versturen" tabindex="2">';	
                                        echo '<input type="reset" id="wissen" name="wissen" value="Wissen" tabindex="3">';	
                                        echo '</form>';		
				}
			break;

			case 'aanvragen':
				$inlogcode  = null;
                                $cijfers    = range(0,9);

				for($i=0; $i < 8; $i++)
				{
					$inlogcode .= $cijfers[mt_rand(0, 9)];
				}

				$query 		= "INSERT INTO inlogcodes (inlogcode,tijd) VALUES ('".$inlogcode."',NOW())";
				$resultaat 	= mysql_query($query);

				if($resultaat && mysql_affected_rows() == 1)
				{
					echo '<p>Je inlogcode is <b>'.$inlogcode.'</b>, het is aan te raden de inlogcode ergens te noteren zodat je deze zomenteen kunt gebruiken om in te loggen. Je kunt nu <a href="#" onClick="mbetaal(\'id='.$mollieid.'&parameter[1]='.mysql_insert_id().'&parameter[2]='.$inlogcode.'\');return false;">hier</a> klikken om deze inlogcode te activeren.</p><p>Als je deze inlogcode geactiveerd hebt kun je <a href="?actie=inloggen">hier</a> inloggen.</p>';
				}else{
					echo '<p>Sorry, er ging iets mis met het updaten van de database!</p>';
				}
			break;
		}

	}else{
		echo 'Sorry, deze actie is niet toegestaan!';
	}
}else{
    echo '<p>Wil je inloggen met een reeds geactiveerde inlogcode? Klik dan <a href="?actie=inloggen">hier</a>!</p>';
    echo '<p>Heb je nog geen inlogcode maar wilt die graag aanvragen? Dan kan dat <a href="?actie=aanvragen">hier</a>!</p>';
}
?>
</body>
</html>
[/code]

En de databasecode :)

[code]
CREATE TABLE `inlogcodes` (
  `id` int(4) NOT NULL auto_increment,
  `inlogcode` int(4) NOT NULL default '0',
  `geactiveerd` enum('j','n') NOT NULL default 'n',
  `tijd` datetime NOT NULL default '0000-00-00 00:00:00',
  PRIMARY KEY  (`id`)
) 
[/code]

Reacties

0
Nog geen reacties.