Добрый день, как оказалось плагин не способен начислять поощрение человеку, в момент когда реферал пополняет счёт личного кабинета. Я так понял, он поощряет только совершаемые пользователем платежи за услуги и товары, но не сам факт пополнения счёта.
К сожалению, на сайте нет услуг и товаров в привычном понимании. Имеется только форма пополнения личного счёта через робокассу, платежи реальные. Вот на эти платежи бы и хотелось повесить процент поощрения рефералу.
Какие есть способы решения этой проблемы и кто возьмётся за реализацию?
разместите в файле функций своей темы код
add_action( 'rcl_success_pay_system', 'rfr_payment_balance', 10 );
function rfr_payment_balance($data){
if ( $data->pay_type != 1 )
return false;
add_referall_incentive_order($data->user_id,$data->pay_summ);
}
данный код должен начислять поощрение партнеру за пополнение им внутреннего баланса, в настройках выставляйте поощрение за оплату заказа
Спасибо за ответ. Разместил этот код в файл активной темы functions.php. В настройках поощрение за оплату заказа не увидел, настроил следующим образом
Меня смущает эта красная полоса сверху, так должно быть? К сожалению, поощрение не прошло, в кабинете приглашённого платёж в 10 рублей засчитало, пользователь числится рефералом в кабинете.
Да. Есть пользователь test, у него реферал test4. Пополнил счёт пользователя test4 на 10 рублей через реальный платёжный гейт робокассы. В счёте test4 платёж отразился. У пользователя test и в базе всех поощрений движений средств не зафиксировано.
что же сразу не сообщили об этом, тогда для вас код будет таким
add_action( 'rcl_success_pay_system', 'rfr_payment_balance', 10 );
function rfr_payment_balance($data){
if ( $payData->pay_type != 'pbu-payment' )
return false;
$baggage = $payData->baggage_data;
$recipient_id = $baggage->recipient_id;
add_referall_incentive_order($recipient_id,$data->pay_summ);
}
так пробуйте
add_action( 'pbu_payment', 'rfr_payment_balance', 10 );
function rfr_payment_balance($payData){
if ( $payData->pay_type != 'pbu-payment' )
return false;
$baggage = $payData->baggage_data;
$recipient_id = $baggage->recipient_id;
add_referall_incentive_order($recipient_id,$payData->pay_summ);
}
Ну почти получилось, правда пришёл ноль вместо ожидаемых 0.375 (или 0.5) рубля
,
При оплате на сайте фигурирует такой параметр как "коэффициент начисления", который в данном случае при оплате 10 рублей зачисляет пользователю только 7.5 рубля. Возможно обрабатывается не тот параметр и идёт null.
add_action( 'rcl_success_pay', 'pbu_payment', 10 );
function pbu_payment( $payData ) {
if ( $payData->pay_type != 'pbu-payment' )
return false;
$baggage = $payData->baggage_data;
$recipient_id = $baggage->recipient_id;
$user_name = $baggage->user_name;
$user_phone = $baggage->user_phone;
$balance = rcl_get_user_balance( $recipient_id );
$multiplier = get_user_meta( $recipient_id, 'multiplier', 1 ) ? get_user_meta( $recipient_id, 'multiplier', 1 ) : 0.75;
$balance += round( $payData->pay_summ * $multiplier, 2 );
rcl_update_user_balance( $balance, $recipient_id, __( 'Оплата' ) );