Я установил пользовательский шлюз Woocommerce для внешних платежей, связь с моего сайта к шлюзу работает нормально. Пользователь перенаправляется на шлюз и после оплаты возвращается на (по Woocommerce) определенный URL-адрес возврата.
В документации API шлюза говорится, что платежный шлюз добавит переменную строки запроса к возвращаемому URL. Эта переменная может иметь следующие значения:
response=approved
response=declined
response=error
В документации это пример:
Если backURL = http://www.test.com/return.asp
Тогда ответ будет http://www.test.com/return.asp?response=approved
Для обработки заказа я создал код ниже (сначала только для состояния response=approved
)
Однако, статус заказа не обновляется, когда я проверяю его. Я надеюсь, что кто-то может указать мне правильное направление, чтобы найти ошибку.
На вершине шлюза я расширил query_vars:
function add_query_vars_filter( $vars ){
$vars[] = "response";
return $vars;
}
add_filter( 'query_vars', 'add_query_vars_filter' );
После отправки пользователя в шлюз у меня есть эта функция для обработки и обработки строки запроса в обратном URL:
function check_example_response(){
global $woocommerce;
$transaction_id = get_query_var( 'response' );
$order = new WC_Order( $order_id );
// check if payment was successful
if ($transaction_id == 'approved') {
//Update order status
$order->update_status( 'processing', 'Payment received, your order is currently being processed.' );
//Add admin order noote
$order->add_order_note('Payment Via Example Gateway<br />Transaction ID: '.$order);
//Add customer order note
$order->add_order_note('Payment Received.<br />Your order is currently being processed.<br />We will be shipping your order to you soon.<br />Transaction ID: '.$order, 1);
$message = 'Thank you for shopping with us.<br />Your transaction was successful, payment was received.<br />Your order is currently being processed.';
$message_type = 'success';
}
// Reduce stock levels
$order->reduce_order_stock();
// Empty cart
WC()->cart->empty_cart();
}}
Я также зарегистрировал эту функцию с:
add_action( 'woocommerce_api_wc_example', array( $this, 'check_example_response' ) );
WordPress также не дает никаких подсказок в режиме отладки, так что я сейчас очень расстроен и надеюсь, что кто-нибудь может мне помочь.
Спасибо!
Задача ещё не решена.
Других решений пока нет …