LP 1708728 - Fix Stripe penny errors introduced by perl int() function
authorMichele Morgan <mmorgan@noblenet.org>
Wed, 9 Aug 2017 15:36:20 +0000 (11:36 -0400)
committerGalen Charlton <gmc@equinoxinitiative.org>
Wed, 23 Aug 2017 20:18:19 +0000 (16:18 -0400)
Fixes the issue where payment amounts sent to Stripe can be one cent less
than the actual Evergreen payment due to use of the perl int() function.

To test
-------
A Stripe account is required to view transactions on the Stripe side.
To enable test payments, Stripe testing API keys need to be entered
in the Evergreen ou settings:

credit.processor.stripe.pubkey
credit.processor.stripe.secretkey

- Add a bill to a patron record with the following amounts: $8.20
- Login to the opac as the patron and pay the bill.
- View the transaction on the Stripe side and see that it is one cent
  less than the paid bill in Evergreen.
- Apply the patch.
- Repeat the steps above.

- On the Stripe side, see that the Stripe amount and Evergreen amount
  now match.

Signed-off-by: Michele Morgan <mmorgan@noblenet.org>
Signed-off-by: Dan Pearl <dpearl@cwmars.org>
Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>

Open-ILS/src/perlmods/lib/OpenILS/Application/Circ/Money.pm

index c434b15..17c496b 100644 (file)
@@ -101,7 +101,7 @@ sub process_stripe_or_bop_payment {
     if ($cc_args->{processor} eq 'Stripe') { # Stripe
         my $stripe = Business::Stripe->new(-api_key => $psettings->{secretkey});
         $stripe->charges_create(
-            amount => int($total_paid * 100.0), # Stripe takes amount in pennies
+            amount => ($total_paid * 100), # Stripe takes amount in pennies
             card => $cc_args->{stripe_token},
             description => $cc_args->{note}
         );