Как получить URL-адрес Pay Now со статусом индивидуального заказа в WooCommerce?

Я хочу получить URL-адрес, по которому клиент может напрямую оплатить свой счет-фактуру, а также он должен работать с wc-cancelled и wc-transaction-declined (пользовательский статус заказа).

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

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

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


person Raunak Gupta    schedule 30.11.2016    source источник


Ответы (1)


Я нашел решение в templates/emails/customer-invoice.php файле WooCommerce. Я искал функцию 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 файл моей активной темы.


Ссылка:

person Raunak Gupta    schedule 30.11.2016
comment
Это очень полезно… хороший снимок :) - person LoicTheAztec; 01.12.2016
comment
спасибо @LoicTheAztec, я боролся с этим, поэтому подумал внести это в SO, чтобы кто-то другой получил выгоду. - person Raunak Gupta; 01.12.2016
comment
Нужен шорткод может предоставить ссылку на оплату заказа, например: domaincom / checkout / order-pay / 9374 / Есть идеи, как этого добиться? - person MrBi; 27.06.2021