# with Koha; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-use strict;
-use warnings;
+use Modern::Perl;
use utf8;
use CGI;
use HTTP::Request::Common;
use LWP::UserAgent;
-use URL::Encode qw(url_params_mixed);
+use URI;
use C4::Auth;
use C4::Output;
use C4::Accounts;
-use C4::Members;
-use C4::Budgets qw(GetCurrency);
+use Koha::Acquisition::Currencies;
use Koha::Database;
+use Koha::Patrons;
my $cgi = new CGI;
}
);
-my $active_currency = GetCurrency();
+my $active_currency = Koha::Acquisition::Currencies->get_active;
my $token = $cgi->param('token');
my $payer_id = $cgi->param('PayerID');
my $amount = $cgi->param('amount');
-my @accountlines = $cgi->param('accountlines');
+my @accountlines = $cgi->multi_param('accountlines');
my $ua = LWP::UserAgent->new;
'PAYERID' => $payer_id,
'TOKEN' => $token,
'PAYMENTREQUEST_0_AMT' => $amount,
- 'PAYMENTREQUEST_0_CURRENCYCODE' => $active_currency->{currency},
+ 'PAYMENTREQUEST_0_CURRENCYCODE' => $active_currency->currency,
};
my $response = $ua->request( POST $url, $nvp_params );
my $error = q{};
if ( $response->is_success ) {
- my $params = url_params_mixed( $response->decoded_content );
- if ( $params->{ACK} eq "Success" ) {
- $amount = $params->{PAYMENTINFO_0_AMT};
+ my $urlencoded = $response->content;
+ my %params = URI->new( "?$urlencoded" )->query_form;
- my $accountlines_rs = Koha::Database->new()->schema()->resultset('Accountline');
- foreach my $accountlines_id ( @accountlines ) {
- my $accountline = $accountlines_rs->find( $accountlines_id );
- makepayment( $accountlines_id, $borrowernumber, undef, $accountline->amountoutstanding, undef, undef, 'PayPal' );
- }
+
+ if ( $params{ACK} eq "Success" ) {
+ $amount = $params{PAYMENTINFO_0_AMT};
+
+ my $account = Koha::Account->new( { patron_id => $borrowernumber } );
+ my @lines = Koha::Account::Lines->search(
+ {
+ accountlines_id => { -in => \@accountlines }
+ }
+ );
+
+ $account->pay(
+ {
+ amount => $amount,
+ lines => \@lines,
+ note => 'PayPal'
+ }
+ );
}
else {
$error = "PAYPAL_ERROR_PROCESSING";
$error = "PAYPAL_UNABLE_TO_CONNECT";
}
+my $patron = Koha::Patrons->find( $borrowernumber );
$template->param(
- borrower => GetMemberDetails($borrowernumber),
+ borrower => $patron->unblessed,
accountview => 1
);