merchant

Merchant backend to process payments, run by merchants
Log | Files | Refs | Submodules | README | LICENSE

commit b7e13a3a747653d68e74b824291968d66ccf0a78
parent 138bba1838dd4044c8e24532865e9860586f39e5
Author: Florian Dold <dold@inria.fr>
Date:   Sun, 20 Dec 2015 13:26:39 +0100

Add URLs outside of contract.

Diffstat:
Msrc/backend/taler-merchant-httpd_contract.c | 41++++++++++++++++++++++++++++++++++-------
1 file changed, 34 insertions(+), 7 deletions(-)

diff --git a/src/backend/taler-merchant-httpd_contract.c b/src/backend/taler-merchant-httpd_contract.c @@ -52,6 +52,9 @@ MH_handler_contract (struct TMH_RequestHandler *rh, size_t *upload_data_size) { json_t *root; + json_t *jcontract; + json_t *pay_url; + json_t *exec_url; int res; struct TALER_ContractPS contract; struct GNUNET_CRYPTO_EddsaSignature contract_sig; @@ -67,18 +70,26 @@ MH_handler_contract (struct TMH_RequestHandler *rh, if ((GNUNET_NO == res) || (NULL == root)) return MHD_YES; - /* add fields to the "root" that the backend should provide */ - json_object_set (root, + jcontract = json_object_get (root, "contract"); + + if (NULL == jcontract) + { + return TMH_RESPONSE_reply_internal_error (connection, + "contract request malformed"); + } + + /* add fields to the contract that the backend should provide */ + json_object_set (jcontract, "mints", trusted_mints); - json_object_set (root, + json_object_set (jcontract, "auditors", j_auditors); - json_object_set_new (root, + json_object_set_new (jcontract, "H_wire", TALER_json_from_data (&h_wire, sizeof (h_wire))); - json_object_set_new (root, + json_object_set_new (jcontract, "merchant_pub", TALER_json_from_data (&pubkey, sizeof (pubkey))); @@ -91,11 +102,27 @@ MH_handler_contract (struct TMH_RequestHandler *rh, GNUNET_CRYPTO_eddsa_sign (privkey, &contract.purpose, &contract_sig); + + 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 (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}", - "contract", root, + "{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,