package payments::Provider::PayTure; use strict; use warnings 'all'; use base 'payments::Provider::Base'; use Contenido::Globals; use payments::Keeper; use Digest::MD5; use Data::Dumper; use URI; use URI::QueryParam; our $init_url = ''; sub new { my ($proto, %params) = @_; my $class = ref($proto) || $proto; my $self = {}; my $prefix = $class =~ /\:\:(\w+)$/ ? lc($1) : undef; return unless $prefix; $self->{payment_system} = $prefix; $self->{app_id} = $state->{payments}->{$prefix."_app_id"}; $self->{secret} = $state->{payments}->{$prefix."_app_secret"}; $self->{currency} = $state->{payments}->{$prefix."_currency_code"}; $self->{test_mode} = $state->{payments}->{$prefix."_test_mode"}; $self->{api}{init} = 'https://sandbox.payture.com/apim/Init'; bless $self, $class; return $self; } sub init { my $self = shift; my (%opts) = @_; my $session_type = delete $opts{session_type} || 'Pay'; ### 'Pay' or 'Block' my $order_id = delete $opts{order_id} || return 0; ### Сумма копейках. Если дробное - преобразуем my $sum = delete $opts{sum} || return 0; if ( $sum =~ /[\.\,]/ ) { $sum =~ s/\,/\./; $sum = int($sum * 100); } my $ip = delete $opts{ip} || return 0; my $url = delete $opts{url}; my $template = delete $opts{teplate}; my $lang = delete $opts{lang}; my $params = delete $opts{params}; my $ua = LWP::UserAgent->new; my $req = URI->new( $self->{api}{init} ); $req->query_param( Key => $self->id ); my @data = ( "SessionType=$session_type", "OrderId=$order_id", "Amount=$sum", "IP=$ip"); push @data, "Url=$url" if $url; push @data, "TemplateTag=$template" if $template; push @data, "Url=$url" if $url; push @data, "Language=$lang" if $lang; if ( ref $params eq 'HASH' ) { while ( my ($param, $val) = each %$params ) { } } } 1;