Given the discussion below and that this code is dysfunctional, changed task scope to removing Fund and Phortune entirely.
Original task description:
- PHP 8.2.15, Phorge at 7a86040f8a46e9f04466186db8a2c9fed792edc3
- Go to http://phorge.localhost/phortune/merchant/edit/
- In the Name field, enter Merchant1 and click Create New Merchant
- Go to http://phorge.localhost/phortune/merchant/1/providers/ and click Add Payment Provider
- Select Add Stripe Payments Account and click Continue
- Enter bogus values into the two text fields and click Create Provider
[2024-01-26 18:15:25] ERROR 8192: Return type of Stripe_Object::offsetExists($k) should either be compatible with ArrayAccess::offsetExists(mixed $offset): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice at [/var/www/html/phorge/phorge/externals/stripe-php/lib/Stripe/Object.php:109] arcanist(head=master, ref.master=6c7caf3572f4), phorge(head=phortuneMerchantPhp81, ref.master=7a86040f8a46, ref.phortuneMerchantPhp81=61afade7aee9) #0 require(string) called at [<phorge>/externals/stripe-php/lib/Stripe.php:33] #1 require_once(string) called at [<phorge>/src/applications/phortune/provider/PhortuneStripePaymentProvider.php:387] #2 PhortuneStripePaymentProvider::loadStripeAPILibraries() called at [<phorge>/src/applications/phortune/provider/PhortuneStripePaymentProvider.php:118] #3 PhortuneStripePaymentProvider::runConfigurationTest() called at [<phorge>/src/applications/phortune/controller/merchant/PhortuneMerchantProviderEditController.php:105] #4 PhortuneMerchantProviderEditController::handleMerchantRequest(AphrontRequest) called at [<phorge>/src/applications/phortune/controller/merchant/PhortuneMerchantController.php:32] #5 PhortuneMerchantController::handleRequest(AphrontRequest) called at [<phorge>/src/aphront/configuration/AphrontApplicationConfiguration.php:284] #6 AphrontApplicationConfiguration::processRequest(AphrontRequest, PhutilDeferredLog, AphrontPHPHTTPSink, MultimeterControl) called at [<phorge>/src/aphront/configuration/AphrontApplicationConfiguration.php:203] #7 AphrontApplicationConfiguration::runHTTPRequest(AphrontPHPHTTPSink) called at [<phorge>/webroot/index.php:35] [2024-01-26 18:15:25] ERROR 8192: Return type of Stripe_Object::offsetGet($k) should either be compatible with ArrayAccess::offsetGet(mixed $offset): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice at [/var/www/html/phorge/phorge/externals/stripe-php/lib/Stripe/Object.php:118] arcanist(head=master, ref.master=6c7caf3572f4), phorge(head=phortuneMerchantPhp81, ref.master=7a86040f8a46, ref.phortuneMerchantPhp81=61afade7aee9) #0 require(string) called at [<phorge>/externals/stripe-php/lib/Stripe.php:33] #1 require_once(string) called at [<phorge>/src/applications/phortune/provider/PhortuneStripePaymentProvider.php:387] #2 PhortuneStripePaymentProvider::loadStripeAPILibraries() called at [<phorge>/src/applications/phortune/provider/PhortuneStripePaymentProvider.php:118] #3 PhortuneStripePaymentProvider::runConfigurationTest() called at [<phorge>/src/applications/phortune/controller/merchant/PhortuneMerchantProviderEditController.php:105] #4 PhortuneMerchantProviderEditController::handleMerchantRequest(AphrontRequest) called at [<phorge>/src/applications/phortune/controller/merchant/PhortuneMerchantController.php:32] #5 PhortuneMerchantController::handleRequest(AphrontRequest) called at [<phorge>/src/aphront/configuration/AphrontApplicationConfiguration.php:284] #6 AphrontApplicationConfiguration::processRequest(AphrontRequest, PhutilDeferredLog, AphrontPHPHTTPSink, MultimeterControl) called at [<phorge>/src/aphront/configuration/AphrontApplicationConfiguration.php:203] #7 AphrontApplicationConfiguration::runHTTPRequest(AphrontPHPHTTPSink) called at [<phorge>/webroot/index.php:35] [2024-01-26 18:15:25] ERROR 8192: Return type of Stripe_Object::offsetSet($k, $v) should either be compatible with ArrayAccess::offsetSet(mixed $offset, mixed $value): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice at [/var/www/html/phorge/phorge/externals/stripe-php/lib/Stripe/Object.php:104] arcanist(head=master, ref.master=6c7caf3572f4), phorge(head=phortuneMerchantPhp81, ref.master=7a86040f8a46, ref.phortuneMerchantPhp81=61afade7aee9) #0 require(string) called at [<phorge>/externals/stripe-php/lib/Stripe.php:33] #1 require_once(string) called at [<phorge>/src/applications/phortune/provider/PhortuneStripePaymentProvider.php:387] #2 PhortuneStripePaymentProvider::loadStripeAPILibraries() called at [<phorge>/src/applications/phortune/provider/PhortuneStripePaymentProvider.php:118] #3 PhortuneStripePaymentProvider::runConfigurationTest() called at [<phorge>/src/applications/phortune/controller/merchant/PhortuneMerchantProviderEditController.php:105] #4 PhortuneMerchantProviderEditController::handleMerchantRequest(AphrontRequest) called at [<phorge>/src/applications/phortune/controller/merchant/PhortuneMerchantController.php:32] #5 PhortuneMerchantController::handleRequest(AphrontRequest) called at [<phorge>/src/aphront/configuration/AphrontApplicationConfiguration.php:284] #6 AphrontApplicationConfiguration::processRequest(AphrontRequest, PhutilDeferredLog, AphrontPHPHTTPSink, MultimeterControl) called at [<phorge>/src/aphront/configuration/AphrontApplicationConfiguration.php:203] #7 AphrontApplicationConfiguration::runHTTPRequest(AphrontPHPHTTPSink) called at [<phorge>/webroot/index.php:35] [2024-01-26 18:15:25] ERROR 8192: Return type of Stripe_Object::offsetUnset($k) should either be compatible with ArrayAccess::offsetUnset(mixed $offset): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice at [/var/www/html/phorge/phorge/externals/stripe-php/lib/Stripe/Object.php:114] arcanist(head=master, ref.master=6c7caf3572f4), phorge(head=phortuneMerchantPhp81, ref.master=7a86040f8a46, ref.phortuneMerchantPhp81=61afade7aee9) #0 require(string) called at [<phorge>/externals/stripe-php/lib/Stripe.php:33] #1 require_once(string) called at [<phorge>/src/applications/phortune/provider/PhortuneStripePaymentProvider.php:387] #2 PhortuneStripePaymentProvider::loadStripeAPILibraries() called at [<phorge>/src/applications/phortune/provider/PhortuneStripePaymentProvider.php:118] #3 PhortuneStripePaymentProvider::runConfigurationTest() called at [<phorge>/src/applications/phortune/controller/merchant/PhortuneMerchantProviderEditController.php:105] #4 PhortuneMerchantProviderEditController::handleMerchantRequest(AphrontRequest) called at [<phorge>/src/applications/phortune/controller/merchant/PhortuneMerchantController.php:32] #5 PhortuneMerchantController::handleRequest(AphrontRequest) called at [<phorge>/src/aphront/configuration/AphrontApplicationConfiguration.php:284] #6 AphrontApplicationConfiguration::processRequest(AphrontRequest, PhutilDeferredLog, AphrontPHPHTTPSink, MultimeterControl) called at [<phorge>/src/aphront/configuration/AphrontApplicationConfiguration.php:203] #7 AphrontApplicationConfiguration::runHTTPRequest(AphrontPHPHTTPSink) called at [<phorge>/webroot/index.php:35] [2024-01-26 18:15:25] ERROR 8192: Creation of dynamic property Stripe_ApiRequestor::$_apiKey is deprecated at [/var/www/html/phorge/phorge/externals/stripe-php/lib/Stripe/ApiRequestor.php:22] arcanist(head=master, ref.master=6c7caf3572f4), phorge(head=phortuneMerchantPhp81, ref.master=7a86040f8a46, ref.phortuneMerchantPhp81=61afade7aee9) #0 Stripe_ApiRequestor::__construct(string) called at [<phorge>/externals/stripe-php/lib/Stripe/ApiResource.php:17] #1 Stripe_ApiResource::refresh() called at [<phorge>/externals/stripe-php/lib/Stripe/SingletonApiResource.php:8] #2 Stripe_SingletonApiResource::_scopedSingletonRetrieve(string, string) called at [<phorge>/externals/stripe-php/lib/Stripe/Account.php:13] #3 Stripe_Account::retrieve(string) called at [<phorge>/src/applications/phortune/provider/PhortuneStripePaymentProvider.php:121] #4 PhortuneStripePaymentProvider::runConfigurationTest() called at [<phorge>/src/applications/phortune/controller/merchant/PhortuneMerchantProviderEditController.php:105] #5 PhortuneMerchantProviderEditController::handleMerchantRequest(AphrontRequest) called at [<phorge>/src/applications/phortune/controller/merchant/PhortuneMerchantController.php:32] #6 PhortuneMerchantController::handleRequest(AphrontRequest) called at [<phorge>/src/aphront/configuration/AphrontApplicationConfiguration.php:284] #7 AphrontApplicationConfiguration::processRequest(AphrontRequest, PhutilDeferredLog, AphrontPHPHTTPSink, MultimeterControl) called at [<phorge>/src/aphront/configuration/AphrontApplicationConfiguration.php:203] #8 AphrontApplicationConfiguration::runHTTPRequest(AphrontPHPHTTPSink) called at [<phorge>/webroot/index.php:35]
/externals/stripe-php code is version 1.16.0 which is from ten years ago: 2014-06-17.
See https://stripe.com/docs/upgrades for API changes in the meantime.
Maybe it's time to realistically axe all this (payment provider or Phortune itself?), strongly assuming there are zero users of the "Phortune" prototype application out there? For the records, the other Phortune payment provider option is PayPal, giving [cURL/7] (https://api-3t.paypal.com/nvp) <CURLE_COULDNT_CONNECT>