#!/usr/bin/perl use strict; use warnings; use Test::Most; if ( !$ENV{WPP_TEST} || !-f $ENV{WPP_TEST} ) { plan skip_all => 'No WPP_TEST env var set. Please see README to run tests'; } else { plan tests => '7'; } use Business::PayPal::API qw( DirectPayments CaptureRequest ReauthorizationRequest VoidRequest RefundTransaction ); my @methlist = qw( DirectPayments CaptureRequest ReauthorizationRequest VoidRequest RefundTransaction); use_ok( 'Business::PayPal::API', @methlist ); require 't/API.pl'; my %args = do_args(); my ( $transale, $tranvoid, $tranbasic, $tranrefund ); my ( $ppsale, $ppvoid, $ppbasic, $pprefund, $pprefund1, $ppcap, $ppcap1 ); my (%respsale, %resprefund, %resprefund1, %respbasic, %respcap, %respcap1, %respvoid ); #Test Full Refund on Sale #$Business::PayPal::API::Debug=1; $ppsale = new Business::PayPal::API( %args ); %respsale = $ppsale->DoDirectPaymentRequest( PaymentAction => 'Sale', OrderTotal => 11.87, TaxTotal => 0.0, ItemTotal => 0.0, CreditCardType => 'Visa', CreditCardNumber => '4561435600988217', ExpMonth => '01', ExpYear => +( localtime )[5] + 1901, CVV2 => '123', FirstName => 'JP', LastName => 'Morgan', Street1 => '1st Street LaCausa', Street2 => '', CityName => 'La', StateOrProvince => 'CA', PostalCode => '90210', Country => 'US', Payer => 'mall@example.org', CurrencyID => 'USD', IPAddress => '10.0.0.1', MerchantSessionID => '10113301', ); #$Business::PayPal::API::Debug=0; if ( like( $respsale{'Ack'}, qr/Success/, 'Direct Payment Sale' ) ) { $transale = $respsale{'TransactionID'}; #$Business::PayPal::API::Debug=1; $pprefund = new Business::PayPal::API( %args ); %resprefund = $pprefund->RefundTransaction( TransactionID => $transale, RefundType => 'Full', Memo => 'Full direct sale refund', ); #$Business::PayPal::API::Debug=0; like( $resprefund{'Ack'}, qr/Success/, 'Full Refund For Sale' ); } #Basic Authorization and Capture %args = do_args(); #$Business::PayPal::API::Debug=0; $ppbasic = new Business::PayPal::API( %args ); %respbasic = $ppbasic->DoDirectPaymentRequest( PaymentAction => 'Authorization', OrderTotal => 13.87, TaxTotal => 0.0, ItemTotal => 0.0, CreditCardType => 'Visa', CreditCardNumber => '4561435600988217', ExpMonth => '01', ExpYear => +( localtime )[5] + 1901, CVV2 => '123', FirstName => 'JP', LastName => 'Morgan', Street1 => '1st Street LaCausa', Street2 => '', CityName => 'La', StateOrProvince => 'CA', PostalCode => '90210', Country => 'US', Payer => 'mall@example.org', CurrencyID => 'USD', IPAddress => '10.0.0.1', MerchantSessionID => '10113301', ); #$Business::PayPal::API::Debug=0; if (like( $respbasic{'Ack'}, qr/Success/, 'Direct Payment Basic Authorization' ) ) { $tranbasic = $respbasic{'TransactionID'}; #Test Partial Capture #$Business::PayPal::API::Debug=1; $ppcap = new Business::PayPal::API( %args ); %respcap = $ppcap->DoCaptureRequest( AuthorizationID => $tranbasic, CompleteType => 'NotComplete', Amount => '3.00', Note => 'Partial Capture', ); #$Business::PayPal::API::Debug=0; like( $respcap{'Ack'}, qr/Success/, 'Partial Capture' ); #Test Full Capture #$Business::PayPal::API::Debug=1; $ppcap1 = new Business::PayPal::API( %args ); %respcap1 = $ppcap1->DoCaptureRequest( AuthorizationID => $tranbasic, CompleteType => 'Complete', Amount => '6.00', ); #$Business::PayPal::API::Debug=0; like( $respcap1{'Ack'}, qr/Success/, 'Full Capture' ); } else { skip( "direct payment auth failed", 2 ) } #Test Void $ppbasic = new Business::PayPal::API( %args ); %respbasic = $ppbasic->DoDirectPaymentRequest( PaymentAction => 'Authorization', OrderTotal => 17.37, TaxTotal => 0.0, ItemTotal => 0.0, CreditCardType => 'Visa', CreditCardNumber => '4561435600988217', ExpMonth => '01', ExpYear => +( localtime )[5] + 1901, CVV2 => '123', FirstName => 'JP', LastName => 'Morgan', Street1 => '1st Street LaCausa', Street2 => '', CityName => 'La', StateOrProvince => 'CA', PostalCode => '90210', Country => 'US', Payer => 'mall@example.org', CurrencyID => 'USD', IPAddress => '10.0.0.1', MerchantSessionID => '10113301', ); #$Business::PayPal::API::Debug=1; $ppvoid = new Business::PayPal::API( %args ); %respvoid = $ppvoid->DoVoidRequest( AuthorizationID => $respbasic{TransactionID}, Note => 'Authorization Void', ); #$Business::PayPal::API::Debug=0; like( $respvoid{'Ack'}, qr/Success/, 'Authorization Voided' );