автоматическая настройка заказов WooCommerce через чередующийся платеж из состояния «в ожидании» в «прогресс» - PullRequest
0 голосов
/ 09 марта 2020

Заказы, оплаченные через полосы SOFORT и Stripe SEPA, устанавливаются «на удержании» после завершения оформления заказа. После нескольких дней, когда полоса будет проверять платеж, будет установлено значение «в процессе». Я хотел бы автоматически перенести эти платежи в режиме ожидания с полосы на «в процессе», даже если полоса уже была подтверждена. Я нашел следующий код, но это только подписка и SEPA. Есть идеи, как это изменить?

add_action( 'wc_gateway_stripe_process_response', 'action_wc_gateway_stripe_regard_sepa_pending_as_complete', 0, 2);
function action_wc_gateway_stripe_regard_sepa_pending_as_complete ($response, $order) {
    // check if Subscriptions are enabled
    if ( class_exists( 'WC_Subscriptions_Order' ) ) {
        // check if payment (stripe response) is in pending state
        // check if payment (stripe response) is of 'sepa_debit' type
        // check if order contains a subscription
        if( $response->status === 'pending' && $response->source->type === 'sepa_debit' && function_exists( 'wcs_order_contains_subscription' ) && ( wcs_order_contains_subscription( $order->id ) || wcs_is_subscription( $order->id ) || wcs_order_contains_renewal( $order->id ) ) ) {
            $order->payment_complete($response->id);

            /* translators: response id */
            $order->add_order_note( sprintf( __( 'Pending status automatically set as payment complete by custom hook (Charge ID: %s)', 'woocommerce-gateway-stripe' ), $response->id ) );
            if ( is_callable( array( $order, 'save' ) ) ) {
                $order->save();
            }
        }
    }
}
...