Line # Revision Author
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;