[Date Prev][Date Next][Thread Prev][Thread Next][Minivend by date
][Minivend by thread
]
Re: Calling a Perl subroutine from within a checkout profile.
****** message to minivend-users from Erik Aase-Remedios <erik@fourfish.com> ******
While I'm not quite sure how you would get access to the subroutine, you
can't do it they way you are trying.
The Global Sub exists in a seperate package than the one your [perl]
[/perl] code exists in (see 'perldoc Safe').
Here's a guess at a way it might work, depending on interpolation order.
Implement your subroutine as a UserTag, call that UserTag inside a [perl
interpolate=1] container, just like when you do this: '$var = q{[scratch
value]};'.
Does that make sense? You basically need to tell minivend to execute the
subroutine for you and then feed that output to your perl code which then
would give a result to the page.
-Erik
On Wed, 3 Mar 1999, Gerard Olszowiec wrote:
> ****** message to minivend-users from "Gerard Olszowiec" <gerard@entitysoftware.com> ******
>
> Hi All:
>
> My exasperation level is at an all-time high at the moment. I can't get
> sometime as simple as a sub call -- a sub that I know works -- to return a
> result in a checkout profile. My Perl needs some help. Can someone help?
>
> What I have is a 2-page checkout where the credit card authorization is
> processed on the second page. The credit card interface is custom made for
> a service that is not supported by MV 3.08. I have tested every piece
> individually, so I know they all work separately. The problem is I can't
> get the global sub I wrote 'cc_auth' to return a result -- any result --
> when I call it from within the profile. ('cc_auth' currently doesn't accept
> arguments, it always returns a hardcoded "APPROVED" or "DECLINED" result,
> depending on what I am testing.) I know the sub works because I am able to
> display the expected results on the screen with
>
> [perl arg=sub interpolate=1]cc_auth[/perl]
>
> But, I want to assign the results to a variable within the checkout profile.
> The 2nd page profile looks like this:
>
> [set receipt_profile]
> [perl values config]
> # $cc_auth_results = "APPROVED,T000001,240343,240343 \$1.00,0000";
> # $cc_auth_results = "DECLINED,T000001,,INVALID ACCOUNT ,0363";
> $cc_auth_results = &cc_auth();
>
> ($cc_auth_status, $cc_ref_no, $cc_auth_no) = split(',', $cc_auth_results);
> $cc_auth_ok = ($cc_auth_status =~ /^APPROVED$/);
>
> if (!$cc_auth_ok)
> {
> $cc_auth_no = $cc_auth_status;
> }
>
> $out = <<EOF;
> &set = mv_cc_auth_declined $cc_auth_ok
> &set = credit_card_auth_results $cc_auth_results
> &set = credit_card_auth_code $cc_auth_no
> &set = credit_card_auth_status $cc_auth_status
> EOF
> return $out;
> [/perl]
>
> &fatal=yes
> &final=yes
> [/set]
>
> If I test this profile with either the APPROVED or DECLINED test code above,
> I get the desired results; if APPROVED the reciept is displayed, otherwise
> needfield.html displays my custom error message indicating that there is
> somethng wrong with the cc info entered. However, when I try
> $cc_auth_results = &cc_auth(); or any variation with 'my', '&' and '()',
> $cc_auth_results retains the value of the last transaction. Even if I did
> something like:
>
> $cc_auth_results = "DECLINED,T000001,,INVALID ACCOUNT ,0363";
> $cc_auth_results = &cc_auth();
>
> the $cc_auth_results retains the last transaction results, which isn't the
> DECLINE test line above. Additionally, when I use $cc_auth_results =
> &cc_auth(); the above code
>
> $cc_auth_ok = ($cc_auth_status =~ /^APPROVED$/);
>
> always seems to succeed, even if $cc_auth_results is "DECLINED,..." leading
> to a reciept being printed with "DECLINED" sometimes in the authorization
> results area. Not exactly what the merchant wants to see. 8-)
>
> Am I doing something blatantly wrong here with the sub call, or is the sub
> call messing up the memory space of $cc_auth_results and subsequently the
> pattern match?
>
> help!
>
>
> Cheers,
> Gerard
> ------------------------------
> Gerard Olszowiec
> Entity Software
> 902.455.7216
> gerard@entitysoftware.com
> www.entitysoftware.com
>
-
To unsubscribe from the list, DO NOT REPLY to this message. Instead, send
email with 'UNSUBSCRIBE minivend-users' in the body to Majordomo@minivend.com.
Archive of past messages: http://www.minivend.com/minivend/minivend-list