From 0f55f6b754e847c7d9a18561991bd4e8cc8cb728 Mon Sep 17 00:00:00 2001
From: Matthew Wire <mjw@mjwconsult.co.uk>
Date: Mon, 1 May 2023 15:49:40 +0100
Subject: [PATCH] Add stripe currency formatter

---
 CRM/Stripe/Api.php             | 15 ++++++++++++---
 Civi/Stripe/Webhook/Events.php |  2 +-
 2 files changed, 13 insertions(+), 4 deletions(-)

diff --git a/CRM/Stripe/Api.php b/CRM/Stripe/Api.php
index c02643c4..6b7ae247 100644
--- a/CRM/Stripe/Api.php
+++ b/CRM/Stripe/Api.php
@@ -65,7 +65,7 @@ class CRM_Stripe_Api {
             return (bool) $stripeObject->captured;
 
           case 'currency':
-            return (string) mb_strtoupper($stripeObject->currency);
+            return self::formatCurrency($stripeObject->currency);
 
           case 'payment_intent_id':
             return (string) $stripeObject->payment_intent;
@@ -97,7 +97,7 @@ class CRM_Stripe_Api {
             return (string) $stripeObject->amount_remaining / 100;
 
           case 'currency':
-            return (string) mb_strtoupper($stripeObject->currency);
+            return self::formatCurrency($stripeObject->currency);
 
           case 'status_id':
             if ((bool) $stripeObject->paid) {
@@ -133,7 +133,7 @@ class CRM_Stripe_Api {
             return (string) $stripeObject->plan->amount / 100;
 
           case 'currency':
-            return (string) mb_strtoupper($stripeObject->plan->currency);
+            return self::formatCurrency($stripeObject->plan->currency);
 
           case 'plan_start':
             return self::formatDate($stripeObject->start_date);
@@ -206,6 +206,15 @@ class CRM_Stripe_Api {
     return $stripeTimestamp ? date('YmdHis', $stripeTimestamp) : NULL;
   }
 
+  /**
+   * @param string $stripeCurrency
+   *
+   * @return string
+   */
+  public static function formatCurrency(string $stripeCurrency): string {
+    return (string) mb_strtoupper($stripeCurrency);
+  }
+
   /**
    * Convert amount to a new currency
    *
diff --git a/Civi/Stripe/Webhook/Events.php b/Civi/Stripe/Webhook/Events.php
index 0824c532..ebdfea04 100644
--- a/Civi/Stripe/Webhook/Events.php
+++ b/Civi/Stripe/Webhook/Events.php
@@ -211,7 +211,7 @@ class Events {
         'available_on' => \CRM_Stripe_Api::formatDate($balanceTransaction->available_on),
         'exchange_rate' => $balanceTransaction->exchange_rate,
         'payout_amount' => $balanceTransaction->amount / 100,
-        'payout_currency' => $balanceTransaction->currency,
+        'payout_currency' => \CRM_Stripe_Api::formatCurrency($balanceTransaction->currency),
       ];
     }
     else {
-- 
GitLab