From 5712b545675b1d4e5658fbf277163b7906a25cec Mon Sep 17 00:00:00 2001 From: Emili Castells Guasch Date: Mon, 27 Mar 2023 15:24:44 +0200 Subject: [PATCH] Add plan name --- .../src/Endpoint/BillingPlans.php | 3 +- .../src/SubscriptionModule.php | 35 +++++++++++++++++-- .../src/SubscriptionsApiHandler.php | 3 +- 3 files changed, 37 insertions(+), 4 deletions(-) diff --git a/modules/ppcp-api-client/src/Endpoint/BillingPlans.php b/modules/ppcp-api-client/src/Endpoint/BillingPlans.php index 3ae86b747..e33d44ea9 100644 --- a/modules/ppcp-api-client/src/Endpoint/BillingPlans.php +++ b/modules/ppcp-api-client/src/Endpoint/BillingPlans.php @@ -87,14 +87,15 @@ class BillingPlans { * @throws PayPalApiException If the request fails. */ public function create( + string $name, string $product_id, array $billing_cycles, array $payment_preferences ): Plan { $data = array( + 'name' => $name, 'product_id' => $product_id, - 'name' => 'Testing Plan', 'billing_cycles' => $billing_cycles, 'payment_preferences' => $payment_preferences ); diff --git a/modules/ppcp-subscription/src/SubscriptionModule.php b/modules/ppcp-subscription/src/SubscriptionModule.php index ddfefc4cc..5121632ef 100644 --- a/modules/ppcp-subscription/src/SubscriptionModule.php +++ b/modules/ppcp-subscription/src/SubscriptionModule.php @@ -159,7 +159,11 @@ class SubscriptionModule implements ModuleInterface { } $product = wc_get_product( $product_id ); - if ( $product->get_type() === 'subscription' ) { + $enable_subscription_product = wc_clean(wp_unslash($_POST['_ppcp_enable_subscription_product'] ?? '')); + $product->update_meta_data('_ppcp_enable_subscription_product', $enable_subscription_product); + $product->save(); + + if ( $product->get_type() === 'subscription' && $enable_subscription_product === 'yes' ) { $subscriptions_api_handler = $c->get('subscription.api-handler'); assert($subscriptions_api_handler instanceof SubscriptionsApiHandler); @@ -174,7 +178,11 @@ class SubscriptionModule implements ModuleInterface { } if ( $product->meta_exists( 'ppcp_subscription_product' ) && ! $product->meta_exists( 'ppcp_subscription_plan' ) ) { - $subscriptions_api_handler->create_plan($product); + $subscription_plan_name = wc_clean(wp_unslash($_POST['_ppcp_subscription_plan_name'] ?? '')); + $product->update_meta_data('_ppcp_subscription_plan_name', $subscription_plan_name); + $product->save(); + + $subscriptions_api_handler->create_plan($subscription_plan_name, $product); } } }, @@ -275,6 +283,29 @@ class SubscriptionModule implements ModuleInterface { } } ); + + add_action( 'woocommerce_product_options_general_product_data', function() use($c) { + $settings = $c->get( 'wcgateway.settings' ); + assert( $settings instanceof Settings ); + + try { + $subscriptions_mode = $settings->get( 'subscriptions_mode' ); + if($subscriptions_mode === 'subscriptions_api') { + global $post; + $product = wc_get_product( $post->ID ); + $enable_subscription_product = $product->get_meta('_ppcp_enable_subscription_product'); + $subscription_plan_name = $product->get_meta('_ppcp_subscription_plan_name'); + + echo ''; + } + + } catch ( NotFoundException $exception ) { + return; + } + } ); } /** diff --git a/modules/ppcp-subscription/src/SubscriptionsApiHandler.php b/modules/ppcp-subscription/src/SubscriptionsApiHandler.php index bf932ba7c..054bdaee7 100644 --- a/modules/ppcp-subscription/src/SubscriptionsApiHandler.php +++ b/modules/ppcp-subscription/src/SubscriptionsApiHandler.php @@ -81,9 +81,10 @@ class SubscriptionsApiHandler { } } - public function create_plan( WC_Product $product ) { + public function create_plan( string $plan_name, WC_Product $product ) { try { $subscription_plan = $this->billing_plans_endpoint->create( + $plan_name, $product->get_meta( 'ppcp_subscription_product' )['id'] ?? '', array($this->billing_cycle_factory->from_wc_product($product)->to_array()), $this->payment_preferences_factory->from_wc_product($product)->to_array()