Вам нужно вызвать глобальную переменную, чтобы убедиться, что она получает правильные значения.
Если вы добавите
global $woocommerce;
непосредственно перед
$amount2 = floatval( preg_replace( '#[^\d.]#', '', $woocommerce->cart->get_cart_total() ) );
, который должен решить вашу проблему.
Вы должны использовать проекции звезд только в том случае, если вы не знаете конкретный параметр типа для универсального типа. Когда вы используете их, компилятор не позволит вам делать небезопасные действия с параметризованным типом. Например, вы видели, что не можете передать какой-либо параметр в onSuccess
, так как вы по существу сказали компилятору, что не знаете, каким должен быть его тип.
Тогда исправление заключается в том, чтобы вместо функции createRequest
задать параметр типа, и сделать как Observable
того же типа, так и обратный вызов, который вы хотите вызвать:
fun <T> createRequest(source: Observable<T>, callback: ResponseCallback<T>) {
...
callback.onSuccess(it) // works, since you're passing in a T to a method that requires a T
...
}