Richard, I've posted a response to your questions on the OpenSRS
dev-list (with a copy directly to you).

Dan


On Thu, 2002-01-17 at 15:35, POWERHOUSE wrote:
> Alright, Here is my last 2nd and last problem.
> 
> Again in the top I added the var's...
> 
> qw( I added $merchID $price $Tprice $domprice 
> 
> also I added 
> use Net::SSLeay qw(post_https make_form); 
> for the subroutine below (charge)
> 
> In the listed subroutine I was having lots of problems. I am doing this in the Test 
>environment, so I added a fake credit card to it...
> 
> sub process_order {
> 
> # At the bottom, just above 
> 
>     my $xcp_request = {
>         action => "sw_register",
>         object => "domain",
>         attributes => $data,
>     };
>     my $register_results = $XML_Client->send_cmd( $xcp_request );
>     unless  ($register_results->{is_success}) {
>         throw Exception "Register","Error occured while was trying to process your 
>order:<br>\n".$register_results->{response_text};
>     }
> 
> # I added this line... (charge() being the last subroutine - sub charge {
> 
>     if ($in{p_cc_num} != 4111111111111111) { # if the card presented is 
>4111111111111111 then ignore that subroutine and process order.. THAT WORKS..
>   if(!charge()) {
>     throw Exception "Register", "Sorry, Your card was denied. Please use a different 
>card.\n";
>   }
> } # I really think the problem is either in the throw exception, but yet I am not 
>sure because....
> 
> 
> Here is the sub charge { subroutine...
> 
> 
> sub charge {
> 
> if ($in{email_bundle} == 1) {
> my $domprice = "26.95";
> } else {
> my $domprice = "13.95";
> }
> 
> 
> my $price += $domprice*$in{period};
> 
> $price = sprintf("%.2f", $price); # I am not sure what this does, but I THINK it 
>formats the dollar amount so that it's xx.xx not xx.xxxxxxx
> 
> my ($page, $response, %headers) = post_https('www.mygate.way', 443, 
>         '/securedir/file.asp', '', 
>         make_form(
>          'Amount' => $price,
>          'CC_Number' => $in{p_cc_num},
>          'Name' => "$in{billing_first_name} $in{billing_last_name}",
>          'Month' => $in{p_cc_exp_mon},
>          'Year' => $in{p_cc_exp_yr},
>          'Street' => $in{billing_address1},
>          'City' =>  $in{billing_city},
>          'State' => $in{billing_state},
>          'Zip' => $in{billing_postal_code},
>          'Email' => $in{billing_email},
>          'Merch_ID' => $merchID, #  $merchID is defined in OpenSRS.conf
>          'Tr_Type' => 'PREAUTH',
>                                     'Comment1' => $in{Comment1},
>                                     'Comment2' => $in{renewal_period},
>          'AVSREQ' => '0',
> 
>          ));
> 
> my ($a, $num, $c, $d) = split /\,/, $page, 4; # my Gateway company sends back 4 
>variables, first of which is either Y for approved or N for declined...
> 
> 
> if($a eq 'Y') { # therefore it checks the first variable to see if it is approved. 
>If it is, then it returns 1; then finishes the sub process_order { subroutine. 
>  return 1;
> } else {
>  return 0;
> }
> }
> 
> Ok. I think my error maybe in here possibly. This is the same script I use in my 
>reg_system.cgi file. It's modified, since I don't have to worry about checking for
> what domain it is, .com, net, org, biz, info, etc. But what I deleted was obsolete 
>in this script. Anyways, when I run 
>https://www.firstratehosting.com/cgi-bin/reg_system.name.cgi which is the test 
>environment, It runs fine, but when I get to the verify order, and click on order, I 
>get the "throw exception" error. When
> I check my transactions looking for a decline, It don't even show it. Usually it 
>does. so it's not even calling the gateway through this subroutine. I don't get any 
>errors except that throw exception.  If I use that fake card it processes the domain. 
>So the problem is either that the sub charge is not correct, which I would assume 
>would give me an error, OR the  if(!charge()) { that makes it run this, is in 
>correct. I guess it could be the throw error message, maybe that is incorrect, so it 
>just throws the error because of some reason, without calling the sub routine.
> 
> Sorry this is lengthy, but I need help, please.
> 
> Thank you for any help you can offer.
> 
> Richard.
> 
> 


Reply via email to