I've implemented a couple of credit card payment systems, using a few
different payment processing services.  Of the payment processing services
I've used, the only two worth anything were Cybercash and Verisign.  And
Verisign was so much better than CyC it wasn't even funny.  At least as of a
year ago, Verisign has better reporting, better rates, they were much more
stable (CyC went down something like 20 time over the Christmas season last
year.  Never for very long, but enough to cause CF to time-out processing
the page).  Not that I'm trying to put down CyC, it could have been other
issues, but when we switched to Verisign a lot of problems went away.  One
of the biggest was that Verisign's transaction times were consistently under
five seconds.  Cyc usually took 45 seconds, but sometime would go up to more
than two minutes.  That's a lot of time for a user to click on the submit
button again.  That's a lot of time for your users to get pissed off, go to
another site, or send an email to tech support.

Some pointers on implementing the system: People get really cranky when
money is involved, so you need to put a lot of effort into error handling.
Keep track of everything...  Assume that the processing, as it progresses
down the page, can fail for any reason.  Use database transactions.
cftransaction is useful, too, but it is too aggressive and can cause a lot
of problems with a slow CC provider. You can avoid a lot of trouble by using
a fast processing service. 

This is what I settled on: for each transaction, make an timestamp entry to
the database for every "stage" of processing. As control progresses down the
page:
        1.) As soon as they hit the top of the form processing page check to
see if there is a "started" status code in the db.   That way, if there is
already a "started" in the db, you know that the user reloaded and is
hitting the form processing page again. Then you can halt processing and
show the user a message letting them know they might have been double
charged. 
        2.) Enter a status code of "started" and all of the CC and user info
into the db.  That way if something fails as the transaction is processed
you have a record.  And it _will_ fail at some point.  The network guys
might block port 443, used by SSL, or a router on the way to a bank might
suddenly start dropping packets.  Anything can, and will, at some point,
fail.  With all of the CC info in the db, if you need to, you can give a
refund, or process the transaction by hand.
        3.) Run the tag to process the transaction.
        4.) Save all of the returned codes into the db, and change the
status to "success" if it completed successfully.

You should also be aware that there might be other issues to consider in
choosing your payment service, like your OS, your bank, your accounting
department.  For example, accounting will have to reconcile all of the
transactions that go through you processing service with their bank, so
reporting becomes important.  

Anyway, I hope this helps.  Good luck!


   Jeff Polaski
   Webmaster
   Research & Graduate Studies
   University California, Irvine 


-----Original Message-----
From: Tangorre, Michael T. [mailto:[EMAIL PROTECTED]]
Sent: Monday, November 26, 2001 5:15 PM
To: CF-Talk
Subject: CF and credit card transactions


Hi Everyone,

I am looking for some insight for processing credit cards with Cold Fusion.
I am aware of a few custom tags, but what kind of variety is offered in
terms of companies and sites to do the processing. I am not really a fan of
going from my site, to another site then back to my site as you do with
2CheckOut..

Open for discussion and ideas.

Thanks,

Michael T. Tangorre

============================
Resident Assistant - Brick
Web Applications Developer
A.U. Webteam Slave  :-)
AIM: CrazyFlash4

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Get the mailserver that powers this list at http://www.coolfusion.com
FAQ: http://www.thenetprofits.co.uk/coldfusion/faq
Archives: http://www.mail-archive.com/[email protected]/
Unsubscribe: http://www.houseoffusion.com/index.cfm?sidebar=lists

Reply via email to