aboutsummaryrefslogtreecommitdiff
path: root/articles/ui/figs/taler-contract.js
diff options
context:
space:
mode:
Diffstat (limited to 'articles/ui/figs/taler-contract.js')
-rw-r--r--articles/ui/figs/taler-contract.js35
1 files changed, 35 insertions, 0 deletions
diff --git a/articles/ui/figs/taler-contract.js b/articles/ui/figs/taler-contract.js
new file mode 100644
index 000000000..aaf4b79c3
--- /dev/null
+++ b/articles/ui/figs/taler-contract.js
@@ -0,0 +1,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();
+}