2525namespace SkyVerge \WooCommerce \PluginFramework \v5_15_12 ;
2626
2727use SkyVerge \WooCommerce \PluginFramework \v5_15_12 \Blocks \Blocks_Handler ;
28+ use SkyVerge \WooCommerce \PluginFramework \v5_15_12 \Payment_Gateway \Dynamic_Props ;
2829
2930defined ( 'ABSPATH ' ) or exit;
3031
@@ -372,7 +373,7 @@ public function process_payment( $order_id ) {
372373 if ( $ this ->supports_tokenization () && 0 !== (int ) $ order ->get_user_id () ) {
373374
374375 // if already paying with an existing method, try and updated it locally and remotely
375- if ( ! empty ( $ order-> payment -> token ) ) {
376+ if ( ! empty ( Dynamic_Props:: get ( $ order, ' payment ' , ' token ' ) ) ) {
376377
377378 $ this ->update_transaction_payment_method ( $ order );
378379
@@ -388,7 +389,7 @@ public function process_payment( $order_id ) {
388389 if ( $ this ->should_skip_transaction ( $ order ) || $ this ->do_transaction ( $ order ) ) {
389390
390391 // add transaction data for zero-dollar "orders"
391- if ( '0.00 ' === $ order-> payment_total ) {
392+ if ( '0.00 ' === Dynamic_Props:: get ( $ order, ' payment_total ' ) ) {
392393 $ this ->add_transaction_data ( $ order );
393394 }
394395
@@ -502,7 +503,7 @@ protected function get_notices_as_user_messages( ?string $type = null ) : array
502503 */
503504 protected function update_transaction_payment_method ( \WC_Order $ order ) {
504505
505- $ token = $ this ->get_payment_tokens_handler ()->get_token ( $ order ->get_user_id (), $ order-> payment -> token );
506+ $ token = $ this ->get_payment_tokens_handler ()->get_token ( $ order ->get_user_id (), Dynamic_Props:: get ( $ order, ' payment ' , ' token ' ) );
506507 $ address = new Addresses \Customer_Address ();
507508 $ address ->set_from_order ( $ order );
508509
@@ -599,43 +600,46 @@ public function get_order( $order_id ) {
599600
600601 $ order = parent ::get_order ( $ order_id );
601602
603+ // Get payment info from the order object.
604+ $ payment = Dynamic_Props::get ( $ order , 'payment ' , null , new \stdClass () );
605+
602606 // payment info
603607 if ( SV_WC_Helper::get_posted_value ( 'wc- ' . $ this ->get_id_dasherized () . '-account-number ' ) && ! SV_WC_Helper::get_posted_value ( 'wc- ' . $ this ->get_id_dasherized () . '-payment-token ' ) ) {
604608
605609 // common attributes
606- $ order -> payment ->account_number = str_replace ( array ( ' ' , '- ' ), '' , SV_WC_Helper::get_posted_value ( 'wc- ' . $ this ->get_id_dasherized () . '-account-number ' ) );
607- $ order -> payment ->last_four = substr ( $ order -> payment ->account_number , -4 );
610+ $ payment ->account_number = str_replace ( array ( ' ' , '- ' ), '' , SV_WC_Helper::get_posted_value ( 'wc- ' . $ this ->get_id_dasherized () . '-account-number ' ) );
611+ $ payment ->last_four = substr ( $ payment ->account_number , -4 );
608612
609613 if ( $ this ->is_credit_card_gateway () ) {
610614
611615 // credit card specific attributes
612- $ order -> payment ->card_type = SV_WC_Helper::get_posted_value ( 'wc- ' . $ this ->get_id_dasherized () . '-card-type ' );
613- $ order -> payment ->exp_month = SV_WC_Helper::get_posted_value ( 'wc- ' . $ this ->get_id_dasherized () . '-exp-month ' );
614- $ order -> payment ->exp_year = SV_WC_Helper::get_posted_value ( 'wc- ' . $ this ->get_id_dasherized () . '-exp-year ' );
616+ $ payment ->card_type = SV_WC_Helper::get_posted_value ( 'wc- ' . $ this ->get_id_dasherized () . '-card-type ' );
617+ $ payment ->exp_month = SV_WC_Helper::get_posted_value ( 'wc- ' . $ this ->get_id_dasherized () . '-exp-month ' );
618+ $ payment ->exp_year = SV_WC_Helper::get_posted_value ( 'wc- ' . $ this ->get_id_dasherized () . '-exp-year ' );
615619
616620 // add card type for gateways that don't require it displayed at checkout
617- if ( empty ( $ order -> payment ->card_type ) ) {
618- $ order -> payment ->card_type = SV_WC_Payment_Gateway_Helper::card_type_from_account_number ( $ order -> payment ->account_number );
621+ if ( empty ( $ payment ->card_type ) ) {
622+ $ payment ->card_type = SV_WC_Payment_Gateway_Helper::card_type_from_account_number ( $ payment ->account_number );
619623 }
620624
621625 // handle single expiry field formatted like "MM / YY" or "MM / YYYY"
622626 if ( SV_WC_Helper::get_posted_value ( 'wc- ' . $ this ->get_id_dasherized () . '-expiry ' ) ) {
623- [ $ order -> payment ->exp_month , $ order -> payment ->exp_year ] = array_map ( 'trim ' , explode ( '/ ' , SV_WC_Helper::get_posted_value ( 'wc- ' . $ this ->get_id_dasherized () . '-expiry ' ) ) );
627+ [ $ payment ->exp_month , $ payment ->exp_year ] = array_map ( 'trim ' , explode ( '/ ' , SV_WC_Helper::get_posted_value ( 'wc- ' . $ this ->get_id_dasherized () . '-expiry ' ) ) );
624628 }
625629
626630 // add CSC if enabled
627631 if ( $ this ->csc_enabled () ) {
628- $ order -> payment ->csc = SV_WC_Helper::get_posted_value ( 'wc- ' . $ this ->get_id_dasherized () . '-csc ' );
632+ $ payment ->csc = SV_WC_Helper::get_posted_value ( 'wc- ' . $ this ->get_id_dasherized () . '-csc ' );
629633 }
630634
631635 } elseif ( $ this ->is_echeck_gateway () ) {
632636
633637 // echeck specific attributes
634- $ order -> payment ->routing_number = SV_WC_Helper::get_posted_value ( 'wc- ' . $ this ->get_id_dasherized () . '-routing-number ' );
635- $ order -> payment ->account_type = SV_WC_Helper::get_posted_value ( 'wc- ' . $ this ->get_id_dasherized () . '-account-type ' );
636- $ order -> payment ->check_number = SV_WC_Helper::get_posted_value ( 'wc- ' . $ this ->get_id_dasherized () . '-check-number ' );
637- $ order -> payment ->drivers_license_number = SV_WC_Helper::get_posted_value ( 'wc- ' . $ this ->get_id_dasherized () . '-drivers-license-number ' );
638- $ order -> payment ->drivers_license_state = SV_WC_Helper::get_posted_value ( 'wc- ' . $ this ->get_id_dasherized () . '-drivers-license-state ' );
638+ $ payment ->routing_number = SV_WC_Helper::get_posted_value ( 'wc- ' . $ this ->get_id_dasherized () . '-routing-number ' );
639+ $ payment ->account_type = SV_WC_Helper::get_posted_value ( 'wc- ' . $ this ->get_id_dasherized () . '-account-type ' );
640+ $ payment ->check_number = SV_WC_Helper::get_posted_value ( 'wc- ' . $ this ->get_id_dasherized () . '-check-number ' );
641+ $ payment ->drivers_license_number = SV_WC_Helper::get_posted_value ( 'wc- ' . $ this ->get_id_dasherized () . '-drivers-license-number ' );
642+ $ payment ->drivers_license_state = SV_WC_Helper::get_posted_value ( 'wc- ' . $ this ->get_id_dasherized () . '-drivers-license-state ' );
639643
640644 }
641645
@@ -644,36 +648,39 @@ public function get_order( $order_id ) {
644648 // paying with tokenized payment method (we've already verified that this token exists in the validate_fields method)
645649 $ token = $ this ->get_payment_tokens_handler ()->get_token ( $ order ->get_user_id (), $ token_value );
646650
647- $ order -> payment ->token = $ token ->get_id ();
648- $ order -> payment ->account_number = $ token ->get_last_four ();
649- $ order -> payment ->last_four = $ token ->get_last_four ();
651+ $ payment ->token = $ token ->get_id ();
652+ $ payment ->account_number = $ token ->get_last_four ();
653+ $ payment ->last_four = $ token ->get_last_four ();
650654
651655 if ( $ this ->is_credit_card_gateway () ) {
652656
653657 // credit card specific attributes
654- $ order -> payment ->card_type = $ token ->get_card_type ();
655- $ order -> payment ->exp_month = $ token ->get_exp_month ();
656- $ order -> payment ->exp_year = $ token ->get_exp_year ();
658+ $ payment ->card_type = $ token ->get_card_type ();
659+ $ payment ->exp_month = $ token ->get_exp_month ();
660+ $ payment ->exp_year = $ token ->get_exp_year ();
657661
658662 if ( $ this ->csc_enabled_for_tokens () ) {
659- $ order -> payment ->csc = SV_WC_Helper::get_posted_value ( 'wc- ' . $ this ->get_id_dasherized () . '-csc ' );
663+ $ payment ->csc = SV_WC_Helper::get_posted_value ( 'wc- ' . $ this ->get_id_dasherized () . '-csc ' );
660664 }
661665
662666 } elseif ( $ this ->is_echeck_gateway () ) {
663667
664668 // echeck specific attributes
665- $ order -> payment ->account_type = $ token ->get_account_type ();
669+ $ payment ->account_type = $ token ->get_account_type ();
666670 }
667671
668672 // make this the new default payment token
669673 $ this ->get_payment_tokens_handler ()->set_default_token ( $ order ->get_user_id (), $ token );
670674 }
671675
672676 // standardize expiration date year to 2 digits
673- if ( ! empty ( $ order -> payment ->exp_year ) && 4 === strlen ( $ order -> payment ->exp_year ) ) {
674- $ order -> payment ->exp_year = substr ( $ order -> payment ->exp_year , 2 );
677+ if ( ! empty ( $ payment ->exp_year ) && 4 === strlen ( $ payment ->exp_year ) ) {
678+ $ payment ->exp_year = substr ( $ payment ->exp_year , 2 );
675679 }
676680
681+ // Set payment info on the order object.
682+ Dynamic_Props::set ( $ order , 'payment ' , $ payment );
683+
677684 /**
678685 * Direct Gateway Get Order Filter.
679686 *
@@ -706,16 +713,16 @@ protected function do_check_transaction( $order, $response = null ) {
706713 // success! update order record
707714 if ( $ response ->transaction_approved () ) {
708715
709- $ last_four = substr ( $ order-> payment -> account_number , -4 );
716+ $ last_four = substr ( Dynamic_Props:: get ( $ order, ' payment ' , ' account_number ' , '' ) , -4 );
710717
711718 // check order note. there may not be an account_type available, but that's fine
712719 /* translators: Placeholders: %1$s - Payment method title, %2$s - Payment account type (savings/checking) (may or may not be available), %3$s - Last four digits of the account */
713- $ message = sprintf ( esc_html__ ( '%1$s Check Transaction Approved: %2$s account ending in %3$s ' , 'woocommerce-plugin-framework ' ), $ this ->get_method_title (), $ order-> payment -> account_type , $ last_four );
720+ $ message = sprintf ( esc_html__ ( '%1$s Check Transaction Approved: %2$s account ending in %3$s ' , 'woocommerce-plugin-framework ' ), $ this ->get_method_title (), Dynamic_Props:: get ( $ order, ' payment ' , ' account_type ' ) , $ last_four );
714721
715722 // optional check number
716- if ( ! empty ( $ order-> payment -> check_number ) ) {
723+ if ( ! empty ( Dynamic_Props:: get ( $ order, ' payment ' , ' check_number ' ) ) ) {
717724 /* translators: Placeholder: %s - Bank check number */
718- $ message .= '. ' . sprintf ( esc_html__ ( 'Check number %s ' , 'woocommerce-plugin-framework ' ), $ order-> payment -> check_number );
725+ $ message .= '. ' . sprintf ( esc_html__ ( 'Check number %s ' , 'woocommerce-plugin-framework ' ), Dynamic_Props:: get ( $ order, ' payment ' , ' check_number ' ) );
719726 }
720727
721728 // adds the transaction id (if any) to the order note
@@ -771,12 +778,12 @@ protected function do_credit_card_transaction( $order, $response = null ) {
771778 // success! update order record
772779 if ( $ response ->transaction_approved () ) {
773780
774- $ account_number = ! empty ( $ order-> payment -> account_number ) ? $ order-> payment -> account_number : null ;
781+ $ account_number = ! empty ( Dynamic_Props:: get ( $ order, ' payment ' , ' account_number ' ) ) ? Dynamic_Props:: get ( $ order, ' payment ' , ' account_number ' ) : null ;
775782 $ last_four = $ account_number ? substr ( $ account_number , -4 ) : '' ;
776783
777784 // use direct card type if set, or try to guess it from card number
778- if ( ! empty ( $ order-> payment -> card_type ) ) {
779- $ card_type = $ order-> payment -> card_type ;
785+ if ( ! empty ( Dynamic_Props:: get ( $ order, ' payment ' , ' card_type ' ) ) ) {
786+ $ card_type = Dynamic_Props:: get ( $ order, ' payment ' , ' card_type ' ) ;
780787 } elseif ( $ first_four = $ account_number ? substr ( $ account_number , 0 , 4 ) : '' ) {
781788 $ card_type = SV_WC_Payment_Gateway_Helper::card_type_from_account_number ( $ first_four );
782789 } else {
@@ -806,12 +813,12 @@ protected function do_credit_card_transaction( $order, $response = null ) {
806813 }
807814
808815 // add the expiry date if it is available
809- if ( ! empty ( $ order-> payment -> exp_month ) && ! empty ( $ order-> payment -> exp_year ) ) {
816+ if ( ! empty ( Dynamic_Props:: get ( $ order, ' payment ' , ' exp_month ' ) ) && ! empty ( Dynamic_Props:: get ( $ order, ' payment ' , ' exp_year ' ) ) ) {
810817
811818 $ message .= ' ' . sprintf (
812819 /* translators: Placeholder: %s - Credit card expiry date */
813820 __ ( '(expires %s) ' , 'woocommerce-plugin-framework ' ),
814- $ order-> payment -> exp_month . '/ ' . substr ( $ order-> payment -> exp_year , -2 )
821+ Dynamic_Props:: get ( $ order, ' payment ' , ' exp_month ' , '' ) . '/ ' . substr ( Dynamic_Props:: get ( $ order, ' payment ' , ' exp_year ' , '' ) , -2 )
815822 );
816823 }
817824
@@ -1131,13 +1138,14 @@ protected function get_order_for_add_payment_method() {
11311138 $ order ->set_props ( $ properties );
11321139
11331140 // other default info
1134- $ order-> customer_id = $ this ->get_customer_id ( $ order ->get_user_id () );
1141+ Dynamic_Props:: set ( $ order, ' customer_id ' , $ this ->get_customer_id ( $ order ->get_user_id () ) );
11351142
11361143 /* translators: Placeholders: %1$s - site title, %2$s - customer email. Payment method as in a specific credit card, e-check or bank account */
1137- $ order ->description = sprintf ( esc_html__ ( '%1$s - Add Payment Method for %2$s ' , 'woocommerce-plugin-framework ' ), sanitize_text_field ( SV_WC_Helper::get_site_name () ), $ properties ['billing_email ' ] );
1144+ $ description = sprintf ( esc_html__ ( '%1$s - Add Payment Method for %2$s ' , 'woocommerce-plugin-framework ' ), sanitize_text_field ( SV_WC_Helper::get_site_name () ), $ properties ['billing_email ' ] );
1145+ Dynamic_Props::set ( $ order , 'description ' , $ description );
11381146
11391147 // force zero amount
1140- $ order-> payment_total = '0.00 ' ;
1148+ Dynamic_Props:: set ( $ order, ' payment_total ' , '0.00 ' ) ;
11411149
11421150 /**
11431151 * Direct Gateway Get Order for Add Payment Method Filter.
@@ -1168,12 +1176,12 @@ protected function add_add_payment_method_customer_data( $order, $response ) {
11681176 // set customer ID from response if available
11691177 if ( $ this ->supports_customer_id () && method_exists ( $ response , 'get_customer_id ' ) && $ response ->get_customer_id () ) {
11701178
1171- $ order-> customer_id = $ customer_id = $ response ->get_customer_id ();
1179+ Dynamic_Props:: set ( $ order, ' customer_id ' , $ customer_id = $ response ->get_customer_id () );
11721180
11731181 } else {
11741182
11751183 // default to the customer ID on "order"
1176- $ customer_id = $ order-> customer_id ;
1184+ $ customer_id = Dynamic_Props:: get ( $ order, ' customer_id ' ) ;
11771185 }
11781186
11791187 // update the user
@@ -1283,7 +1291,7 @@ public function transaction_forced() {
12831291 */
12841292 protected function should_tokenize_before_sale ( \WC_Order $ order ): bool {
12851293
1286- $ result = $ this ->get_payment_tokens_handler ()->should_tokenize () && ( '0.00 ' === $ order-> payment_total || $ this ->tokenize_before_sale () );
1294+ $ result = $ this ->get_payment_tokens_handler ()->should_tokenize () && ( '0.00 ' === Dynamic_Props:: get ( $ order, ' payment_total ' ) || $ this ->tokenize_before_sale () );
12871295
12881296 /**
12891297 * Filters whether tokenization should be performed before the sale, for a given order.
@@ -1374,7 +1382,7 @@ protected function can_tokenize_with_or_after_sale( \WC_Order $order ): bool {
13741382 */
13751383 return apply_filters (
13761384 "wc_payment_gateway_ {$ this ->get_id ()}_can_tokenize_with_or_after_sale " ,
1377- $ order-> payment_total > 0 ,
1385+ Dynamic_Props:: get ( $ order, ' payment_total ' ) > 0 ,
13781386 $ order ,
13791387 $ this
13801388 );
@@ -1411,7 +1419,7 @@ protected function should_skip_transaction( \WC_Order $order ): bool {
14111419 return apply_filters (
14121420 "wc_payment_gateway_ {$ this ->get_id ()}_should_skip_transaction " ,
14131421 // the order amount will be $0 if a WooCommerce Subscriptions free trial product is being processed
1414- ( '0.00 ' === $ order-> payment_total && ! $ this ->transaction_forced () ),
1422+ ( '0.00 ' === Dynamic_Props:: get ( $ order, ' payment_total ' ) && ! $ this ->transaction_forced () ),
14151423 $ order ,
14161424 $ this
14171425 );
0 commit comments