payment.php
Rama master · réplica de lectura del repositorio original.
<?php
require_once('./config.php');
error_reporting(E_ERROR | E_PARSE);
session_start();
if (!isset($_POST['item'])){
die();
}
$material_artists_file=htmlentities(trim(file_get_contents('./d/material_artists.txt')));
$material_artists=explode("\n", $material_artists_file);
$material_blacklist_file=htmlentities(trim(file_get_contents('./d/material_blacklist.txt')));
$material_blacklist=explode("\n", $material_blacklist_file);
$artists=$material_artists;
$material_currency=trim(file_get_contents('./d/material_currency.txt'));
$material_paypal_address=trim(file_get_contents('./d/material_paypal_address.txt'));
$material_shipping_file=trim(file_get_contents('./d/material_shipping.txt'));
$material_shippings=explode("\n", $material_shipping_file);
$material_shipping=Array();
$count=count($material_shippings);
$i=0;
while ($i < $count){
$material_shipping[$material_shippings[$i]]=$material_shippings[$i+1];
$i++;
$i++;
}
$material_supports_file=trim(file_get_contents('./d/material_supports_and_prices.txt'));
$material_supports=explode("\n", $material_supports_file);
$material_support=Array();
$i=0;
$count=count($material_supports);
while ($i<$count){
$material_support[$material_supports[$i]]['description']=$material_supports[$i+1];
$material_support[$material_supports[$i]]['price']=$material_supports[$i+2];
$material_support[$material_supports[$i]]['options']=$material_supports[$i+3];
$i++;
$i++;
$i++;
$i++;
}
?>
<!DOCTYPE html>
<html>
<head>
<link rel="shortcut icon" href="<?php echo $favicon;?>" />
<link rel="stylesheet" href="http://<?php echo $server; ?>/style.css" type="text/css" media="screen" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="charset" value="utf-8" />
<title><?php echo strip_tags($title); ?></title>
<meta name="description" value="<?php echo htmlspecialchars($description); ?>" />
<script src="http://<?php echo $server; ?>/script.js">
</script>
<style>
table {display:none;}
td {border:solid 1px;}
</style>
</head>
<body>
<h1><?php echo $title; ?> - Final step</h1>
<h2>It's time for the money to travel from one hand to another</h2>
<?php
echo '<table><tr><td>Album</td><td>Product</td><td>Quantity</td><td>Unit price</td><td>Total price</td></tr>';
$items=array_keys(json_decode($_POST['item'], true));
$_POST['shipping']=json_decode($_POST['shipping'], true);
$order=json_decode($_POST['item'], true);
$options=json_decode($_POST['option'], true);
$tip=floatval($_POST['tip']);
$currency=$material_currency;
$bill=Array();
$bill['order']=$order;
$bill['options']=$options;
$bill['shipping']=$_POST['shipping'];
$bill['tip']=$tip;
$bill['currency']=$currency;
$productcount=0;
$unitcount=0;
$pricecount=0;
foreach ($items as $item){
$products=array_keys($order[$item]);
foreach ($products as $product){
if (is_numeric($order[$item][$product])&&intval($order[$item][$product])>0){
echo '<tr><td>'.htmlspecialchars($item).'</td><td>'.htmlspecialchars($product);
if (in_array($product, array_keys($material_support))){
$that=$material_support[$product]['option'];
if (isset($that)&&$that!==''){
echo '<br/>Option: ';
if (isset($options[$item][$product])){
echo htmlspecialchars($options[$item][$product]);
}
else {
echo '<h3>Please select an option for this item, otherwise we will consider you do not mind and chose it randomly in our stock</h3>';
}
}
}
echo '</td>';
echo '<td>'.htmlspecialchars($order[$item][$product]);
echo '</td>';
$howmany=intval($order[$item][$product]);
$unitprice=$material_support[$product]['price'];
$totalprice=$unitprice * $howmany;
echo '<td>'.htmlspecialchars($unitprice).'</td>';
echo '<td>'.htmlspecialchars($totalprice).'</td>';
echo '</tr>';
$unitcount+=$howmany;
$pricecount+=$totalprice;
$productcount+=$order[$item][$product];
}
}
}
echo '<tr><td colspan="2" style="background-color:yellow;">Raw total</td>';
echo '<td>'.htmlspecialchars($unitcount).'</td>';
echo '<td>N/A</td>';
echo '<td>'.htmlspecialchars($pricecount).'</td>';
echo '</tr>';
echo '<tr>';
echo '<td>Shipping</td>';
echo '<td>'.htmlspecialchars($_POST['shipping']).'</td>';
if (in_array($_POST['shipping'],array_keys($material_shipping))){
$shipping_price=floatval($material_shipping[$_POST['shipping']]);
}
else
{ die(); }
echo '<td>'.htmlspecialchars($unitcount).'</td>';
echo '<td>'.htmlspecialchars($shipping_price).'</td>';
$totalshipping=$unitcount*$shipping_price;
echo '<td>'.htmlspecialchars($totalshipping).'</td>';
echo '</tr>';
echo '<tr><td colspan="4" style="background-color:yellow;">Net total</td>';
echo '<td>'.htmlspecialchars($totalshipping+$pricecount).'</td>';
echo '</tr>';
echo '</table>';
$bill['amount']=$totalshipping+$pricecount;
$total=$totalshipping+$pricecount+(floor($tip*100)/100);
$totalminusshipping=$pricecount+(floor($tip*100)/100);
$bill['total']=$total;
if ($ismaterialnameyourprice){
$bill['amount']=0;
$bill['total']=(floor($tip*100)/100);
}
if (file_exists('./d/orders')&&!is_dir('./d/orders')) {
echo 'The system is misconfigured. "orders" must be a directory. Please fix this, if you are the webmaster. If you are not, please tell him to do so.';
} else if (file_exists('./d/material_messages')&&!is_dir('./d/material_messages')) {
echo 'The system is misconfigured. "material_messages" must be a directory. Please fix this, if you are the webmaster. If you are not, please tell him to do so.';
}
else {
if (!file_exists('./d/orders')) {
mkdir('./d/orders');
}
if (!file_exists('./d/material_messages')) {
mkdir('./d/material_messages');
}
$past_bills=array_diff(scandir('./d/orders/'), array('..', '.'));
$orderid=(count($past_bills)+1).'-'.microtime(true);
$orderdata=serialize ($bill);
mkdir ('./d/material_messages/'.$orderid);
if (file_put_contents('./d/orders/'.$orderid.'.dat', $orderdata)){
echo 'Your order has been correctly recorded in our system under the reference '.htmlspecialchars($orderid).'. Please click on the above button to be redirected to a secure money transfer service and process the payment : ';
?>
<form style="text-align:right" name="_xclick" action="https://www.paypal.com/fr/cgi-bin/webscr" method="post" >
<input type="hidden" name="cmd" value="_xclick" />
<input type="hidden" name="business" value="<?php echo htmlspecialchars($material_paypal_address);?>" />
<input type="hidden" name="item_name" value="<?php echo htmlspecialchars('Order '.$orderid.' at '.strip_tags($title)); ?>" />
<input type="hidden" name="currency_code" value="<?php echo htmlspecialchars($material_currency); ?>" />
<input type="hidden" name="amount" value="<?php
if (!$ismaterialnameyourprice){
echo htmlspecialchars($totalprice).'"/>';
?>
<input type="hidden" name="shipping" value="<?php echo htmlspecialchars($totalshipping)?>" />
<?php
}
else {
echo htmlspecialchars((floor($tip*100)/100)).'"/>';
}
?>
<input type="hidden" name="cancel_return" value="http://<?php echo htmlspecialchars($server); ?>" />
<input type="hidden" name="return" value="http://<?php echo htmlspecialchars($server); ?>/?thankyou=material" />
<input type="submit" name="submit" value="Pay now" />
</form>
<?php
}
else {
echo 'We were not able to save your order in the system. Such a thing should normaly not happen. You may want to try again, or not.';
}
}
?>
</body>
</html>