SUCCESS <%once> use Digest::MD5; <%args> $MNT_ID => undef $MNT_TRANSACTION_ID => undef $MNT_OPERATION_ID => undef $MNT_AMOUNT => 0 $MNT_CURRENCY_CODE => undef $MNT_TEST_MODE => 0 $MNT_SIGNATURE => undef $MNT_USER => undef $MNT_CORRACCOUNT => undef $MNT_CUSTOM1 => undef $MNT_CUSTOM2 => undef $MNT_CUSTOM3 => undef <%init> warn Dumper \%ARGS if $DEBUG; unless ( $MNT_ID && $MNT_TRANSACTION_ID && $MNT_OPERATION_ID && $MNT_AMOUNT && $MNT_CURRENCY_CODE ) { $m->out('FAIL'); return; } my ($obj) = $keeper->get_documents( class => 'monetaru::Transaction', operation_id => $MNT_OPERATION_ID, order_id => $MNT_TRANSACTION_ID, limit => 1, ); my $str = $MNT_ID . $MNT_TRANSACTION_ID . $MNT_OPERATION_ID . $MNT_AMOUNT . $MNT_CURRENCY_CODE . $MNT_TEST_MODE . $state->{monetaru}->{moneta_sig_code}; my $md5 = Digest::MD5::md5_hex ( $str ); unless ( $MNT_SIGNATURE eq $md5 ) { $m->out('FAIL'); return; } unless ( $obj ) { $obj = monetaru::Transaction->new( $keeper ); $obj->status( $MNT_TEST_MODE || 0 ); $obj->account_id( $MNT_ID ); $obj->order_id( $MNT_TRANSACTION_ID ); $obj->operation_id( $MNT_OPERATION_ID ); $obj->sum( $MNT_AMOUNT ); $obj->currency_code( $MNT_CURRENCY_CODE ); $obj->account_user( $MNT_USER ); $obj->account_corr( $MNT_CORRACCOUNT ); $obj->payment_system( $ARGS{'paymentSystem.unitId'} ); $obj->name( $MNT_CUSTOM1 ); $obj->custom1( $MNT_CUSTOM1 ); $obj->custom2( $MNT_CUSTOM2 ); $obj->custom3( $MNT_CUSTOM3 ); $obj->store; }