| @@ -11,8 +11,9 @@ | ||
| 11 | 11 | |
| 12 | 12 | namespace Better_Payment\Lite\Blocks; |
| 13 | 13 | |
| 14 | 14 | use Better_Payment\Lite\Classes\Handler; |
| 15 | +use Better_Payment\Lite\Classes\PaymentEntitlement; | |
| 15 | 16 | use Better_Payment\Lite\Classes\PaymentRequestGuard; |
| 16 | 17 | use Better_Payment\Lite\Traits\Helper as TraitsHelper; |
| 17 | 18 | |
| 18 | 19 | if ( ! defined( 'ABSPATH' ) ) { |
| @@ -233,11 +234,8 @@ | ||
| 233 | 234 | $woo_product_id = ! empty( $el_settings['better_payment_form_woocommerce_product_id'] ) ? intval( $el_settings['better_payment_form_woocommerce_product_id'] ) : 0; |
| 234 | 235 | $woo_product_ids = ! empty( $el_settings['better_payment_form_woocommerce_product_ids'] ) ? $el_settings['better_payment_form_woocommerce_product_ids'] : array( 0 ); |
| 235 | 236 | $fluentcart_product_id = ! empty( $el_settings['better_payment_form_fluentcart_product_id'] ) ? intval( $el_settings['better_payment_form_fluentcart_product_id'] ) : 0; |
| 236 | 237 | $fluentcart_product_ids = ! empty( $el_settings['better_payment_form_fluentcart_product_ids'] ) ? $el_settings['better_payment_form_fluentcart_product_ids'] : array( 0 ); |
| 237 | - $is_layout_6 = ! empty( $el_settings['better_payment_form_layout'] ) && 'layout-6-pro' === $el_settings['better_payment_form_layout']; | |
| 238 | - $is_fluentcart_layout = $is_layout_6 && ! empty( $el_settings['better_payment_form_layout_6_ecommerce_platform'] ) && 'fluentcart' === $el_settings['better_payment_form_layout_6_ecommerce_platform']; | |
| 239 | - $is_woo_layout = $is_layout_6 && ( empty( $el_settings['better_payment_form_layout_6_ecommerce_platform'] ) || 'woocommerce' === $el_settings['better_payment_form_layout_6_ecommerce_platform'] ); | |
| 240 | 238 | |
| 241 | 239 | // phpcs:disable WordPress.Security.NonceVerification.Missing |
| 242 | 240 | // Amount, quantity, currency and campaign come from the stored settings, never |
| 243 | 241 | // from the request — see PaymentRequestGuard. |
| @@ -298,16 +296,19 @@ | ||
| 298 | 296 | 'fluentcart_product_id' => $fluentcart_product_id, |
| 299 | 297 | 'fluentcart_product_ids' => maybe_serialize( $fluentcart_product_ids ), |
| 300 | 298 | 'source' => 'paypal', |
| 301 | 299 | 'amount_quantity' => ! empty( $primary_payment_amount_quantity ) ? intval( $primary_payment_amount_quantity ) : '', |
| 302 | - 'is_woo_layout' => $is_woo_layout, | |
| 303 | - 'is_fluentcart_layout' => $is_fluentcart_layout, | |
| 304 | 300 | 'detailed_product_info' => maybe_serialize( $detailed_product_info ), |
| 305 | 301 | 'paypal_business_email' => sanitize_email( $el_settings['better_payment_paypal_business_email'] ), |
| 302 | + // The PayPal environment the order was sent to; the IPN must come from the same one. | |
| 303 | + 'paypal_mode' => 'yes' === $el_settings['better_payment_paypal_live_mode'] ? 'live' : 'sandbox', | |
| 306 | 304 | // Persisted so the async PayPal IPN can rebuild the e-mail body + on/off toggle. |
| 307 | 305 | 'email_settings' => Handler::extract_email_settings( $el_settings ), |
| 308 | 306 | ); |
| 309 | 307 | |
| 308 | + // Fields only Pro's forms store (layout 6's platform flags) — see PaymentEntitlement. | |
| 309 | + $better_form_fields = PaymentEntitlement::transaction_fields( $better_form_fields, $el_settings ); | |
| 310 | + | |
| 310 | 311 | $better_form_fields = array_merge( $better_form_fields, $this->fetch_better_form_fields( $el_settings, $_POST ) ); |
| 311 | 312 | |
| 312 | 313 | if ( ! empty( $better_form_fields['primary_first_name'] ) ) { |
| 313 | 314 | $request_data['primary_first_name'] = sanitize_text_field( $better_form_fields['primary_first_name'] ); |
| @@ -879,31 +880,12 @@ | ||
| 879 | 880 | $post_data_primary_email = ''; |
| 880 | 881 | |
| 881 | 882 | $post_fields = $post_data_form_fields; |
| 882 | 883 | |
| 883 | - $layout = ! empty( $el_settings['better_payment_form_layout'] ) ? sanitize_text_field( $el_settings['better_payment_form_layout'] ) : 'layout-1'; | |
| 884 | + // The fields repeater a Pro form renders is Pro's to name — see PaymentEntitlement. | |
| 885 | + $form_fields = PaymentEntitlement::form_fields( $el_settings ); | |
| 884 | 886 | |
| 885 | - // Handle different layouts. | |
| 886 | - switch ( $layout ) { | |
| 887 | - case 'layout-4-pro': | |
| 888 | - $el_settings['better_payment_form_fields'] = isset( $el_settings['better_payment_form_fields_layout_4_5_6'] ) ? $el_settings['better_payment_form_fields_layout_4_5_6'] : array(); | |
| 889 | - break; | |
| 890 | - | |
| 891 | - case 'layout-5-pro': | |
| 892 | - $el_settings['better_payment_form_fields'] = isset( $el_settings['better_payment_form_fields_layout_4_5_6_desc'] ) ? $el_settings['better_payment_form_fields_layout_4_5_6_desc'] : array(); | |
| 893 | - break; | |
| 894 | - | |
| 895 | - case 'layout-6-pro': | |
| 896 | - $el_settings['better_payment_form_fields'] = isset( $el_settings['better_payment_form_fields_layout_4_5_6_woo'] ) ? $el_settings['better_payment_form_fields_layout_4_5_6_woo'] : array(); | |
| 897 | - break; | |
| 898 | - | |
| 899 | - default: | |
| 900 | - break; | |
| 901 | - } | |
| 902 | - | |
| 903 | - $form_fields = isset( $el_settings['better_payment_form_fields'] ) ? $el_settings['better_payment_form_fields'] : array(); | |
| 904 | - | |
| 905 | - if ( ! empty( $form_fields ) && is_array( $form_fields ) ) { | |
| 887 | + if ( ! empty( $form_fields ) ) { | |
| 906 | 888 | foreach ( $form_fields as $form_field ) { |
| 907 | 889 | $field_type = ! empty( $form_field['better_payment_primary_field_type'] ) ? sanitize_text_field( $form_field['better_payment_primary_field_type'] ) : ''; |
| 908 | 890 | $field_name = ! empty( $form_field['better_payment_field_name_heading'] ) ? sanitize_text_field( $form_field['better_payment_field_name_heading'] ) : ''; |
| 909 | 891 | |