summaryrefslogtreecommitdiff
path: root/examples/shop/fulfillment.php
blob: fc2dc762ce1650340783c3a40481f0504f8741b8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
<!DOCTYPE html>
<!-- 
  This file is part of GNU TALER.
  Copyright (C) 2014, 2015, 2016 INRIA

  TALER is free software; you can redistribute it and/or modify it under the
  terms of the GNU Lesser General Public License as published by the Free Software
  Foundation; either version 2.1, or (at your option) any later version.

  TALER is distributed in the hope that it will be useful, but WITHOUT ANY
  WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
  A PARTICULAR PURPOSE.  See the GNU Lesser General Public License for more details.

  You should have received a copy of the GNU Lesser General Public License along with
  TALER; see the file COPYING.  If not, see <http://www.gnu.org/licenses/>
-->
<html lang="en">
<head>
  <title>Taler's "Demo" Shop</title>
  <link rel="stylesheet" type="text/css" href="web-common/style.css">
  <script type="application/javascript" src="web-common/taler-wallet-lib.js"></script>
  <script type="application/javascript">
  function makeVisible() {
    function cb() {
      document.body.style.display = "";
    }
    document.addEventListener("DOMContentLoaded", cb, false);
  }
  </script>
</head>
<body style="display:none;"> 
  <header>
    <div id="logo">
      <svg height="100" width="100">
        <circle cx="50" cy="50" r="40" stroke="darkcyan" stroke-width="6" fill="white" />
        <text x="19" y="82" font-family="Verdana" font-size="90" fill="darkcyan">S</text>
      </svg>
    </div>
    <!--#include virtual="web-common/dropdown-navbar.html"-->
    <h1 class="nav">Toy Store - Product Page</h1>
  </header>

  <aside class="sidebar" id="left">
  </aside>

  <section id="main">
    <article>
<?php

include '../../copylib/util.php';
include "../../copylib/merchants.php";

$receiver = get($_GET["receiver"]);
$now = new DateTime();
$now->setTimestamp(intval(get($_GET["timestamp"])));

if (empty($receiver)) {
  http_response_code(400);
  echo "<p>Bad request (UUID missing)</p>";
  return;
}

session_start();

$payments = &pull($_SESSION, 'payments', array());
$my_payment = &pull($payments, $receiver, array());

// This will keep the query parameters.
$pay_url = url_rel("pay.php");
$offering_url = url_rel("index.php", true);

if (array() === $my_payment || true !== get($my_payment["is_payed"], false)) {
  // restore contract
  $contract = generate_contract(array(
    "amount_value" => intval($_GET['aval']),
    "amount_fraction" => intval($_GET['afrac']),
    "currency" => $_GET['acurr'],
    "refund_delta" => 'P3M',
    "transaction_id" => intval($_GET['tid']),
    "description" => "Donation to " . $receiver,
    "product_id" => "unused",
    "correlation_id" => "",
    "merchant_name" => "Kudos Inc.",
    "taxes" => array(),
    "now" => $now,
    "fulfillment_url" => get_full_uri())
  );
  
  $resp = give_to_backend("backend/contract", $contract);
  if ($resp->getResponseCode() != 200){
    echo json_encode(array(
    'error' => "internal error",
    'hint' => "failed to regenerate contract",
    'detail' => $resp->body->toString()
    ), JSON_PRETTY_PRINT);
    return;
  }

  $hc = json_decode($resp->body->toString(), true)['H_contract'];
  $my_payment['is_payed'] = false;
  $my_payment['hc'] = $hc;
  echo "<p>you have not payed for this contract: " . $hc . "</p>";
  echo "<p>Asking the wallet to re-execute it ... </p>";
  echo "<script>taler.executePayment('$hc', '$pay_url', '$offering_url');</script>";
  return;
}

$news = false;
switch ($receiver) {
  case "Taler":
    $news = "https://taler.net/news";
    break;
  case "GNUnet":
    $news = "https://gnunet.org/";
    break;
  case "Tor":
    $news = "https://www.torproject.org/press/press.html.en";
    break;
}

$msg = "<p>Thanks for donating to " . $receiver . ".</p>";
if ($news) {
  $msg .= "<p>Check our latest <a href=\"" . $news . "\">news!</a></p>";
}

echo $msg;

echo "<script>makeVisible();</script>";

?>
    </article>
  </section>
</body>
</html>