1 |
361 |
ahitrov |
package payments::Provider::Moneta; |
2 |
358 |
ahitrov |
|
3 |
|
|
use strict; |
4 |
|
|
use warnings 'all'; |
5 |
|
|
|
6 |
|
|
use base 'payments::Provider::Base'; |
7 |
|
|
use Contenido::Globals; |
8 |
|
|
use payments::Keeper; |
9 |
|
|
use Digest::MD5; |
10 |
|
|
use Data::Dumper; |
11 |
|
|
|
12 |
|
|
sub get_form { |
13 |
|
|
my $self = shift; |
14 |
|
|
my (%opts) = @_; |
15 |
|
|
my $id = delete $opts{id}; |
16 |
|
|
return unless $id; |
17 |
|
|
my $sum = delete $opts{sum}; |
18 |
|
|
return unless $sum; |
19 |
|
|
|
20 |
|
|
$sum = $sum =~ /\d+\.\d{2}/ ? $sum : sprintf( "%.2f", $sum ); |
21 |
|
|
|
22 |
|
|
my %fields = ( |
23 |
|
|
'method' => 'post', |
24 |
|
|
'action' => 'https://www.moneta.ru/assistant.htm', |
25 |
|
|
'visible' => [ |
26 |
|
|
{ type => 'submit', value => $opts{submit} || 'Оплатить' }, |
27 |
|
|
], |
28 |
|
|
'hidden' => [ |
29 |
|
|
{ name => 'MNT_ID', value => $state->{payments}{moneta_app_id} }, |
30 |
|
|
{ name => 'MNT_TRANSACTION_ID', value => $id }, |
31 |
|
|
{ name => 'MNT_CURRENCY_CODE', value => $state->{payments}{moneta_currency_code} }, |
32 |
|
|
{ name => 'MNT_AMOUNT', value => $sum }, |
33 |
|
|
], |
34 |
|
|
); |
35 |
|
|
if ( $state->{payments}{moneta_test_mode} ) { |
36 |
|
|
push @{$fields{hidden}}, { name => 'MNT_TEST_MODE', value => 1 } |
37 |
|
|
} |
38 |
|
|
if ( $opts{success} ) { |
39 |
|
|
push @{$fields{hidden}}, { name => 'MNT_SUCCESS_URL', value => $opts{success} } |
40 |
|
|
} |
41 |
|
|
if ( $opts{fail} ) { |
42 |
|
|
push @{$fields{hidden}}, { name => 'MNT_FAIL_URL', value => $opts{fail} } |
43 |
|
|
} |
44 |
|
|
if ( $state->{payments}{moneta_sig_code} ) { |
45 |
|
|
my $str = $state->{payments}{moneta_app_id}.$id.$sum.$state->{payments}{moneta_currency_code}.$state->{payments}{moneta_test_mode}.$state->{payments}{moneta_sig_code}; |
46 |
|
|
my $md5 = Digest::MD5::md5_hex ( $str ); |
47 |
|
|
push @{$fields{hidden}}, { name => 'MNT_SIGNATURE', value => $md5 } |
48 |
|
|
} |
49 |
|
|
|
50 |
|
|
if ( exists $opts{custom1} ) { |
51 |
|
|
push @{$fields{hidden}}, { name => 'MNT_CUSTOM1', value => $opts{custom1} } |
52 |
|
|
} |
53 |
|
|
if ( exists $opts{custom2} ) { |
54 |
|
|
push @{$fields{hidden}}, { name => 'MNT_CUSTOM2', value => $opts{custom2} } |
55 |
|
|
} |
56 |
|
|
if ( exists $opts{custom3} ) { |
57 |
|
|
push @{$fields{hidden}}, { name => 'MNT_CUSTOM3', value => $opts{custom3} } |
58 |
|
|
} |
59 |
|
|
|
60 |
|
|
return \%fields; |
61 |
|
|
} |
62 |
|
|
|
63 |
|
|
|
64 |
|
|
1; |