Steve, thanks for that.  We'll see what happens!

--Josh





> From: Steve Johnson <[EMAIL PROTECTED]>
> Reply-To: [EMAIL PROTECTED]
> Date: Tue, 11 Mar 2003 18:28:59 -0700
> To: CF-Linux <[EMAIL PROTECTED]>
> Subject: Re: cfx_cybercash tag on Linux?
> 
>> I wrote that before I got your post.  I am on CFMX.  I am not a CGI
>> programmer but can you let me know what kind of scripting you had to do to
>> get it to work?  Any help is appreciated - thanks.
> 
> well, it's mostly hacked together in Perl, but if you want to wade
> through the following and have a strong understanding of how
> CyberCash works behind the scenes, then i bet you can get it to
> work...  you'll of course need to download the Perl MCK and agree to
> whatever license agreement it includes.  it took me lots of trial and
> error before i stumbled across exactly the right steps and permission
> settings to make this work.  also, that was about 9 months ago so i'm
> not sure how much help i'll be if you can't get it working, but feel
> free to ask...
> 
> to see it in action you can go buy something from www.aes.org.  ;-)
> 
> steve
> 
> -------------
> 
> *** excerpt from CF Custom Tag which calls the Perl script ***
> 
> 
> <!--- create a temp file to capture output of cfexecute --->
> <cfset tmpFile = getTempFile(getTempDirectory(),"cc")>
> 
> <cfif fileExists(tmpFile)>
> 
> <!--- charge card and put output into the temp file --->
> <cfexecute
> name="/htdocs/cybercash/perl_cybercash"
> outputfile="#tmpFile#"
> arguments="mauthonly #ccid# #attributes.amount#
> #attributes.card_exp# #attributes.card_number#
> #attributes.card_name#">
> </cfexecute>
> 
> <!--- loop over the temp file until cfexecute has put it's
> output there --->
> <cfsilent>
> <cfset fileDone = FALSE>
> <cfloop condition="not fileDone">
> 
> <cffile action="read" file="#tmpFile#" variable="fileContents">
> <cfif fileContents contains "done1234567890">
> <cfset fileDone = TRUE>
> </cfif>
> 
> </cfloop>
> </cfsilent>
> 
> <!--- populate status and errorMsg variables with info in
> temp file --->
> <cfset ccResultMStatus = "">
> <cfset ccResultMErrMsg = "">
> <cfloop index="lineFromFile" list="#fileContents#"
> delimiters="#chr(10)#">
> <cfif lineFromFile contains "MStatus">
> <cfset ccResultMStatus =
> replace(lineFromFile,"MStatus:","")>
> <cfelseif lineFromFile contains "MErrMsg">
> <cfset ccResultMErrMsg =
> replace(lineFromFile,"MErrMsg:","")>
> </cfif>
> </cfloop>
> 
> <!--- delete temp file to keep server clean but to also
> protect credit card info --->
> <cffile action="delete" file="#tmpFile#">
> 
> <cfelse>
> <cfset ccResultMStatus = "failure-internal">
> <cfset ccResultMErrMsg = "Failure: internal CF error -
> couldn't open temp file">
> </cfif>
> 
> 
> 
> *** entire Perl script "perl_cybercash" ***
> 
> 
> #!/usr/bin/perl
> 
> # Note: you must copy the three compiled apps into a directory in the PATH
> #  for whatever process calls CFEXECUTE. i.e. i first ran this command:
> #     print "PATH=$ENV{PATH}\n";
> #  from a Perl script called with CFEXECUTE and then copied computeMD5hash,
> #  MCKdecrypt, and MCKencrypt to /usr/local/bin
> #  if you try to alter the PATH yourself you'll bang your head
> against the wall for days
> 
> require 5.005;
> 
> $ConfigFile = "/htdocs/cybercash/merchant_conf";
> use lib "/htdocs/cybercash";
> use CCMckLib3_2 qw($MCKversion %Config InitConfig CCError CCDebug CCDebug2 );
> use CCMckDirectLib3_2 qw(SendCC2_1Server);
> use CCMckErrno3_2 qw(MCKGetErrorMessage $E_NoErr);
> 
> # load and check the config file (this code stolen from the CyberCash MCK)
> ($status) = &InitConfig($ConfigFile);
> if ($status != $E_NoErr) {
> # %Config is a failure struct
> foreach (keys(%Config)) {
> print " $_ ==> $Config{$_}\n";
> }
> $errmsg = &MCKGetErrorMessage($status);
> die("$0: $errmsg\n");
> }
> &CCDebug("Entering $0\n");
> 
> if ($ARGV[0] eq "mauthonly") {
> 
> #print "running mauthonly...\n";
> if ($ARGV[1] eq "") {
> print "Error: proper mauthonly is 'mauthonly order_id
> amount card_exp card_number card_name'\n";
> } else {
> $action="mauthonly";
> $order_id=$ARGV[1];
> $amount="$ARGV[2] $ARGV[3]";
> $card_exp=$ARGV[4];
> $card_number=$ARGV[5];
> $card_name="$ARGV[6] $ARGV[7] $ARGV[8] $ARGV[9]
> $ARGV[10] $ARGV[11] $ARGV[12]";
> $card_name =~ s/\s+$//;
> 
> # send the parameters to the CyberCash server
> %result = &SendCC2_1Server($action
> , 'order-id', $order_id
> , 'amount', $amount
> , 'card-exp', $card_exp
> , 'card-number', $card_number
> , 'card-name', $card_name
> );
> #print "action=$action / order-id=$order_id /
> amount=$amount\n";
> #print "card_exp=$card_exp / card_number=$card_number\n";
> #print "card_name=$card_name!\n";
> }
> 
> } elsif ($ARGV[0] eq "postauth") {
> 
> #print "running postauth...\n";
> if ($ARGV[1] eq "") {
> print "Error: proper postauth is 'postauth order_id
> amount card_exp card_number'\n";
> } else {
> $action="postauth";
> $order_id=$ARGV[1];
> $amount="$ARGV[2] $ARGV[3]";
> $card_exp=$ARGV[4];
> $card_number=$ARGV[5];
> 
> # send the parameters to the CyberCash server
> %result = &SendCC2_1Server($action
> , 'order-id', $order_id
> , 'amount', $amount
> , 'card-exp', $card_exp
> , 'card-number', $card_number
> );
> #print "action=$action / order-id=$order_id /
> amount=$amount\n";
> #print "card_exp=$card_exp / card_number=$card_number\n";
> }
> 
> } elsif ($ARGV[0] eq "return") {
> 
> #print "running return...\n";
> if ($ARGV[1] eq "") {
> print "Error: proper return is 'return order_id amount'\n";
> } else {
> $action="return";
> $order_id=$ARGV[1];
> $amount="$ARGV[2] $ARGV[3]";
> 
> # send the parameters to the CyberCash server
> %result = &SendCC2_1Server($action
> , 'order-id', $order_id
> , 'amount', $amount
> );
> #print "action=$action / order-id=$order_id /
> amount=$amount\n";
> }
> 
> } else {
> 
> print "Error: first argument must be mauthonly, postauth, or return\n";
> 
> }
> 
> # spit out the results so that the CF tag can parse them
> foreach (keys(%result)) {
> print "$_:$result{$_}\n";
> }
> 
> # spit out a final marker so that CF knows the script is finished running
> print "done1234567890\n";
> 
> 
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|
Archives: http://www.houseoffusion.com/cf_lists/index.cfm?forumid=14
Subscription: 
http://www.houseoffusion.com/cf_lists/index.cfm?method=subscribe&forumid=14
Structure your ColdFusion code with Fusebox. Get the official book at 
http://www.fusionauthority.com/bkinfo.cfm

                                Unsubscribe: 
http://www.houseoffusion.com/cf_lists/unsubscribe.cfm?user=89.70.14
                                

Reply via email to