Payment "works".

This commit is contained in:
Florian Dold 2015-12-18 01:30:22 +01:00
parent 0d5c37a49e
commit 3ddfad1973
7 changed files with 77 additions and 10 deletions

View File

@ -490,15 +490,36 @@ class WithdrawRequestPS extends SignatureStruct {
}
class AbsoluteTimeNbo extends PackedArenaObject {
static fromTalerString(s) {
throw Error();
let x = new AbsoluteTimeNbo();
x.alloc();
let r = /Date\(([0-9]+)\)/;
let m = r.exec(s);
if (m.length != 2) {
throw Error();
}
let n = parseInt(m[1]);
console.log("setting", n);
// XXX: This only works up to 54 bit numbers.
set64(x.getNative(), n);
return x;
}
size() {
return 8;
}
}
// XXX: This only works up to 54 bit numbers.
function set64(p, n) {
for (let i = 0; i < 8; ++i) {
Module.setValue(p + (8 - i), n & 0xFF, "i8");
n >>>= 8;
}
}
class UInt64 extends PackedArenaObject {
static fromNumber(n) {
throw Error();
let x = new UInt64();
x.alloc();
set64(x.getNative(), n);
return x;
}
size() {
return 8;

View File

@ -709,7 +709,18 @@ class WithdrawRequestPS extends SignatureStruct {
class AbsoluteTimeNbo extends PackedArenaObject {
static fromTalerString(s: string): AbsoluteTimeNbo {
throw Error();
let x = new AbsoluteTimeNbo();
x.alloc();
let r = /Date\(([0-9]+)\)/;
let m = r.exec(s);
if (m.length != 2) {
throw Error();
}
let n = parseInt(m[1]);
console.log("setting", n);
// XXX: This only works up to 54 bit numbers.
set64(x.getNative(), n);
return x;
}
size() {
@ -718,9 +729,22 @@ class AbsoluteTimeNbo extends PackedArenaObject {
}
// XXX: This only works up to 54 bit numbers.
function set64(p: number, n: number) {
for (let i = 0; i < 8; ++i) {
Module.setValue(p + (8 - i), n & 0xFF, "i8");
n >>>= 8;
}
}
class UInt64 extends PackedArenaObject {
static fromNumber(n: number): UInt64 {
throw Error();
let x = new UInt64();
x.alloc();
set64(x.getNative(), n);
return x;
}
size() {

View File

@ -148,9 +148,15 @@ function executePay(db, offer, payCoinInfo, merchantBaseUrl, chosenMint) {
let req = new XMLHttpRequest();
req.open('post', payUrl.href());
req.setRequestHeader("Content-Type", "application/json;charset=UTF-8");
req.send(JSON.stringify(reqData));
req.addEventListener('readystatechange', (e) => {
if (req.readyState == XMLHttpRequest.DONE) {
resolve();
if (req.status == 200) {
resolve();
}
else {
throw Error("bad status " + req.status);
}
}
});
});
@ -173,6 +179,9 @@ function confirmPay(db, detail, sendResponse) {
let mintUrl = Object.keys(mcs)[0];
let ds = signDeposit(db, offer, mcs[mintUrl]);
return executePay(db, offer, ds, detail.merchantPageUrl, mintUrl);
})
.then(() => {
sendResponse({ success: true });
});
return true;
}

View File

@ -231,9 +231,14 @@ function executePay(db,
req.open('post', payUrl.href());
req.setRequestHeader("Content-Type",
"application/json;charset=UTF-8");
req.send(JSON.stringify(reqData));
req.addEventListener('readystatechange', (e) => {
if (req.readyState == XMLHttpRequest.DONE) {
resolve()
if (req.status == 200) {
resolve();
} else {
throw Error("bad status " + req.status);
}
}
});
});
@ -262,6 +267,9 @@ function confirmPay(db, detail: ConfirmPayRequest, sendResponse) {
let mintUrl = Object.keys(mcs)[0];
let ds = signDeposit(db, offer, mcs[mintUrl]);
return executePay(db, offer, ds, detail.merchantPageUrl, mintUrl);
})
.then(() => {
sendResponse({success: true});
});
return true;
}

View File

@ -47,8 +47,9 @@ document.addEventListener("DOMContentLoaded", function(e) {
let offer = JSON.parse(e.detail);
let uri = URI(chrome.extension.getURL("pages/confirm-contract.html"));
let params = {
offer: JSON.stringify(offer)
}
offer: JSON.stringify(offer),
merchantPageUrl: document.location.href
};
document.location.href = uri.query(params).href();
});
});

View File

@ -23,8 +23,10 @@ document.addEventListener("DOMContentLoaded", (e) => {
let html = template(offer.contract);
$_("render-contract").innerHTML = html;
document.getElementById("confirm-pay").addEventListener("click", (e) => {
console.log("Query:", JSON.stringify(query));
let d = {
offer: JSON.parse(query.offer)
offer: JSON.parse(query.offer),
merchantPageUrl: query.merchantPageUrl
};
chrome.runtime.sendMessage({ type: 'confirm-pay', detail: d }, (resp) => {
console.log("got response", resp);

View File

@ -34,8 +34,10 @@ document.addEventListener("DOMContentLoaded", (e) => {
$_("render-contract").innerHTML = html;
document.getElementById("confirm-pay").addEventListener("click", (e) => {
console.log("Query:", JSON.stringify(query));
let d = {
offer: JSON.parse(query.offer)
offer: JSON.parse(query.offer),
merchantPageUrl: query.merchantPageUrl
};
chrome.runtime.sendMessage({type:'confirm-pay', detail: d}, (resp) => {
console.log("got response", resp);