Skip to content

Commit 7952741

Browse files
authored
Cancel previous subscription. (#1343)
1 parent 9b96d2b commit 7952741

3 files changed

Lines changed: 24 additions & 13 deletions

File tree

modules/membership/includes/AJAX.php

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -926,8 +926,9 @@ public static function confirm_payment() {
926926
$is_delayed = ! empty( $next_subscription['delayed_until'] );
927927
if ( ! empty( $previous_subscription ) && ! $is_delayed ) {
928928
$previous_subscription = json_decode( $previous_subscription, true );
929-
$stripe_service = new StripeService();
930-
$stripe_service->cancel_subscription( array(), $previous_subscription );
929+
$previous_order = json_decode( get_user_meta( $member_id, 'urm_previous_order_data', true ), true );
930+
$subscription_service = new SubscriptionService();
931+
$subscription_service->cancel_subscription( is_array( $previous_order ) ? $previous_order : array(), $previous_subscription, true );
931932
delete_user_meta( $member_id, 'urm_next_subscription_data' );
932933
delete_user_meta( $member_id, 'urm_previous_subscription_data' );
933934
delete_user_meta( $member_id, 'urm_previous_order_data' );

modules/membership/includes/Admin/Services/Paypal/NewPaypalService.php

Lines changed: 19 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1626,7 +1626,7 @@ public function handle_upgrade_for_paypal( $member_id, $subscription_id ) {
16261626

16271627
if ( ! empty( $new_subscription_data ) ) {
16281628
if ( empty( $new_subscription_data['delayed_until'] ) && ! empty( $get_user_old_subscription['subscription_id'] ) ) {
1629-
$cancel_subscription = $this->cancel_subscription( $get_user_old_order, $get_user_old_subscription );
1629+
$cancel_subscription = $subscription_service->cancel_subscription( $get_user_old_order, $get_user_old_subscription, true );
16301630

16311631
if ( empty( $cancel_subscription['status'] ) ) {
16321632
PaymentGatewayLogging::log_error(
@@ -2413,7 +2413,7 @@ public function validate_setup( $membership_type ) {
24132413
*
24142414
* @return array
24152415
*/
2416-
public function cancel_subscription( $order, $subscription ) {
2416+
public function cancel_subscription( $order, $subscription, $force_cancel = false ) {
24172417
if ( empty( $subscription['subscription_id'] ) ) {
24182418
$message = esc_html__( 'PayPal subscription ID not present.', 'user-registration' );
24192419
return array(
@@ -2424,13 +2424,23 @@ public function cancel_subscription( $order, $subscription ) {
24242424

24252425
$paypal_options = $this->get_paypal_rest_credentials();
24262426

2427-
$response = $this->suspend_paypal_subscription(
2428-
$subscription['subscription_id'],
2429-
array(
2430-
'reason' => 'User initiated cancellation',
2431-
),
2432-
$paypal_options
2433-
);
2427+
if ( $force_cancel ) {
2428+
$response = $this->cancel_paypal_subscription(
2429+
$subscription['subscription_id'],
2430+
array(
2431+
'reason' => 'Membership upgrade',
2432+
),
2433+
$paypal_options
2434+
);
2435+
} else {
2436+
$response = $this->suspend_paypal_subscription(
2437+
$subscription['subscription_id'],
2438+
array(
2439+
'reason' => 'User initiated cancellation',
2440+
),
2441+
$paypal_options
2442+
);
2443+
}
24342444

24352445
if ( is_wp_error( $response ) ) {
24362446
PaymentGatewayLogging::log_transaction_failure(

modules/membership/includes/Admin/Services/SubscriptionService.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -205,12 +205,12 @@ public static function get_expiry_date( $start_date, $period, $value ) {
205205
*
206206
* @return array|bool[]|void
207207
*/
208-
public function cancel_subscription( $order, $subscription ) {
208+
public function cancel_subscription( $order, $subscription, $force_cancel = false ) {
209209
switch ( $order['payment_method'] ) {
210210
case 'paypal':
211211
$paypal_service = new NewPaypalService();
212212

213-
return $paypal_service->cancel_subscription( $order, $subscription );
213+
return $paypal_service->cancel_subscription( $order, $subscription, $force_cancel );
214214

215215
case 'stripe':
216216
$stripe_service = new StripeService();

0 commit comments

Comments
 (0)