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