diff options
-rw-r--r-- | src/backend/taler-merchant-httpd.c | 1 | ||||
-rw-r--r-- | src/backend/taler-merchant-httpd_contract.c | 29 | ||||
-rw-r--r-- | src/backend/taler-merchant-httpd_pay.c | 24 | ||||
-rw-r--r-- | src/frontend/execute.js | 1 | ||||
-rw-r--r-- | src/frontend/execute.tsx | 1 | ||||
-rw-r--r-- | src/frontend/pay.php | 11 |
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(); |