aboutsummaryrefslogtreecommitdiff
path: root/articles/ui/figs/taler-contract.js
blob: aaf4b79c3c555536cb18ed8a7c2899c5ec4f87a8 (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
/* Trigger Taler contract generation on the server, and pass the
   contract to the extension once we got it. */
function taler_pay(form) {
  var contract_request = new XMLHttpRequest();

  /* Note that the URL we give here is simply an example
     and not dictated by the protocol: each web shop can
     have its own way of generating and transmitting the
     contract, there just must be a way to get the contract
     and to pass it to the wallet when the user selects 'Pay'. */
  contract_request.open("GET", "generate-taler-contract", true);
  contract_request.onload = function (e) {
    if (contract_request.readyState == 4) {
      if (contract_request.status == 200) {
        /* Send contract to the extension. */
        handle_contract(contract_request.responseText);
      } else {
        /* There was an error obtaining the contract from the merchant,
           obviously this should not happen. To keep it simple, we just
           alert the user to the error. */
        alert("Failure to download contract " +
              "(" + contract_request.status + "):\n" +
              contract_request.responseText);
      }
    }
  };
  contract_request.onerror = function (e) {
    /* There was an error obtaining the contract from the merchant,
       obviously this should not happen. To keep it simple, we just
       alert the user to the error. */
      alert("Failure requesting the contract:\n" +
            contract_request.statusText);
  };
  contract_request.send();
}