Stripe Critical Error While Viewing Profile

Non-SA user, go to view profile.

https://local.storelocatorplus.com/bhinson_at_ccgpro_dot_com/wp-admin/admin.php?page=myslp_profile

Fatal error: Uncaught Error sending request to Stripe: (Status 404) (Request req_yEwVtdefl7oeir) 
No upcoming invoices for customer: cus_QqKOolopTiTwM5 Stripe\Exception\InvalidRequestException: 

No upcoming invoices for customer: cus_QqKOolopTiTwM5 in /var/www/html/wp-content/mu-plugins/myslp-payments/include/module/stripe/lib/Exception/ApiErrorException.php:38 Stack trace: #0 /var/www/html/wp-content/mu-plugins/myslp-payments/include/module/stripe/lib/Exception/InvalidRequestException.php(35): Stripe\Exception\ApiErrorException::factory('No upcoming inv...', 404, '{\n "error": {\n...', Array, Object(Stripe\Util\CaseInsensitiveArray), 'invoice_upcomin...') #1 /var/www/html/wp-content/mu-plugins/myslp-payments/include/module/stripe/lib/ApiRequestor.php(230): Stripe\Exception\InvalidRequestException::factory('No upcoming inv...', 404, '{\n "error": {\n...', Array, Object(Stripe\Util\CaseInsensitiveArray), 'invoice_upcomin...', NULL) #2 /var/www/html/wp-content/mu-plugins/myslp-payments/include/module/stripe/lib/ApiRequestor.php(191): Stripe\ApiRequestor::_specificV1APIError('{\n "error": {\n...', 404, Object(Stripe\Util\CaseInsensitiveArray), Array, Array) #3 /var/www/html/wp-content/mu-plugins/myslp-payments/include/module/stripe/lib/ApiRequestor.php(637): Stripe\ApiRequestor->handleErrorResponse('{\n "error": {\n...', 404, Object(Stripe\Util\CaseInsensitiveArray), Array, 'v1') #4 /var/www/html/wp-content/mu-plugins/myslp-payments/include/module/stripe/lib/ApiRequestor.php(136): Stripe\ApiRequestor->_interpretResponse('{\n "error": {\n...', 404, Object(Stripe\Util\CaseInsensitiveArray), 'v1') #5 /var/www/html/wp-content/mu-plugins/myslp-payments/include/module/stripe/lib/ApiOperations/Request.php(111): Stripe\ApiRequestor->request('get', '/v1/invoices/up...', Array, Array, 'v1', Array) #6 /var/www/html/wp-content/mu-plugins/myslp-payments/include/module/stripe/lib/Invoice.php(407): Stripe\ApiResource::_staticRequest('get', '/v1/invoices/up...', Array, NULL) #7 /var/www/html/wp-content/mu-plugins/myslp-payments/include/module/stripe/MySLP_Stripe_Payments.php(416): Stripe\Invoice::upcoming(Array) #8 /var/www/html/wp-content/plugins/myslp-customer-profile/views/view.profile-subscription.php(20): stripe\MySLP_Stripe_Payments->get_upcoming_invoice('cus_QqKOolopTiT...') #9 /var/www/html/wp-content/plugins/myslp-customer-profile/views/view.profile.php(80): include('/var/www/html/w...') #10 /var/www/html/wp-content/plugins/myslp-customer-profile/include/MySLP_Customer_Profile.php(259): require_once('/var/www/html/w...') #11 /var/www/html/wp-includes/class-wp-hook.php(324): MySLP_Customer_Profile->page_profile('') #12 /var/www/html/wp-includes/class-wp-hook.php(348): WP_Hook->apply_filters('', Array) #13 /var/www/html/wp-includes/plugin.php(517): WP_Hook->do_action(Array) #14 /var/www/html/wp-admin/admin.php(259): do_action('toplevel_page_m...') #15 {main} thrown in /var/www/html/wp-content/mu-plugins/myslp-payments/include/module/stripe/lib/Exception/ApiErrorException.php on line 38
[19-Nov-2024 19:52:42 UTC] Stripe Notice: Undefined property of Stripe\Invoice instance: date

Payment Method undefined In SysAdmin View Profile

Deprecated: str_replace(): Passing null to parameter #3 ($subject) of type array|string is deprecated in /var/www/html/wp-content/plugins/myslp-customer-maintenance/include/MySLP_SysAdmin_View_Profile.php on line 275

Reproduction

  • Login as SA
  • List Customers
  • Choose a customer , highlight the row and click “view profile” under the menu.

When the page renders the debug.log entry will show the message above.

Resolution

Stop Gap

A stop-gap measure is in place to default to text “stripe”, but we need to find out why the myslp->User object does not have a payment method set.

$payment_method = $myslp->User->payment_method ?? 'stripe';

Various PHP 8 Errors

Related To Blog ID Not Set

  • [08-Nov-2024 20:28:43 UTC] PHP Warning: Undefined variable $user_blog in /var/www/html/wp-content/plugins/myslp-customer-maintenance/include/MySLP_SysAdmin_View_Profile.php on line 387
  • [08-Nov-2024 20:28:43 UTC] PHP Warning: Attempt to read property “blog_id” on null in /var/www/html/wp-content/plugins/myslp-customer-maintenance/include/MySLP_SysAdmin_View_Profile.php on line 387
  • [08-Nov-2024 20:28:43 UTC] PHP Warning: Undefined variable $user_blog in /var/www/html/wp-content/plugins/myslp-customer-maintenance/include/MySLP_SysAdmin_View_Profile.php on line 391
  • [08-Nov-2024 20:28:43 UTC] PHP Warning: Attempt to read property “path” on null in /var/www/html/wp-content/plugins/myslp-customer-maintenance/include/MySLP_SysAdmin_View_Profile.php on line 391
  • [08-Nov-2024 20:28:43 UTC] PHP Warning: Undefined variable $user_blog in /var/www/html/wp-content/plugins/myslp-customer-maintenance/include/MySLP_SysAdmin_View_Profile.php on line 393
  • [08-Nov-2024 20:28:43 UTC] PHP Warning: Attempt to read property “path” on null in /var/www/html/wp-content/plugins/myslp-customer-maintenance/include/MySLP_SysAdmin_View_Profile.php on line 393
  • [08-Nov-2024 20:41:38 UTC] PHP Warning: Attempt to read property “path” on int in /var/www/html/wp-content/plugins/myslp-customer-maintenance/include/MySLP_SysAdmin_View_Profile.php on line 409

Invalid submenu call

  • [08-Nov-2024 20:28:43 UTC] PHP Deprecated: strip_tags(): Passing null to parameter #1 ($string) of type string is deprecated in /var/www/html/wp-admin/admin-header.php on line 36

Reproduction

  • Login as SA
  • Customers | All Users
  • Search CiCi
  • Hover and click profile
  • errors are in the debug.log

Resolution

Related To Blog ID Not Set

These errors are all related to an issue in the MySLP Customer Maintenance plugin where the $user_blog var was not set to a proper WP_Site object when the user was an SA.

Added a line to fetch WP_Site based on the $myslp->User->blog_id in those cases.

Invalid Submenu Call

This strip_tags() error is coming from WP core admin functions. Turns out the admin-header rendering expected a call to add_submenu_page to actually name a menu in the first param, not pass ” as a string. Apparently you need to attach all submenus to a parent menu of some kind.


Attached the View Profile admin page to the ‘users.php’ (Customers) menu as a submenu.

Deprecated Return Types In Stripe Library

Deprecated:
Return type of Stripe\Util\CaseInsensitiveArray::offsetExists($offset) 
Return type of Stripe\Util\CaseInsensitiveArray::offsetGet($offset)
Return type of Stripe\Util\CaseInsensitiveArray::offsetSet($offset, $value)
Return type of Stripe\Util\CaseInsensitiveArray::offsetUnset($offset)
Return type of Stripe\Util\CaseInsensitiveArray::count() 
Return type of Stripe\Util\CaseInsensitiveArray::getIterator() 
Return type of Stripe\Util\Set::getIterator() 
Return type of Stripe\StripeObject::offsetExists($k) 
Return type of Stripe\StripeObject::offsetGet($k) 
Return type of Stripe\StripeObject::offsetSet($k, $v) 
Return type of Stripe\StripeObject::offsetUnset($k) 
Return type of Stripe\StripeObject::count() 
Return type of Stripe\StripeObject::jsonSerialize() 
Return type of Stripe\Collection::getIterator()

Detailed Example

Deprecated: 
Return type of Stripe\Util\CaseInsensitiveArray::offsetExists($offset) 
should either be compatible with ArrayAccess::offsetExists(mixed $offset): bool, 
or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in 
/var/www/html/wp-content/mu-plugins/myslp-payments/include/module/stripe/lib/Util/CaseInsensitiveArray.php on line 44 

Call Stack: 0.0001 464728 
1. {main}() /var/www/html/wp-admin/admin.php:0 0.4073 9234784 
2. do_action($hook_name = 'toplevel_page_myslp_profile') /var/www/html/wp-admin/admin.php:259 0.4073 9235000 
3. WP_Hook->do_action($args = [0 => '']) /var/www/html/wp-includes/plugin.php:517 0.4073 9235000 
4. WP_Hook->apply_filters($value = '', $args = [0 => '']) /var/www/html/wp-includes/class-wp-hook.php:348 0.4073 9235432 
5. MySLP_Customer_Profile->page_profile('') /var/www/html/wp-includes/class-wp-hook.php:324 0.4079 9250552 
6. require_once('/var/www/html/wp-content/plugins/myslp-customer-profile/views/view.profile.php') /var/www/html/wp-content/plugins/myslp-customer-profile/include/MySLP_Customer_Profile.php:259 0.4079 9250552 
7. MySLP_Recurring_Payments->get_subscription_details($user_id = 592, $force = TRUE) /var/www/html/wp-content/plugins/myslp-customer-profile/views/view.profile.php:19 0.4113 9252720 
8. MySLP_Stripe_Payments->get_subscription_details($subscription_id = 'sub_Gycmzo5SSaE1Wd') /var/www/html/wp-content/mu-plugins/myslp-payments/include/module/MySLP_Recurring_Payments.php:154 0.4113 9252720 
9. MySLP_Stripe_Payments->load_lib() /var/www/html/wp-content/mu-plugins/myslp-payments/include/module/stripe/MySLP_Stripe_Payments.php:418 0.4115 9253216 
10. require_once('/var/www/html/wp-content/mu-plugins/myslp-payments/include/module/stripe/init.php') /var/www/html/wp-content/mu-plugins/myslp-payments/include/module/stripe/MySLP_Stripe_Payments.php:435 0.4119 9253760 
11. require('/var/www/html/wp-content/mu-plugins/myslp-payments/include/module/stripe/lib/Util/CaseInsensitiveArray.php') /var/www/html/wp-content/mu-plugins/myslp-payments/include/module/stripe/init.php:7 
Deprecated: Return type of Stripe\Util\CaseInsensitiveArray::offsetGet($offset)

System Info

Dev Notes

Related

Resolution

The Stripe API library included in the myslp-payments plugin was outdated.

This was already updated and in the develop branch, however the staging branch in myslp-payments was not updated to point to this latest updated.

  1. Merged the develop branch into staging on the myslp-payments repo (ssh://git-codecommit.us-east-1.amazonaws.com/v1/repos/myslp-payments) and pushed up to AWS CodeCommit.
  2. Check out staging branch on the myslp_aws_ecs_kit on local dev box.
    • Ran ./tools/update_code.sh on the local dev box.

This pushed code and committed it to the staging branch on the myslp_aws_ecs kit. This triggered CodePipline to build the new ECR image , fetching the staging branch on the myslp_aws_ecs_kit and all submodules before performing the build.

New Stylesheet for Feeding America San Diego

They are looking for a Store Locator Plus® locator style that matches the UX on Oregon Food Bank.

“…since most of the people viewing our map are looking at it from their phone that is the priority”

Our current map has several layout issues including cut off of the search bar and overflow of location information on mobile (examples attached.)

We would like the primary colors of the map to be:

Blue: HEX#005487
Orange: HEX#DE7C00

Oregon Food Bank : Mobile

Oregon Food Bank : Desktop

Requested by Feeding America San Diego (dwilliams_at_).

Dev Notes

Blockers

UX Improvement Ideas

Store Locator Plus® Staging Embedded Map