forum.bitel.ru
http://forum.bitel.ru/

Вычисление комиссии
http://forum.bitel.ru/viewtopic.php?f=82&t=11423
Страница 1 из 1

Автор:  alf_from_melmok [ 04 мар 2016, 17:08 ]
Заголовок сообщения:  Вычисление комиссии

Добрый день!

Начинаем работу с платежной системой SimplePay. И получаем некоторое недопонимание алгоритма работы.

В настройках модуля имеем:

Код:
simplepay.commission.type=2
simplepay.commission.percent=6


Задача: Переложить комиссию связанную с услугами платежных систем на клиента. При условии, что мы не знаем какое электронное платежное средство (КИВИ, Яндекс.Деньги, пластиковые карты и т.д.) выбрал клиент когда ушел со страницы ЛК БГБ.

Наше текущее решение:

В зависимости от электронного платежного средства (киви, яндекс, вэбмани, карты) комиссия у нас составляет от 3,5% до 6%.

Поскольку не ясно какой тип оплаты выбрал клиент (когда пошел на сайт ПС платить из ЛК) мы ставим фиксированную комиссию по максимальной ставке 6%. Здесь мы не хотим (да и не имеем права) зарабатывать на разнице истинной комиссии: для пластиковых карт, например, это 3,5% и выставленной в настройках модуля максимальной комиссии 6% (для дорогих систем типа Яндекс.Деньги).
Другого варианта покрытия комиссии мы не нашли (и это у нас первая проблема работы с этим модулем). По этой проблеме SimplePay не может нас сейчас закрыть и высчитывать корректно комиссию на своей стороне, а лишь предлагает использовать свое API для подсчета правильной исходной суммы (с учетом конечной комиссии) платежа для клиента в зависимости от выбранного электронного платежного средства. Но эта фича их API в модуле БГБ не реализована (мы сейчас платный подписчик модуля).

Вторая наша проблема более серьезная и заключается она в некорректном расчете комиссии, при simplepay.commission.type=2 (комиссия сверху).

Сейчас если клиент ввел в ЛК БГБ - 1 000 руб. к оплате, модуль прибавит к сумме 6%, и отправит в SimplePay к оплате = 1 060 рублей. SimplePay возьмет 6% от 1 060 рублей и отправит нам на счет: 1060 рублей - 63 рубля и 60 копеек = 996 рублей 40 копеек. Что не бьется в обратную сторону, т.е. к нам на счет придет - 996 рублей 40 копеек, а на счет клиенту БГБ положит ровно 1000 рублей.

Т.е. при simplepay.commission.type=2 надо считать не простым прибавлением 6% к 1 000 рублей, а например так:

1000/ ((100-6)/100) = 1000/0.94 = 1063.8


Просьба помочь разобраться.

Автор:  skn [ 04 мар 2016, 17:27 ]
Заголовок сообщения:  Re: Вычисление комиссии

а зачем вы вообще считаете комиссию, ПС не может просто сама брать ее с клиента
т.е. вы выставляете счет на 100 руб., а ПС берет с клиента 100 + свой%

simplepay.commission.type=2 (комиссия сверху) - это ваша комиссия, а не платежной системы, т.е. при этом режиме от ПС должно прийти 1060 руб., а вы уже на счет клиенту зачислите 1060 руб платеж + 60 руб расход

Автор:  alf_from_melmok [ 04 мар 2016, 18:08 ]
Заголовок сообщения:  Re: Вычисление комиссии

1. Клиенту сообщили что у него задолженность 100 руб. по услугам, он идет в личный кадинет вводит 100 руб. к нам на счет поступает 100 руб. - 6%, результат - денег не достаточно для включения.

Нам нужно сообщить клиенту о том, что взимается комиссия и точно указать сумму платежа с комиссией чтобы вернуть нам свои 100 рублей. А клиенту не сидеть с калькулятором перед экраном и выделять процент.

Как нам сделать в текущей реализации модуля simplepay?

Это как зарплата до вычета налогов и с вычетой налогов (на руки). SimplePay не умеет считать ее на своей стороне, он берет ее с отправленной из ЛК БГБ суммы.

2. можно для нас сделать simplepay.commission.type=3 (комиссия ПС), чтобы он счиатлся по формуле, для 1000 рублей: 1000/ ((100-6)/100) = 1000/0.94 = 1063.8, для 6% в simplepay.commission.percent

Автор:  skn [ 04 мар 2016, 18:30 ]
Заголовок сообщения:  Re: Вычисление комиссии

alf_from_melmok писал(а):
1. Клиенту сообщили что у него задолженность 100 руб. по услугам, он идет в личный кадинет вводит 100 руб. к нам на счет поступает 100 руб. - 6%, результат - денег не достаточно для включения.

Нам нужно сообщить клиенту о том, что взимается комиссия и точно указать сумму платежа с комиссией чтобы вернуть нам свои 100 рублей. А клиенту не сидеть с калькулятором перед экраном и выделять процент.

Как нам сделать в текущей реализации модуля simplepay?

Это как зарплата до вычета налогов и с вычетой налогов (на руки). SimplePay не умеет считать ее на своей стороне, он берет ее с отправленной из ЛК БГБ суммы.

2. можно для нас сделать simplepay.commission.type=3 (комиссия ПС), чтобы он счиатлся по формуле, для 1000 рублей: 1000/ ((100-6)/100) = 1000/0.94 = 1063.8, для 6% в simplepay.commission.percent


1) это вообще то нормальная ситуация, например вам выписывают ДПС штраф на 500 руб., вы приходите в банк, где вам говорят типа комиссия N%, типа итого с вас 500+N%
(гаишник не занимается вычислением сколько вы должные заплатить что бы с учетом комиссии получилось сколько надо).

можете использовать simplepay.commission.type=1 (но там надо клиенту подбирать сумму, чтобы с учетом комиссии получилось нужная сумма)

2) можно, но для клиента это будет не понятно, почему с 1000 руб комиссия 6% = 63,8 руб. и это не совсем честно с точки зрения платежной системы, так как получается ПС берет % за свою же комиссию...

Автор:  alf_from_melmok [ 04 мар 2016, 20:26 ]
Заголовок сообщения:  Re: Вычисление комиссии

1. Тогда получается в текущей реализации нет нужного механизама работы с SimplePay. Потому что сейчас так - вам ДПС выписал штраф - 500 рублей. Вы его плачиваете через БГБ с модулем SimplePay и платите через них 500 руб., SimplePay берет ваши 500 рублей минус N рублей и отправляют в ДПС 500-N рублей (ничего вам не сообщая), ДПС получит частичную оплату и вышлет за вами ицелопа с транклюкатором. У которого (если повезет) можно будет выяснить величину комиссии которую забрал SimplePay с ваших 500 и через кого выгоднее платить в след. раз.

Еще раз связался с SimplePay - они подтвердили что не могут брать комиссию явно.


2. Это понятно. Но мы без этого просто не можем корректно считать взаимодействие с ними. Пусть это будет процент на добавленную стоимость наших услуг.

Автор:  skn [ 04 мар 2016, 21:52 ]
Заголовок сообщения:  Re: Вычисление комиссии

alf_from_melmok писал(а):
1. Еще раз связался с SimplePay - они подтвердили что не могут брать комиссию явно.
2. Это понятно. Но мы без этого просто не можем корректно считать взаимодействие с ними. Пусть это будет процент на добавленную стоимость наших услуг.


1) все остальные ПС могут, а эти особенные...
2) какая версия биллинга?

Автор:  alf_from_melmok [ 04 мар 2016, 22:02 ]
Заголовок сообщения:  Re: Вычисление комиссии

2. Версия 6.2

Автор:  skn [ 05 мар 2016, 14:06 ]
Заголовок сообщения:  Re: Вычисление комиссии

Кстати ПС не может брать комиссию, а вы можете? Это законно? У вас в прайсе и договорах с клиентами есть такая услуга? Да ещё вам придётся платить налоги с этих комиссий.

Автор:  alf_from_melmok [ 05 мар 2016, 14:31 ]
Заголовок сообщения:  Re: Вычисление комиссии

Задавал этот вопрос SimplePay - они сообщили, что юридически это оформляют сейчас - и как будет готово, они смогут наконец оперировать корректной суммой при платеже. У нас таких услуг нет и в договоре не прописано. Мало того, мы не хотим даже с этим связываться. Нам надо просто сделать так чтобы накладной расход который с нас вычитают (по любому) бился с тем что вводит клиент в ЛК БГБ.

Принципиально, процент мы брать не хотим и не будем. У SimplePay есть в API проверка конечного процента от исходной суммы - чьи эти проценты нам в общем-то не интересно, нам ВАЖНО иметь в ЛК БГБ механизм, который покажет клиенту, что с него с дерут вот столько-то, а на счет к нам должны прийти требуемые с него - наши 100 рублей, за которые мы и отчитаемся перед налоговой. А кто там что снял - пусть уже инспектор разбирается с всеми этими ПС, банками-экваерами и прочими кровососами.

Автор:  skn [ 05 мар 2016, 15:18 ]
Заголовок сообщения:  Re: Вычисление комиссии

сейчас при включений комиссии в модуле они заносятся на договор в виде расходов...
просто в зависимости от режима, вся сумма заносится как приход + расход в размере комисии

Автор:  alf_from_melmok [ 05 мар 2016, 16:58 ]
Заголовок сообщения:  Re: Вычисление комиссии

Т.е. получается что комиссия это наш доход с которого мы должны будем заплатить налог и нам надо прописать это в договор?

И больше никак?

Мне кажется даже в этом случае, формулу расчета комиссии надо тогда привести в соответствие со снятым процентом от ПС, иначе перечисленная сумма не прозрачна для бухгалтерии.

Автор:  alf_from_melmok [ 09 мар 2016, 13:23 ]
Заголовок сообщения:  Re: Вычисление комиссии

Сделайте пожалуйста simplepay.commission.type=3 (комиссия ПС)

Автор:  skn [ 09 мар 2016, 13:31 ]
Заголовок сообщения:  Re: Вычисление комиссии

сделали

Автор:  alf_from_melmok [ 09 мар 2016, 14:13 ]
Заголовок сообщения:  Re: Вычисление комиссии

Спасибо, большое.

Автор:  alf_from_melmok [ 22 мар 2016, 16:51 ]
Заголовок сообщения:  Re: Вычисление комиссии

День добрый.

Нельзя поправить округление до копеек (приложил файл)?

Спасибо.

Вложения:
round_sum.png
round_sum.png [ 20.73 КБ | Просмотров: 10425 ]

Автор:  skn [ 22 мар 2016, 20:19 ]
Заголовок сообщения:  Re: Вычисление комиссии

подправили

Автор:  alf_from_melmok [ 23 мар 2016, 17:26 ]
Заголовок сообщения:  Re: Вычисление комиссии

Ой. Поставили код и нашли сразу ошибку.

Сейчас сумма платежа отправленная на их гейт вообще не содержит вложенную комиссию - или мы что-то не так делаем?

Т.е. пользователь ввел 1000 руб., выскочила та картинка с процентом, а сумма на шлюз ушла что была введена пользователем - 1000 руб., без комиссии.

Автор:  skn [ 23 мар 2016, 18:39 ]
Заголовок сообщения:  Re: Вычисление комиссии

исправлено

Автор:  alf_from_melmok [ 23 мар 2016, 20:13 ]
Заголовок сообщения:  Re: Вычисление комиссии

обновились....

теперь при переходе на платежный гейт

Код:
Ошибка 110

Отсутствует или не действует контракт с магазином

Автор:  skn [ 24 мар 2016, 03:51 ]
Заголовок сообщения:  Re: Вычисление комиссии

А в логах ошибок нет?

Автор:  alf_from_melmok [ 24 мар 2016, 12:59 ]
Заголовок сообщения:  Re: Вычисление комиссии

Есть. Имел неосторожность обновиться на боевом сервере.

Код:

server 03-23/17:12:05 ERROR [http-bio-0.0.0.0-8080-exec-9] ActionHandler - Exception in ru.bitel.bgbilling.modules.simplepay.server.action.web.ActionDoTransaction:getOrderId
server 03-23/17:12:05 ERROR [http-bio-0.0.0.0-8080-exec-9] CommonExecutor - Произошла ошибка
ru.bitel.bgbilling.common.BGException: Произошла ошибка
        at ru.bitel.bgbilling.kernel.container.web.action.ActionHandler.handle(ActionHandler.java:94)
        at bitel.billing.server.WebExecuter.executeAction(WebExecuter.java:463)
        at bitel.billing.server.WebExecuter.doPost(WebExecuter.java:215)
        at bitel.billing.server.WebExecuter.doGet(WebExecuter.java:79)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:620)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
        at ru.bitel.common.server.filters.MultipartFilter.doFilter(MultipartFilter.java:48)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
        at ru.bitel.common.server.filters.XSSFilter.doFilter(XSSFilter.java:89)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
        at ru.bitel.common.server.filters.BGAuthFilter.doFilter(BGAuthFilter.java:276)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
        at ru.bitel.common.server.filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:50)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
        at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:504)
        at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:421)
        at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1074)
        at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:611)
        at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:314)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
        at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result.
        at java.math.BigDecimal.divide(BigDecimal.java:1690)
        at ru.bitel.bgbilling.modules.simplepay.server.action.web.ActionDoTransaction.getOrderId(ActionDoTransaction.java:128)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:497)
        at ru.bitel.bgbilling.kernel.container.web.action.ActionInfo.invoke(ActionInfo.java:41)
        at ru.bitel.bgbilling.kernel.container.web.action.ActionHandler.handleImpl(ActionHandler.java:150)
        at ru.bitel.bgbilling.kernel.container.web.action.ActionHandler.handle(ActionHandler.java:73)
        ... 34 more


Автор:  skn [ 24 мар 2016, 16:03 ]
Заголовок сообщения:  Re: Вычисление комиссии

исправлено

Автор:  alf_from_melmok [ 24 мар 2016, 18:00 ]
Заголовок сообщения:  Re: Вычисление комиссии

обновились. вроде работает.

Страница 1 из 1 Часовой пояс: UTC + 5 часов [ Летнее время ]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/