| Business-OnlinePayment documentation | Contained in the Business-OnlinePayment distribution. |
Business::OnlinePayment::HTTPS - Base class for HTTPS payment APIs
package Business::OnlinePayment::MyProcessor;
use base qw(Business::OnlinePayment::HTTPS);
sub submit {
my $self = shift;
#...
# pass a list (order is preserved, if your gateway needs that)
( $page, $response, %reply_headers )
= $self->https_get( field => 'value', ... );
# or a hashref
my %hash = ( field => 'value', ... );
( $page, $response_code, %reply_headers )
= $self->https_get( \%hash );
#...
}
This is a base class for HTTPS based gateways, providing useful code for implementors of HTTPS payment APIs.
It depends on Net::HTTPS::Any, which in turn depends on Net::SSLeay _or_ ( Crypt::SSLeay and LWP::UserAgent ).
Accepts parameters as either a hashref or a list of fields and values. In the latter case, ordering is preserved (see Tie::IxHash to do so when passing a hashref).
Returns a list consisting of the page content as a string, the HTTP response code and message (i.e. "200 OK" or "404 Not Found"), and a list of key/value pairs representing the HTTP response headers.
The options hashref supports setting headers:
{
headers => { 'X-Header1' => 'value', ... },
}
Accepts form fields and values as either a hashref or a list. In the latter case, ordering is preserved (see Tie::IxHash to do so when passing a hashref).
Also accepts instead a simple scalar containing the raw content.
Returns a list consisting of the page content as a string, the HTTP response code and message (i.e. "200 OK" or "404 Not Found"), and a list of key/value pairs representing the HTTP response headers.
The options hashref supports setting headers and Content-Type:
{
headers => { 'X-Header1' => 'value', ... },
Content-Type => 'text/namevalue',
}
| Business-OnlinePayment documentation | Contained in the Business-OnlinePayment distribution. |
package Business::OnlinePayment::HTTPS; use strict; use base qw(Business::OnlinePayment); use vars qw($VERSION $DEBUG); use Tie::IxHash; use Net::HTTPS::Any 0.10; $VERSION = '0.10'; $DEBUG = 0;
# Content-Type => 'text/namevalue', sub https_get { my $self = shift; # handle optional options hashref my $opts = {}; if ( scalar(@_) > 1 and ref( $_[0] ) eq "HASH" ) { $opts = shift; } # accept a hashref or a list (keep it ordered) my $post_data; if ( ref( $_[0] ) eq 'HASH' ) { $post_data = shift; } elsif ( scalar(@_) > 1 ) { tie my %hash, 'Tie::IxHash', @_; $post_data = \%hash; } elsif ( scalar(@_) == 1 ) { $post_data = shift; } else { die "https_get called with no params\n"; } $self->build_subs(qw( response_page response_code response_headers )); my( $res_page, $res_code, @res_headers) = Net::HTTPS::Any::https_get( 'host' => $self->server, 'path' => $self->path, 'headers' => $opts->{headers}, 'args' => $post_data, 'debug' => $DEBUG, ); $self->response_page( $res_page ); $self->response_code( $res_code ); $self->response_headers( { @res_headers } ); ( $res_page, $res_code, @res_headers ); }
sub https_post { my $self = shift; # handle optional options hashref my $opts = {}; if ( scalar(@_) > 1 and ref( $_[0] ) eq "HASH" ) { $opts = shift; } my %post = ( 'host' => $self->server, 'path' => $self->path, 'headers' => $opts->{headers}, 'Content-Type' => $opts->{'Content-Type'}, 'debug' => $DEBUG, ); # accept a hashref or a list (keep it ordered) my $post_data = ''; my $content = undef; if ( ref( $_[0] ) eq 'HASH' ) { $post{'args'} = shift; } elsif ( scalar(@_) > 1 ) { tie my %hash, 'Tie::IxHash', @_; $post{'args'} = \%hash; } elsif ( scalar(@_) == 1 ) { $post{'content'} = shift; } else { die "https_post called with no params\n"; } $self->build_subs(qw( response_page response_code response_headers )); my( $res_page, $res_code, @res_headers)= Net::HTTPS::Any::https_post(%post); $self->response_page( $res_page ); $self->response_code( $res_code ); $self->response_headers( { @res_headers } ); ( $res_page, $res_code, @res_headers ); }
1;