gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNUnet-SVN] [taler-merchant] branch master updated: implement /trigger-


From: gnunet
Subject: [GNUnet-SVN] [taler-merchant] branch master updated: implement /trigger-pay
Date: Fri, 05 Jan 2018 16:11:24 +0100

This is an automated email from the git hooks/post-receive script.

dold pushed a commit to branch master
in repository merchant.

The following commit(s) were added to refs/heads/master by this push:
     new 391f371  implement /trigger-pay
391f371 is described below

commit 391f3714767b29f44f7e63c4848444f14f5b201f
Author: Florian Dold <address@hidden>
AuthorDate: Fri Jan 5 16:10:59 2018 +0100

    implement /trigger-pay
---
 src/backend/taler-merchant-httpd.c               |  4 +++
 src/backend/taler-merchant-httpd_check-payment.c | 22 ++++++++++++-
 src/backend/taler-merchant-httpd_trigger-pay.c   | 41 +++++++++++++++++++++++-
 3 files changed, 65 insertions(+), 2 deletions(-)

diff --git a/src/backend/taler-merchant-httpd.c 
b/src/backend/taler-merchant-httpd.c
index 615dd31..3365138 100644
--- a/src/backend/taler-merchant-httpd.c
+++ b/src/backend/taler-merchant-httpd.c
@@ -46,6 +46,7 @@
 #include "taler-merchant-httpd_history.h"
 #include "taler-merchant-httpd_refund.h"
 #include "taler-merchant-httpd_check-payment.h"
+#include "taler-merchant-httpd_trigger-pay.h"
 
 /**
  * Backlog for listen operation on unix-domain sockets.
@@ -256,6 +257,9 @@ url_handler (void *cls,
       { "/check-payment", MHD_HTTP_METHOD_GET, "text/plain",
         NULL, 0,
         &MH_handler_check_payment, MHD_HTTP_OK},
+      { "/trigger-pay", MHD_HTTP_METHOD_GET, "text/plain",
+        NULL, 0,
+        &MH_handler_trigger_pay, MHD_HTTP_OK},
       {NULL, NULL, NULL, NULL, 0, 0 }
     };
   static struct TMH_RequestHandler h404 =
diff --git a/src/backend/taler-merchant-httpd_check-payment.c 
b/src/backend/taler-merchant-httpd_check-payment.c
index 129f7bc..655310d 100644
--- a/src/backend/taler-merchant-httpd_check-payment.c
+++ b/src/backend/taler-merchant-httpd_check-payment.c
@@ -146,6 +146,7 @@ MH_handler_check_payment (struct TMH_RequestHandler *rh,
   const char *session_id;
   const char *session_sig_str;
   const char *instance_str;
+  const char *confirm_url;
 
   order_id = MHD_lookup_connection_value (connection,
                                           MHD_GET_ARGUMENT_KIND,
@@ -153,6 +154,9 @@ MH_handler_check_payment (struct TMH_RequestHandler *rh,
   contract_url = MHD_lookup_connection_value (connection,
                                               MHD_GET_ARGUMENT_KIND,
                                               "contract_url");
+  confirm_url = MHD_lookup_connection_value (connection,
+                                             MHD_GET_ARGUMENT_KIND,
+                                             "confirm_url");
   session_id = MHD_lookup_connection_value (connection,
                                                 MHD_GET_ARGUMENT_KIND,
                                                 "session_id");
@@ -166,6 +170,9 @@ MH_handler_check_payment (struct TMH_RequestHandler *rh,
   if (NULL == instance_str)
     instance_str = "default";
 
+  // Will only be set if we actually have a contract!
+  char *h_contract_terms_str = NULL;
+
   struct MerchantInstance *mi = TMH_lookup_instance (instance_str);
   if (NULL == mi)
     return TMH_RESPONSE_reply_bad_request (connection,
@@ -259,6 +266,10 @@ MH_handler_check_payment (struct TMH_RequestHandler *rh,
                                               "Failed to hash proposal");
   }
 
+  h_contract_terms_str = GNUNET_STRINGS_data_to_string_alloc 
(&h_contract_terms,
+                                                              sizeof (struct 
GNUNET_HashCode));
+
+
   /* Check if transaction is already known, if not store it. */
   {
     struct GNUNET_HashCode h_xwire;
@@ -277,6 +288,7 @@ MH_handler_check_payment (struct TMH_RequestHandler *rh,
     {
       /* Always report on hard error as well to enable diagnostics */
       GNUNET_break (GNUNET_DB_STATUS_HARD_ERROR == qs);
+      GNUNET_free_non_null (h_contract_terms_str);
       return TMH_RESPONSE_reply_internal_error (connection,
                                          
TALER_EC_PAY_DB_FETCH_TRANSACTION_ERROR,
                                          "Merchant database error");
@@ -289,6 +301,8 @@ MH_handler_check_payment (struct TMH_RequestHandler *rh,
     GNUNET_break (GNUNET_DB_STATUS_SUCCESS_ONE_RESULT == qs);
   }
 
+  GNUNET_free_non_null (h_contract_terms_str);
+
   return TMH_RESPONSE_reply_json_pack (connection,
                                        MHD_HTTP_OK,
                                        "{s:b}",
@@ -297,12 +311,18 @@ MH_handler_check_payment (struct TMH_RequestHandler *rh,
 
 do_pay:
   {
-    char *url = make_absolute_backend_url (connection, "trigger-pay", 
"contract_url", contract_url, "session_id", session_id, NULL);
+    char *url = make_absolute_backend_url (connection, "trigger-pay",
+                                           "contract_url", contract_url,
+                                           "session_id", session_id,
+                                           "h_contract_terms", 
h_contract_terms_str,
+                                           "confirm_url", confirm_url,
+                                           NULL);
     int ret = TMH_RESPONSE_reply_json_pack (connection,
                                             MHD_HTTP_OK,
                                             "{s:s}",
                                             "payment_redirect_url",
                                             url);
+    GNUNET_free_non_null (h_contract_terms_str);
     GNUNET_free (url);
     return ret;
   }
diff --git a/src/backend/taler-merchant-httpd_trigger-pay.c 
b/src/backend/taler-merchant-httpd_trigger-pay.c
index 971fc50..c0bdc7e 100644
--- a/src/backend/taler-merchant-httpd_trigger-pay.c
+++ b/src/backend/taler-merchant-httpd_trigger-pay.c
@@ -51,5 +51,44 @@ MH_handler_trigger_pay (struct TMH_RequestHandler *rh,
                         const char *upload_data,
                         size_t *upload_data_size)
 {
-  return 0;
+  struct MHD_Response *response;
+
+  const char *contract_url;
+  const char *h_contract_terms_str;
+  const char *confirm_url;
+  const char *session_id;
+
+  session_id = MHD_lookup_connection_value (connection,
+                                            MHD_GET_ARGUMENT_KIND,
+                                            "session_id");
+
+  confirm_url = MHD_lookup_connection_value (connection,
+                                             MHD_GET_ARGUMENT_KIND,
+                                             "confirm_url");
+
+  contract_url = MHD_lookup_connection_value (connection,
+                                              MHD_GET_ARGUMENT_KIND,
+                                              "contract_url");
+
+  h_contract_terms_str = MHD_lookup_connection_value (connection,
+                                                      MHD_GET_ARGUMENT_KIND,
+                                                      "h_contract_terms");
+
+
+  // FIXME: Taler wallet detection!
+  char *data = "<html><body><p>Processing payment ...</p></body></html>";
+
+  response = MHD_create_response_from_buffer (strlen (data), data, 
MHD_RESPMEM_PERSISTENT);
+  if (NULL != session_id)
+    MHD_add_response_header (response, "X-Taler-Session-Id", session_id);
+  if (NULL != contract_url)
+    MHD_add_response_header (response, "X-Taler-Contract-Url", contract_url);
+  if (NULL != h_contract_terms_str)
+    MHD_add_response_header (response, "X-Taler-Contract-Hash", 
h_contract_terms_str);
+  if (NULL != confirm_url)
+    MHD_add_response_header (response, "X-Taler-Confirm-Url", confirm_url);
+  MHD_queue_response (connection, 402, response);
+  MHD_destroy_response (response);
+
+  return MHD_YES;
 }

-- 
To stop receiving notification emails like this one, please contact
address@hidden



reply via email to

[Prev in Thread] Current Thread [Next in Thread]