Hi guys,

I have been working over the integration with this local payment system 
and even though I have succeeded connecting to the payment system and 
starting the payment transaction, I got stuck where the payment system 
takes the transaction control. I have followed in deep detail the PayPal 
example included with Wt and in fact the transaction flow is pretty 
similar:

- the payment system is started through an Http POST call to a CGI 
module using some parameters to identify the transaction that you are 
planning to execute (transaction type, amount, a transaction unique 
identifier)
- The POST message is executed without problems. The done() signal 
triggers a method that checks for the response code and error code. No 
errors and an Http response code 200 is received
- Besides that, the CGI module that is invoked with the POST call, 
records a log file where I can verify that everything is going ok
- The last action that is executed by the CGI module after validating 
the input and doing some preparation working is to redirect the web 
session to a payment system handled page, where the user selects the 
payment method (credit card o debit card) and enters some data (card 
number and others). As far as I understand, in the case of PayPal 
connector is the Wt application itself who redirects the web page to a 
new URL
- In the case of the local payment system, when the CGI module tries to 
execute the web page redirection I am not sure how to proceed. In have 
tried different alternatives (WAnchor opening a new page using a 
TargetNewWindow, clearing the current container and others)  but I have 
never been able to get the page where it is supposed the user should be 
redirected

I am absolutely clear that you would need a much more detailed 
description to fully understand what is going on, but at this time I 
would ask for some general advice:

- Is it possible for a Wt application to pass the program control flow 
to an external system and then, in some way, return to the state where 
the application was at the moment that lost the program control flow (I 
guess the answer is yes because the PayPal example does something like 
this but then the question is what are the conditions that the Wt 
application should fulfill?
- in this particular case, where the external application redirects the 
user browser to a new page, how the Wt application should prepare the 
scenario in order to allow the user to surf through the payment system 
and then go back to the Wt application?

I would appreciate your comments on this matter.

Regards.
________________________
Mario Diethelm Guallar

------ Original Message ------
From: "Koen Deforche" <k...@emweb.be>
To: "Mario Diethelm Guallar" <mariodiethe...@gmail.com>; 
"witty-interest@lists.sourceforge.net" 
<witty-interest@lists.sourceforge.net>
Cc: "Wim Dumon" <w...@emweb.be>
Sent: 11-08-2015 06:12:59
Subject: Re: [Wt-interest] HTTP question

>Hey Mario,
>
>It's still not entirely clear to me what the payment system expects.
>
>We have experience with two different types of systems:
>- systems that require the user's browser to be redirect to a payment
>site where the user will have to confirm the transaction (sometimes
>being redirect further to their online bank system for 3D
>verification). E.g. this is how Paypal typically works.
>- systems where you capture all the relevant information inside your
>own web application, and you deal with the 3rd party payment system
>purely using web services. The user does not leave your application.
>
>In the first case, there are different variants, but typically it
>involves use of static or dynamic WResource's to handle the redirect
>from the third party system back to the wt application. This approach
>is a bit more complicated with a Wt application because it's a
>single-page application.
>
>In the second case, it's quite simpler. You only need to a use a HTTP
>client to interact with the 3rd party web services. As wim said, the
>http client is asynchronous, but you can follow the pattern as
>explained in the Http::Client documentation with deferRendering() and
>resumeRendering() to fix easily integrate it in a Wt application. This
>approach works okay as long as you expect the web services to respond
>quickly. Otherwise it's better to user server push instead of
>deferRendering() to not block your UI while you are waiting for the
>web service to respond.
>
>Regards,
>koen
>
>2015-08-10 19:59 GMT+02:00 Mario Diethelm Guallar 
><mariodiethe...@gmail.com>:
>>  Thank you Wim. I will work following your recommendations.
>>
>>  As far as I understand, to use a WResource I should notify the third 
>>party
>>  CGI module (end_transaction) the suggestedFileName that I decide to 
>>assign
>>  to the WResource object (equivalent to the ASP script file name) and
>>  implement the handleRequest function to manage the request/response 
>>logic.
>>  What kind of DispossiontType should I use for the WResource (Inline 
>>or
>>  Attachment) ?
>>
>>  Regarding the done() signal, if I am not misunderstanding your 
>>suggestion
>>  and the Http::Client example, the Wt library will trigger the done() 
>>signal
>>  when the running WServer receives the third party answer. Is that 
>>correct?
>>
>>  Thanks again. Regards.
>>
>>  ________________________
>>  Mario Diethelm Guallar
>>
>>
>>
>>  ------ Original Message ------
>>  From: "Wim Dumon" <w...@emweb.be>
>>  To: "Mario Diethelm Guallar" <mariodiethe...@gmail.com>;
>>  witty-interest@lists.sourceforge.net
>>  Sent: 10-08-2015 07:25:43
>>  Subject: Re: [Wt-interest] HTTP question
>>
>>
>>  Hello Mario,
>>
>>  To process the result, you can as well use a WResource from Wt 
>>instead of
>>  the ASP script.
>>
>>  To know when the request was finished and to act on the response of a
>>  request, connect a method to the 'done()' signal of the client. See 
>>also the
>>  code example in Http::Client.
>>
>>  Best regards,
>>  Wim.
>>
>>
>>  On 6 August 2015 at 01:15, Mario Diethelm Guallar 
>><mariodiethe...@gmail.com>
>>  wrote:
>>>
>>>  Hi,
>>>
>>>  I am working on the integration of a Wt application (running on an 
>>>IIS
>>>  server under Windows) with a third party local payment system. This 
>>>payment
>>>  system uses two CGI modules to first start and then return payment
>>>  transaction results. In a nutshell it works as follows:
>>>
>>>  - you have to call the first CGI module (start_transaction.cgi) from 
>>>a
>>>  dynamic Web page using an HTTP POST method with some parameters that 
>>>you
>>>  would normally get from the user (transaction amount, user account 
>>>id and
>>>  stuff like that)
>>>  - the local payment system validates and processes the request and 
>>>then a
>>>  second CGI module (end_transaction.cgi), informs back transaction 
>>>results.
>>>  To do that, this second CGI module expects a dynamic Web page (.ASP, 
>>>.PHP or
>>>  other similar) that is invoked by the end_transaction.cgi module and 
>>>where
>>>  you can access transaction payment results and complete the 
>>>transaction with
>>>  the corresponding answer acknowledge
>>>
>>>  I am planning to use Wt:Http::Cient and Wt::Http::Message classes to
>>>  implement this application protocol and I would like to validate 
>>>some of my
>>>  assumptions:
>>>
>>>  - to activate the first CGI module, I am planning to use the
>>>  Wt::Http::Client post(url, message) function, where url is the web 
>>>address
>>>  of start_transaction.cgi and message is a Wt::Http::Message object 
>>>with all
>>>  the requested parameters loaded as "headers" (name, value pairs).
>>>  - to process the results, I am planning to build a little ASP script 
>>>(the
>>>  one that will be used by end_transaction.cgi) that would recover all 
>>>the
>>>  information from the answer and would send it back to the Wt 
>>>application
>>>  using an HTTP POST method
>>>
>>>  Does it make sense to you? As far as I understand the 
>>>Wt::Http::Client
>>>  post is an asynchronous method so I am a little bit confused about 
>>>how to be
>>>  sure if the first CGI module actually runs and what Http::Client 
>>>method do I
>>>  have to use to get the answer from the ASP script processing the 
>>>second CGI
>>>  module response. Is it possible, as an alternative answer processing 
>>>method,
>>>  to inform the Wt running application as the dynamic Web page 
>>>expected by
>>>  end_transaction.cgi? If this is feasible, what object and method do 
>>>you have
>>>  to use to wait for this answer?
>>>
>>>  I would appreciate your comments.
>>>
>>>
>>>  Thanks. Regards.
>>>
>>>
>>>  ________________________
>>>  Mario Diethelm Guallar
>>>
>>>
>>>
>>>  
>>>------------------------------------------------------------------------------
>>>
>>>  _______________________________________________
>>>  witty-interest mailing list
>>>  witty-interest@lists.sourceforge.net
>>>  https://lists.sourceforge.net/lists/listinfo/witty-interest
>>>
>>
>>
>>  
>>------------------------------------------------------------------------------
>>
>>  _______________________________________________
>>  witty-interest mailing list
>>  witty-interest@lists.sourceforge.net
>>  https://lists.sourceforge.net/lists/listinfo/witty-interest
>>


------------------------------------------------------------------------------
_______________________________________________
witty-interest mailing list
witty-interest@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/witty-interest

Reply via email to