Подписки Woocommerce: заказы на продление создаются автоматически с приостановкой активных подписок. - PullRequest
0 голосов
/ 06 ноября 2018

Мой клиент использует подписки и членство в WC. Он предлагает клиентам пробную подписку на 1 доллар, чтобы попробовать свои услуги в течение 30 дней. По истечении 30 дней, если клиент не отказался от подписки, с него будет снята полная сумма.

Это то, что происходит в PayPal Standard:

  • клиент покупает пробную версию за 1 доллар и отправляется в PayPal для оплаты. После успешной оплаты они возвращаются на веб-сайт, и вместе с подпиской создается пробное платное членство.
  • Через пару минут после успешного завершения транзакции отдельный заказ на продление для этой подписки будет создан автоматически (не должно происходить до 30 дней) и впоследствии приостановит пробное платное членство.
  • Поскольку заказ на продление не оплачивается, он имеет статус ожидающего платежа, который влияет на статус подписки, поскольку он считает, что платеж должен быть выполнен, но не получил платеж.

Дело в том, что я только что проверил этот сценарий в своей песочнице PayPal, и все заработало как надо. Заказ на автоматическое продление не сгенерирован. Может кто-нибудь помочь мне понять, почему этот заказ на продление генерируется автоматически?

Спасибо.

1 Ответ

0 голосов
/ 30 декабря 2018

У меня была такая же проблема. Однако проблема заключается в том, что когда подписка автоматически продлевается, тогда статус MEMBERSHIP меняется на PAUSED. Я разработал и применил следующее решение, и оно сработало !!

/*
 * FIXED : Membership got PAUSED everytime at automatic membership renewal
 */

function change_membership_status_active( $subscription , $order ) {
    global $wpdb;
    if( 'completed' === $order->get_status() ) {        
        $membership = $wpdb->get_row( "SELECT * FROM wp_postmeta WHERE meta_key = '_subscription_id' AND meta_value =  $subscription->ID" );
        $mem_id = $membership->post_id;
        $status = 'wcm-active';
        $update_args = array( 'ID' => $mem_id, 'post_status' => $status );
        wp_update_post($update_args);
    }
}
add_action( 'woocommerce_subscription_renewal_payment_complete', 'change_membership_status_active', 10, 2 );
...