Open shashin-sergey opened 8 years ago
По документации такой возможности нет. Обратитесь в сервис Робокассы может это они смогут сделать.
Такая возможность есть в woocommrece в пункте настроек "налоги". Спасибо google...
А как налоги касаются комиссии, которую берет сервис Робакассы? Или я чего-то не понимаю?
Я пока сам не разобрался, как оно работает. Но робокасса перестала плюсовать комиссию к сумме заказа.
Название метода CalcOutSumm
URL для запросов HTTP GET/POST https://auth.robokassa.ru/Merchant/WebService/Service.asmx/CalcOutSumm
Я решил этот вопрос с помощью хука (фильтра), который, к счастью, разработчик предусмотрел в коде плагина. Код можно добавить в functions.php темы или собрать свой плагин.
//recalculate OutSumm, so customer doesn't pay ROBOKASSA fee
add_filter('woocommerce_robokassa_args', 'ip_recalculte_outsumm');
function ip_recalculte_outsumm($args) {
$current_summ = $args['OutSum'];
$mrh_login = $args['MrchLogin'];
//using xml-method http://docs.robokassa.ru/#2320
$robokassa_url = 'https://auth.robokassa.ru/Merchant/WebService/Service.asmx/CalcOutSumm?MerchantLogin='.$mrh_login.'&IncCurrLabel=QCardR&IncSum='.$current_summ;
$final_value = $curren_summ;
//CURL request
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $robokassa_url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec($ch);
$code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
//END OF CURL reques
//Check result
if ($code == 200) { //ok, change final summ
$result = new SimpleXMLElement($result);
if ($result->Code == 0) {
$final_value = (string)$result->OutSum;
} else {
error_log('Robokassa XML-method is not available, server code is '.$code.', but XML result is: '.print_r($result, true));
return $args; //return args as is
}
} else {
error_log('Robokassa API is not available, server code is '.$code);
return $args; //return args as is
}
//regenerate CRC
$options = get_option('woocommerce_robokassa_settings');
$robokassa_key1 = $options['robokassa_key1'];
if(!isset($args['OutSumCurrency']))
$crc = $args['MrchLogin'].':'.$final_value.':'.$args['InvId'].':'.$robokassa_key1;
else
$crc = $args['MrchLogin'].':'.$final_value.':'.$args['InvId'].':' . $args['OutSumCurrency'] . ':'.$robokassa_key1;
$crc = md5($crc);
//modifi args
$args['OutSum'] = $final_value;
$args['SignatureValue'] = $crc;
//return modified args
return $args;
}
Регистрируем интернет магазин как физическое лицо. Как заставить плагин вычитать комиссию с нас, а не с покупателя?