Revision 358 (by ahitrov, 2013/06/11 08:56:08) |
Initial plugin import
|
package payments::Provider::Base;
use strict;
use warnings 'all';
use base 'payments::Provider::Base';
use Contenido::Globals;
use payments::Keeper;
use Digest::MD5;
use Data::Dumper;
sub get_form {
my $self = shift;
my (%opts) = @_;
my $id = delete $opts{id};
return unless $id;
my $sum = delete $opts{sum};
return unless $sum;
$sum = $sum =~ /\d+\.\d{2}/ ? $sum : sprintf( "%.2f", $sum );
my %fields = (
'method' => 'post',
'action' => 'https://www.moneta.ru/assistant.htm',
'visible' => [
{ type => 'submit', value => $opts{submit} || 'Оплатить' },
],
'hidden' => [
{ name => 'MNT_ID', value => $state->{payments}{moneta_app_id} },
{ name => 'MNT_TRANSACTION_ID', value => $id },
{ name => 'MNT_CURRENCY_CODE', value => $state->{payments}{moneta_currency_code} },
{ name => 'MNT_AMOUNT', value => $sum },
],
);
if ( $state->{payments}{moneta_test_mode} ) {
push @{$fields{hidden}}, { name => 'MNT_TEST_MODE', value => 1 }
}
if ( $opts{success} ) {
push @{$fields{hidden}}, { name => 'MNT_SUCCESS_URL', value => $opts{success} }
}
if ( $opts{fail} ) {
push @{$fields{hidden}}, { name => 'MNT_FAIL_URL', value => $opts{fail} }
}
if ( $state->{payments}{moneta_sig_code} ) {
my $str = $state->{payments}{moneta_app_id}.$id.$sum.$state->{payments}{moneta_currency_code}.$state->{payments}{moneta_test_mode}.$state->{payments}{moneta_sig_code};
my $md5 = Digest::MD5::md5_hex ( $str );
push @{$fields{hidden}}, { name => 'MNT_SIGNATURE', value => $md5 }
}
if ( exists $opts{custom1} ) {
push @{$fields{hidden}}, { name => 'MNT_CUSTOM1', value => $opts{custom1} }
}
if ( exists $opts{custom2} ) {
push @{$fields{hidden}}, { name => 'MNT_CUSTOM2', value => $opts{custom2} }
}
if ( exists $opts{custom3} ) {
push @{$fields{hidden}}, { name => 'MNT_CUSTOM3', value => $opts{custom3} }
}
return \%fields;
}
1;