aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/backend/taler-merchant-httpd.c1
-rw-r--r--src/backend/taler-merchant-httpd_contract.c29
-rw-r--r--src/backend/taler-merchant-httpd_pay.c24
-rw-r--r--src/frontend/execute.js1
-rw-r--r--src/frontend/execute.tsx1
-rw-r--r--src/frontend/pay.php11
6 files changed, 41 insertions, 26 deletions
diff --git a/src/backend/taler-merchant-httpd.c b/src/backend/taler-merchant-httpd.c
index 21fd545a..da4f6e8d 100644
--- a/src/backend/taler-merchant-httpd.c
+++ b/src/backend/taler-merchant-httpd.c
@@ -469,6 +469,7 @@ prepare_daemon ()
tv = GNUNET_TIME_UNIT_FOREVER_REL;
GNUNET_NETWORK_fdset_copy_native (wrs, &rs, max + 1);
GNUNET_NETWORK_fdset_copy_native (wws, &ws, max + 1);
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Adding run_daemon select task\n");
ret =
GNUNET_SCHEDULER_add_select (GNUNET_SCHEDULER_PRIORITY_HIGH,
tv, wrs, wws,
diff --git a/src/backend/taler-merchant-httpd_contract.c b/src/backend/taler-merchant-httpd_contract.c
index 8a0bbccc..7f8e44a1 100644
--- a/src/backend/taler-merchant-httpd_contract.c
+++ b/src/backend/taler-merchant-httpd_contract.c
@@ -95,7 +95,7 @@ MH_handler_contract (struct TMH_RequestHandler *rh,
sizeof (pubkey)));
/* create contract signature */
GNUNET_assert (GNUNET_OK ==
- TALER_hash_json (root,
+ TALER_hash_json (jcontract,
&contract.h_contract));
contract.purpose.purpose = htonl (TALER_SIGNATURE_MERCHANT_CONTRACT);
contract.purpose.size = htonl (sizeof (contract));
@@ -103,30 +103,31 @@ MH_handler_contract (struct TMH_RequestHandler *rh,
&contract.purpose,
&contract_sig);
- pay_url = json_object_get (jcontract, "pay_url");
+ pay_url = json_object_get (root, "pay_url");
if (NULL == pay_url)
{
return TMH_RESPONSE_reply_internal_error (connection,
"pay url missing");
}
- exec_url = json_object_get (jcontract, "exec_url");
+ exec_url = json_object_get (root, "exec_url");
if (NULL == exec_url)
{
return TMH_RESPONSE_reply_internal_error (connection,
"exec url missing");
}
-
/* return final response */
- return TMH_RESPONSE_reply_json_pack (connection,
- MHD_HTTP_OK,
- "{s:o, s:o, s:o, s:o, s:o}",
- "contract", jcontract,
- "exec_url", exec_url,
- "pay_url", pay_url,
- "sig", TALER_json_from_data (&contract_sig,
- sizeof (contract_sig)),
- "H_contract", TALER_json_from_data (&contract.h_contract,
- sizeof (contract.h_contract)));
+ res = TMH_RESPONSE_reply_json_pack (connection,
+ MHD_HTTP_OK,
+ "{s:O, s:O, s:O, s:o, s:o}",
+ "contract", jcontract,
+ "exec_url", exec_url,
+ "pay_url", pay_url,
+ "sig", TALER_json_from_data (&contract_sig,
+ sizeof (contract_sig)),
+ "H_contract", TALER_json_from_data (&contract.h_contract,
+ sizeof (contract.h_contract)));
+ json_decref (root);
+ return res;
}
/* end of taler-merchant-httpd_contract.c */
diff --git a/src/backend/taler-merchant-httpd_pay.c b/src/backend/taler-merchant-httpd_pay.c
index 67166eaf..eb5133ac 100644
--- a/src/backend/taler-merchant-httpd_pay.c
+++ b/src/backend/taler-merchant-httpd_pay.c
@@ -468,7 +468,10 @@ process_pay_with_mint (void *cls,
/* fee higher than residual coin value, makes no sense. */
resume_pay_with_response (pc,
MHD_HTTP_BAD_REQUEST,
- TMH_RESPONSE_make_internal_error ("Fee higher than coin value"));
+ TMH_RESPONSE_make_json_pack ("{s:s, s:o, s:o}",
+ "hint", "fee higher than coin value",
+ "f", TALER_json_from_amount (&dc->percoin_amount),
+ "fee_deposit", TALER_json_from_amount (&denom_details->fee_deposit)));
return;
}
}
@@ -547,8 +550,9 @@ process_pay_with_mint (void *cls,
* we'd get that information in the callback. */
resume_pay_with_response (pc,
MHD_HTTP_UNAUTHORIZED,
- TMH_RESPONSE_make_json_pack ("{s:s}",
- "hint", "Coin signature invalid."));
+ TMH_RESPONSE_make_json_pack ("{s:s, s:i}",
+ "hint", "Coin signature invalid.",
+ "coin_idx", i));
return;
}
}
@@ -685,6 +689,11 @@ MH_handler_pay (struct TMH_RequestHandler *rh,
pc->dc = GNUNET_new_array (pc->coins_cnt,
struct MERCHANT_DepositConfirmation);
+ {
+ char *s = json_dumps (coins, JSON_INDENT(2));
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Coins json is: %s\n", s);
+ }
+
json_array_foreach (coins, coins_index, coin)
{
struct MERCHANT_DepositConfirmation *dc = &pc->dc[coins_index];
@@ -705,6 +714,15 @@ MH_handler_pay (struct TMH_RequestHandler *rh,
json_decref (root);
return (GNUNET_NO == res) ? MHD_YES : MHD_NO;
}
+
+ {
+ char *s;
+ s = TALER_amount_to_string (&dc->percoin_amount);
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+ "Coin #%i has f %s\n", coins_index, s);
+ GNUNET_free (s);
+ }
+
dc->index = coins_index;
dc->pc = pc;
}
diff --git a/src/frontend/execute.js b/src/frontend/execute.js
index cd7b0b1e..a9045cb5 100644
--- a/src/frontend/execute.js
+++ b/src/frontend/execute.js
@@ -25,6 +25,7 @@ function replace(el, r) {
document.addEventListener("taler-payment-result", function (e) {
if (!e.detail.success) {
alert("Payment failed\n" + JSON.stringify(e.detail));
+ return;
}
console.log("finished payment");
let msg = React.createElement("div", null, "Payment successful. View your ", React.createElement("a", {"href": e.detail.fulfillmentUrl}, "product"), ".");
diff --git a/src/frontend/execute.tsx b/src/frontend/execute.tsx
index f7e660c9..67cf8e06 100644
--- a/src/frontend/execute.tsx
+++ b/src/frontend/execute.tsx
@@ -32,6 +32,7 @@ function replace(el, r) {
document.addEventListener("taler-payment-result", function (e: CustomEvent) {
if (!e.detail.success) {
alert("Payment failed\n" + JSON.stringify(e.detail));
+ return;
}
console.log("finished payment");
let msg =
diff --git a/src/frontend/pay.php b/src/frontend/pay.php
index e13bed49..bf0be438 100644
--- a/src/frontend/pay.php
+++ b/src/frontend/pay.php
@@ -52,8 +52,7 @@ if (isset($_SESSION['payment_ok']) && $_SESSION['payment_ok'] == true)
{
$_SESSION['payment_ok'] = true;
http_response_code (301);
- //$url = (new http\URL("http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]"))
- $url = (new http\URL("http://$_SERVER[HTTP_HOST]"))
+ $url = (new http\URL($_SERVER['REQUEST_SCHEME'] . '://' . $_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']))
->mod(array ("path" => "fulfillment.php"), http\Url::JOIN_PATH);
header("Location: $url");
die();
@@ -133,13 +132,7 @@ else
{
$_SESSION['payment_ok'] = true;
http_response_code (301);
- /**
- * WARNING: the "shop site" is '"http://".$_SERVER["HTTP_HOST"]'
- * So do not attach $_SERVER["REQUEST_URI"] before proxying requests
- * to the backend
- */
- //$url = (new http\URL("http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]"))
- $url = (new http\URL("http://$_SERVER[HTTP_HOST]"))
+ $url = (new http\URL($_SERVER['REQUEST_SCHEME'] . '://' . $_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']))
->mod(array ("path" => "fulfillment.php"), http\Url::JOIN_PATH);
header("Location: $url");
die();