diff options
Diffstat (limited to 'src/frontend/pay.php')
-rw-r--r-- | src/frontend/pay.php | 99 |
1 files changed, 77 insertions, 22 deletions
diff --git a/src/frontend/pay.php b/src/frontend/pay.php index c09f83a0..33f3b712 100644 --- a/src/frontend/pay.php +++ b/src/frontend/pay.php @@ -1,13 +1,6 @@ -<!DOCTYPE html> -<html> -<head> -<title>Fullfillment page</title> -</head> -<body> - <?php /* - This file is part of TALER + This file is part of GNU TALER. Copyright (C) 2014, 2015 GNUnet e.V. TALER is free software; you can redistribute it and/or modify it under the @@ -23,21 +16,83 @@ */ - /* -// recover the session - session_start(); - if(!isset($_SESSION['contract'])){ -// http_response_code(404); - echo "Sorry.."; - } - else echo "Paid"; +/* + This serving module adds the 'max_fee' field to the object which + sends to the backend, and optionally the field 'edate' (indicating + to the mint the tollerated deadline to receive funds for this payment) + NOTE: 'max_fee' must be consistent with the same value indicated within + the contract; thus, a "real" merchant must implement such a mapping - session_destroy(); +*/ +$cli_debug = false; +$backend_test = true; -*/ -?> -Payment successful, thanks! +if ($_GET['cli_debug'] == 'yes') + $cli_debug = true; + +if ($_GET['backend_test'] == 'no') +{ + $cli_debug = true; + $backend_test = false; +} + +$post_body = file_get_contents('php://input'); + +$now = new DateTime('now'); +$edate = array ('edate' => + "/Date(" . $now->add(new DateInterval('P2W'))->getTimestamp() . ")/"); + +$deposit_permission = json_decode ($post_body, true); +$max_fee = array ('max_fee' => array ('value' => 3, + 'fraction' => 8, + 'currency' => "KUDOS")); + +$new_deposit_permission = array_merge ($deposit_permission, $max_fee); +$new_deposit_permission_edate = array_merge ($new_deposit_permission, $edate); -</body> -</html> +/* Craft the HTTP request, note that the backend + could be on an entirely different machine if + desired. */ + +if ($cli_debug && !$backend_test) +{ + + /* DO NOTE the newline at the end of 'echo's argument */ + //echo json_encode ($new_deposit_permission_edate, JSON_PRETTY_PRINT) + echo json_encode ($new_deposit_permission, JSON_PRETTY_PRINT) + . "\n"; + exit; +} + +$req = new http\Client\Request ("POST", + "http://" . $_SERVER["SERVER_NAME"] . "/backend/pay", + array ("Content-Type" => "application/json")); +$req->getBody()->append (json_encode ($new_deposit_permission)); + +// Execute the HTTP request +$client = new http\Client; +$client->enqueue($req)->send (); + +// Fetch the response +$resp = $client->getResponse (); +$status_code = $resp->getResponseCode (); + +// Our response code is the same we got from the backend: +http_response_code ($status_code); + +// Now generate our body +if ($status_code != 200) +{ + /* error: just forwarding to the wallet what + gotten from the backend (which is forwarding 'as is' + the error gotten from the mint) */ + echo $resp->body->toString (); + +} +else +{ + echo "Payment succedeed!\n"; +} + +?> |