Thanks, I think I see how this works - thanks for the help. On 12/28/06, Katz, Dov B (IT) <[EMAIL PROTECTED]> wrote: > > If things are pretty much guaranteed to happen in a few second window > (you may want to ask them of average response time), you might want to > make something like the pseudocode below: > > PendingTransaction.cfc > { > _uniqueID= createUUID(); > _data: struct > _response : ""; // simplevalue > function init(struct d){ this._data=d;} > function getData(){ return _data} > function getUniqueID(){ return _uniqueID; } > function setResponse(struct data){ _response=data;} > function isComplete( return not isSimplevalue(_response);} > function getResponse(){ return _response;} > > } > > PendingTransactionManager.cfc > { > _allTxns=structnew(); > function createTransaction(Struct data){ > t=new PendingTransaction().init(data); > _allTxns[t.getUniqueID()]=t; > return t; > } > > function updateTransaction(id, struct data){ > _allTxns[id].setResponse(data); > // do some DB operation > } > > function processTransaction(PendingTransaction t){ > // add data to DB > // do payment stuff > while(NOT t.iscomplete()){ > sleep (100 milliseconds); > } > return t; > } > } > > ---- > > Then in your code you set up Application.TxnManager=new > PendingTransactionManager(); > > Success.cfm: > application.txnManager.updateTransaction(form.someID,form); > Error.cfm: application.txnManager.updateTransaction(form.someID,form); > Whatever.cfm: > application.txnManager.updateTransaction(form.someID,form); > > And in your act_pay.cfm you do this... > > <cfscript> > Txn=Application.TxnManager.createTransaction(form); > // this blocks until you get the response > Application.TxnManager.processTransaction(txn); > > Use info from txn.getResponse() > </cfscript> > > -----Original Message----- > From: Michael Traher [mailto:[EMAIL PROTECTED] > Sent: Thursday, December 28, 2006 11:30 AM > To: CF-Talk > Subject: Re: how do I reunite 2 separate requests > > Thanks Russ, > > Yes I guess getting the callback page to write to the database, and then > the original request read and wait for that database value is a way to > solve this. And yes we do pass a unique transaction reference to > identify the value - its just a bit clunky compared to it all being in > one request which is how our other PSP, 'datacash' (who I highly > recommend BTW) handle things. > > > > On 12/28/06, Snake <[EMAIL PROTECTED]> wrote: > > > > This is a pretty standard callback method, most systems will use it. > > When you sent the request, you should have the option of sending a > > custom value, such as your own generated transaction or invoiceID. If > > not then you could always send the CFID and CFTOKEN. > > This is what you need to use on the callback page to process the > > returned data and validate the transaction. > > > > So if your orginal request page needs to wait for approval and then do > > > something, you could simply check the database for the data saved by > > your callback page and then you will know if it failed or was > successful. > > > > Russ > > > > > > -----Original Message----- > > From: Michael Traher [mailto:[EMAIL PROTECTED] > > Sent: 28 December 2006 15:45 > > To: CF-Talk > > Subject: how do I reunite 2 separate requests > > > > Need a bit help - my poor ol' brain is struggling with how best to > > impelment this... > > > > I am just starting to integrate this payment service provider into our > > > system to handle credit card payments for our customers in the Asia > > Pacific region. > > > > I already use a PSP here in the UK and I have a cfc which nicely > > implements the process - I feed in credit card, expiry date, amount > > currency etc etc and after an cfhttp call the cfhttp.filecontent > > contains the response as an XML packet... nice. > > > > For paydollar the implementation is slight different - I still do an > > cfhttp call but then I have to declare a URL to 'receive the results > > in realtime' > > and in addition declare 3 separate pages to display in case of error, > > decline or success. So paydollar in effect spawn a separate request to > > > pass me the results and all I get back in the cfhttp.filecontent is > > one of the three pages I nominated. > > > > So I know broadly if it has been authorised, declined or some error - > > but the details are in another request! > > > > Any ideas on the best way to tie the requests together again? Can the > > results page know about the correct CF session scope? > > > > The nominated 'results URL' is not dynamic with each request by the > > way - just declared to them once. When it is run however it has access > > > to the transactio details in the form scope. > > > > I really want to abstract the whole credit card payment so that it > > will pass to the appropriate PSP behind the scenes and pass back a > > standard response and codes. > > > > confused of UK > > > > -- > > Mike T > > Blog http://www.socialpoints.com/ > > > > > > > > > > > > > >
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~| Create robust enterprise, web RIAs. Upgrade & integrate Adobe Coldfusion MX7 with Flex 2 http://ad.doubleclick.net/clk;56760587;14748456;a?http://www.adobe.com/products/coldfusion/flex2/?sdid=LVNU Archive: http://www.houseoffusion.com/groups/CF-Talk/message.cfm/messageid:265225 Subscription: http://www.houseoffusion.com/groups/CF-Talk/subscribe.cfm Unsubscribe: http://www.houseoffusion.com/cf_lists/unsubscribe.cfm?user=11502.10531.4