2016-11-30 2 views
1

Я хочу получить URL-адрес, откуда Клиент может непосредственно оплатить их Счет, а также должен работать с wc-cancelled и wc-transaction-declined (пользовательский статус заказа).Как получить URL-адрес Pay Now с пользовательским статусом заказа в WooCommerce?

моего решение
Что я делаю сейчас создал пользовательскую страницу с моим обычаем получить параметры и обработки всего процесса оплаты в качестве документации в шлюзе провайдера веб-сайте.

Моя проблема
Но проблема в том, когда они обновляют там файл DOC и плагин я также необходимо обновить свой код; но если я получу URL-адрес Pay Now, то WooCommerce и Gateway Plugin позаботятся об этом.

Есть ли лучшее решение?

ответ

2

Я получил решение в WooCommerce templates/emails/customer-invoice.php. Функция, которую я искал, - get_checkout_payment_url().

Использование

$order = wc_get_order($order_id); 
$pay_now_url = esc_url($order->get_checkout_payment_url()); 
echo $pay_now_url; //http://example.com/checkout/order-pay/{order_id}?pay_for_order=true&key={order_key} 
//http://example.com will be site_url and protocol will depending upon SSL checkout WooCommerce setting. 

Но этот URL работает только с pending, статус failed заказа; Поэтому я использовал фильтр woocommerce_valid_order_statuses_for_payment

if (!function_exists('filter_woocommerce_valid_order_statuses_for_payment')) { 
    //http://woocommerce.wp-a2z.org/oik_api/wc_abstract_orderneeds_payment/ 
    //http://hookr.io/filters/woocommerce_valid_order_statuses_for_payment/ 
    // define the woocommerce_valid_order_statuses_for_payment callback  
    function filter_woocommerce_valid_order_statuses_for_payment($array, $instance) { 
     $my_order_status = array('cancelled', 'transaction-declined'); 
     return array_merge($array, $my_order_status); 
    } 
    // add the filter  
    add_filter('woocommerce_valid_order_statuses_for_payment', 'filter_woocommerce_valid_order_statuses_for_payment', 10, 2); 
} 

^^ Я добавил это в functions.php файл моей активной темы.


Ссылка:

+1

Это очень полезно ... хороший выстрел :) – LoicTheAztec

+1

благодаря @LoicTheAztec, у меня была борьба за это, поэтому подумал о том, чтобы внести свой вклад в SO, поэтому что кто-то другой получит выгоду. –

Смежные вопросы