Server IP : 103.119.228.120 / Your IP : 18.217.237.169 Web Server : Apache System : Linux v8.techscape8.com 3.10.0-1160.119.1.el7.tuxcare.els2.x86_64 #1 SMP Mon Jul 15 12:09:18 UTC 2024 x86_64 User : nobody ( 99) PHP Version : 5.6.40 Disable Function : shell_exec,symlink,system,exec,proc_get_status,proc_nice,proc_terminate,define_syslog_variables,syslog,openlog,closelog,escapeshellcmd,passthru,ocinum cols,ini_alter,leak,listen,chgrp,apache_note,apache_setenv,debugger_on,debugger_off,ftp_exec,dl,dll,myshellexec,proc_open,socket_bind,proc_close,escapeshellarg,parse_ini_filepopen,fpassthru,exec,passthru,escapeshellarg,escapeshellcmd,proc_close,proc_open,ini_alter,popen,show_source,proc_nice,proc_terminate,proc_get_status,proc_close,pfsockopen,leak,apache_child_terminate,posix_kill,posix_mkfifo,posix_setpgid,posix_setsid,posix_setuid,dl,symlink,shell_exec,system,dl,passthru,escapeshellarg,escapeshellcmd,myshellexec,c99_buff_prepare,c99_sess_put,fpassthru,getdisfunc,fx29exec,fx29exec2,is_windows,disp_freespace,fx29sh_getupdate,fx29_buff_prepare,fx29_sess_put,fx29shexit,fx29fsearch,fx29ftpbrutecheck,fx29sh_tools,fx29sh_about,milw0rm,imagez,sh_name,myshellexec,checkproxyhost,dosyayicek,c99_buff_prepare,c99_sess_put,c99getsource,c99sh_getupdate,c99fsearch,c99shexit,view_perms,posix_getpwuid,posix_getgrgid,posix_kill,parse_perms,parsesort,view_perms_color,set_encoder_input,ls_setcheckboxall,ls_reverse_all,rsg_read,rsg_glob,selfURL,dispsecinfo,unix2DosTime,addFile,system,get_users,view_size,DirFiles,DirFilesWide,DirPrintHTMLHeaders,GetFilesTotal,GetTitles,GetTimeTotal,GetMatchesCount,GetFileMatchesCount,GetResultFiles,fs_copy_dir,fs_copy_obj,fs_move_dir,fs_move_obj,fs_rmdir,SearchText,getmicrotime MySQL : ON | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /usr/local/ssl/local/ssl/local/ssl/local/ssl/local/share/perl5/Business/OnlinePayment/ |
Upload File : |
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; =head1 NAME Business::OnlinePayment::HTTPS - Base class for HTTPS payment APIs =head1 SYNOPSIS 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 ); #... } =head1 DESCRIPTION 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 ). =head1 METHODS =over 4 =item https_get [ \%options ] HASHREF | FIELD => VALUE, ... Accepts parameters as either a hashref or a list of fields and values. In the latter case, ordering is preserved (see L<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', ... }, } =cut # 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 ); } =item https_post [ \%options ] SCALAR | HASHREF | FIELD => VALUE, ... Accepts form fields and values as either a hashref or a list. In the latter case, ordering is preserved (see L<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', } =cut 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 ); } =back =head1 SEE ALSO L<Business::OnlinePayment>, L<Net::HTTPS::Any> =cut 1;