-
Notifications
You must be signed in to change notification settings - Fork 216
Refactor WC_Stripe_Subscriptions_Trait->maybe_render_subscription_payment_method() #4568
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
daledupreez
wants to merge
22
commits into
develop
Choose a base branch
from
refactor/subscriptions-trait-payment-method-rendering
base: develop
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Changes from 7 commits
Commits
Show all changes
22 commits
Select commit
Hold shift + click to select a range
91d638b
Basic get_all_payment_methods() implementation
daledupreez 35837db
Ensure we clear the new _all payment methods cache
daledupreez 9cfccaf
Always send expand flags for SEPA
daledupreez 68bee81
Refactor logic to get customer UPE tokens
daledupreez c622d76
Refactor WC_Stripe_Subscriptions_Trait->maybe_render_subscription_pay…
daledupreez 2e20c28
Revert "Refactor WC_Stripe_Subscriptions_Trait->maybe_render_subscrip…
daledupreez 5dc3c1e
Reapply "Refactor WC_Stripe_Subscriptions_Trait->maybe_render_subscri…
daledupreez 80bfbbf
Update unit test to use new cache
daledupreez 0ddecfb
Merge branch 'develop' into refactor/subscriptions-trait-payment-meth…
daledupreez 58e88e5
Merge branch 'develop' into refactor/subscriptions-trait-payment-meth…
daledupreez e87b5c9
Merge branch 'develop' into refactor/subscriptions-trait-payment-meth…
daledupreez 7511081
Switch to single call to fetch payment method and add static variable…
daledupreez 9af152c
Make API construction more declarative
daledupreez 83cd681
Merge branch 'develop' into refactor/subscriptions-trait-payment-meth…
daledupreez 5aabff5
Changelog
daledupreez b0f5b3a
Update and expand unit tests
daledupreez 3a2a111
Merge branch 'develop' into refactor/subscriptions-trait-payment-meth…
daledupreez 9e6ebdd
Change parameter to $payment_method instead of $source
daledupreez 2920871
Move payment method fetch to WC_Stripe_Subscriptions_Helper
daledupreez 3aecb6c
Switch to WC_Stripe_API::get_payment_method() to support src_ IDs
daledupreez 8d2077e
Update unit tests
daledupreez 7522668
Use counter for IDs
daledupreez File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -1013,80 +1013,85 @@ public function maybe_render_subscription_payment_method( $payment_method_to_dis | |
|
||
$stripe_customer->set_id( $stripe_customer_id ); | ||
|
||
$payment_method_to_display = __( 'N/A', 'woocommerce-gateway-stripe' ); | ||
|
||
try { | ||
// Retrieve all possible payment methods for subscriptions. | ||
foreach ( WC_Stripe_Customer::STRIPE_PAYMENT_METHODS as $payment_method_type ) { | ||
foreach ( $stripe_customer->get_payment_methods( $payment_method_type ) as $source ) { | ||
if ( $source->id !== $stripe_source_id ) { | ||
continue; | ||
} | ||
$customer_payment_methods = $stripe_customer->get_all_payment_methods(); | ||
|
||
// Legacy handling for Stripe Card objects. ref: https://docs.stripe.com/api/cards/object | ||
if ( isset( $source->object ) && WC_Stripe_Payment_Methods::CARD === $source->object ) { | ||
/* translators: 1) card brand 2) last 4 digits */ | ||
$payment_method_to_display = sprintf( __( 'Via %1$s card ending in %2$s', 'woocommerce-gateway-stripe' ), ( isset( $source->brand ) ? wc_get_credit_card_type_label( $source->brand ) : __( 'N/A', 'woocommerce-gateway-stripe' ) ), $source->last4 ); | ||
break 2; | ||
} | ||
|
||
switch ( $source->type ) { | ||
case WC_Stripe_Payment_Methods::CARD: | ||
/* translators: 1) card brand 2) last 4 digits */ | ||
$payment_method_to_display = sprintf( __( 'Via %1$s card ending in %2$s', 'woocommerce-gateway-stripe' ), ( isset( $source->card->brand ) ? wc_get_credit_card_type_label( $source->card->brand ) : __( 'N/A', 'woocommerce-gateway-stripe' ) ), $source->card->last4 ); | ||
break 3; | ||
case WC_Stripe_Payment_Methods::SEPA_DEBIT: | ||
/* translators: 1) last 4 digits of SEPA Direct Debit */ | ||
$payment_method_to_display = sprintf( __( 'Via SEPA Direct Debit ending in %1$s', 'woocommerce-gateway-stripe' ), $source->sepa_debit->last4 ); | ||
break 3; | ||
case WC_Stripe_Payment_Methods::CASHAPP_PAY: | ||
/* translators: 1) Cash App Cashtag */ | ||
$payment_method_to_display = sprintf( __( 'Via Cash App Pay (%1$s)', 'woocommerce-gateway-stripe' ), $source->cashapp->cashtag ); | ||
break 3; | ||
case WC_Stripe_Payment_Methods::LINK: | ||
/* translators: 1) email address associated with the Stripe Link payment method */ | ||
$payment_method_to_display = sprintf( __( 'Via Stripe Link (%1$s)', 'woocommerce-gateway-stripe' ), $source->link->email ); | ||
break 3; | ||
case WC_Stripe_Payment_Methods::ACH: | ||
$payment_method_to_display = sprintf( | ||
/* translators: 1) account type (checking, savings), 2) last 4 digits of account. */ | ||
__( 'Via %1$s Account ending in %2$s', 'woocommerce-gateway-stripe' ), | ||
ucfirst( $source->us_bank_account->account_type ), | ||
$source->us_bank_account->last4 | ||
); | ||
break 3; | ||
case WC_Stripe_Payment_Methods::BECS_DEBIT: | ||
$payment_method_to_display = sprintf( | ||
/* translators: last 4 digits of account. */ | ||
__( 'BECS Direct Debit ending in %s', 'woocommerce-gateway-stripe' ), | ||
$source->au_becs_debit->last4 | ||
); | ||
break 3; | ||
case WC_Stripe_Payment_Methods::ACSS_DEBIT: | ||
$payment_method_to_display = sprintf( | ||
/* translators: 1) bank name, 2) last 4 digits of account. */ | ||
__( 'Via %1$s ending in %2$s', 'woocommerce-gateway-stripe' ), | ||
$source->acss_debit->bank_name, | ||
$source->acss_debit->last4 | ||
); | ||
break 3; | ||
case WC_Stripe_Payment_Methods::BACS_DEBIT: | ||
/* translators: 1) the Bacs Direct Debit payment method's last 4 numbers */ | ||
$payment_method_to_display = sprintf( __( 'Via Bacs Direct Debit ending in (%1$s)', 'woocommerce-gateway-stripe' ), $source->bacs_debit->last4 ); | ||
break 3; | ||
case WC_Stripe_Payment_Methods::AMAZON_PAY: | ||
/* translators: 1) the Amazon Pay payment method's email */ | ||
$payment_method_to_display = sprintf( __( 'Via Amazon Pay (%1$s)', 'woocommerce-gateway-stripe' ), $source->billing_details->email ?? '' ); | ||
break 3; | ||
} | ||
foreach ( $customer_payment_methods as $payment_method ) { | ||
if ( $payment_method->id === $stripe_source_id ) { | ||
return $this->get_payment_method_to_display_for_payment_method( $payment_method ); | ||
} | ||
} | ||
} catch ( WC_Stripe_Exception $e ) { | ||
wc_add_notice( $e->getLocalizedMessage(), 'error' ); | ||
WC_Stripe_Logger::log( 'Error: ' . $e->getMessage() ); | ||
} | ||
|
||
return $payment_method_to_display; | ||
return __( 'N/A', 'woocommerce-gateway-stripe' ); | ||
} | ||
|
||
/** | ||
* Helper function to get the descriptive text for a payment method or source. | ||
* | ||
* @param object $source The payment method or source object. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Optional: My preference would be to call it a There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Good call. Updated in 9e6ebdd |
||
* @return string The descriptive text for the payment method or source. | ||
*/ | ||
protected function get_payment_method_to_display_for_payment_method( object $source ): string { | ||
// Legacy handling for Stripe Card objects. ref: https://docs.stripe.com/api/cards/object | ||
if ( isset( $source->object ) && WC_Stripe_Payment_Methods::CARD === $source->object ) { | ||
return sprintf( | ||
/* translators: 1) card brand 2) last 4 digits */ | ||
__( 'Via %1$s card ending in %2$s', 'woocommerce-gateway-stripe' ), | ||
( isset( $source->brand ) ? wc_get_credit_card_type_label( $source->brand ) : __( 'N/A', 'woocommerce-gateway-stripe' ) ), | ||
$source->last4 | ||
); | ||
} | ||
|
||
switch ( $source->type ) { | ||
case WC_Stripe_Payment_Methods::CARD: | ||
return sprintf( | ||
/* translators: 1) card brand 2) last 4 digits */ | ||
__( 'Via %1$s card ending in %2$s', 'woocommerce-gateway-stripe' ), | ||
( isset( $source->card->brand ) ? wc_get_credit_card_type_label( $source->card->brand ) : __( 'N/A', 'woocommerce-gateway-stripe' ) ), | ||
$source->card->last4 | ||
); | ||
case WC_Stripe_Payment_Methods::SEPA_DEBIT: | ||
/* translators: 1) last 4 digits of SEPA Direct Debit */ | ||
return sprintf( __( 'Via SEPA Direct Debit ending in %1$s', 'woocommerce-gateway-stripe' ), $source->sepa_debit->last4 ); | ||
case WC_Stripe_Payment_Methods::CASHAPP_PAY: | ||
/* translators: 1) Cash App Cashtag */ | ||
return sprintf( __( 'Via Cash App Pay (%1$s)', 'woocommerce-gateway-stripe' ), $source->cashapp->cashtag ); | ||
case WC_Stripe_Payment_Methods::LINK: | ||
/* translators: 1) email address associated with the Stripe Link payment method */ | ||
return sprintf( __( 'Via Stripe Link (%1$s)', 'woocommerce-gateway-stripe' ), $source->link->email ); | ||
case WC_Stripe_Payment_Methods::ACH: | ||
return sprintf( | ||
/* translators: 1) account type (checking, savings), 2) last 4 digits of account. */ | ||
__( 'Via %1$s Account ending in %2$s', 'woocommerce-gateway-stripe' ), | ||
ucfirst( $source->us_bank_account->account_type ), | ||
$source->us_bank_account->last4 | ||
); | ||
case WC_Stripe_Payment_Methods::BECS_DEBIT: | ||
return sprintf( | ||
/* translators: last 4 digits of account. */ | ||
__( 'BECS Direct Debit ending in %s', 'woocommerce-gateway-stripe' ), | ||
$source->au_becs_debit->last4 | ||
); | ||
case WC_Stripe_Payment_Methods::ACSS_DEBIT: | ||
return sprintf( | ||
/* translators: 1) bank name, 2) last 4 digits of account. */ | ||
__( 'Via %1$s ending in %2$s', 'woocommerce-gateway-stripe' ), | ||
$source->acss_debit->bank_name, | ||
$source->acss_debit->last4 | ||
); | ||
case WC_Stripe_Payment_Methods::BACS_DEBIT: | ||
/* translators: 1) the Bacs Direct Debit payment method's last 4 numbers */ | ||
return sprintf( __( 'Via Bacs Direct Debit ending in (%1$s)', 'woocommerce-gateway-stripe' ), $source->bacs_debit->last4 ); | ||
case WC_Stripe_Payment_Methods::AMAZON_PAY: | ||
/* translators: 1) the Amazon Pay payment method's email */ | ||
return sprintf( __( 'Via Amazon Pay (%1$s)', 'woocommerce-gateway-stripe' ), $source->billing_details->email ?? '' ); | ||
} | ||
|
||
return __( 'N/A', 'woocommerce-gateway-stripe' ); | ||
} | ||
|
||
/** | ||
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.