Вычисление комиссии

Вычисление комиссии

Сообщение alf_from_melmok » 04 мар 2016, 17:08

Добрый день!

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

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

$this->bbcode_second_pass_code('', '
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


Просьба помочь разобраться.
alf_from_melmok
 
Сообщения: 171
Зарегистрирован: 14 мар 2010, 03:38
Откуда: Москва

Re: Вычисление комиссии

Сообщение skn » 04 мар 2016, 17:27

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

simplepay.commission.type=2 (комиссия сверху) - это ваша комиссия, а не платежной системы, т.е. при этом режиме от ПС должно прийти 1060 руб., а вы уже на счет клиенту зачислите 1060 руб платеж + 60 руб расход
skn
Разработчик
 
Сообщения: 4382
Зарегистрирован: 07 апр 2007, 23:51
Откуда: Уфа, Россия

Re: Вычисление комиссии

Сообщение alf_from_melmok » 04 мар 2016, 18:08

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
alf_from_melmok
 
Сообщения: 171
Зарегистрирован: 14 мар 2010, 03:38
Откуда: Москва

Re: Вычисление комиссии

Сообщение skn » 04 мар 2016, 18:30

$this->bbcode_second_pass_quote('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 руб. и это не совсем честно с точки зрения платежной системы, так как получается ПС берет % за свою же комиссию...
skn
Разработчик
 
Сообщения: 4382
Зарегистрирован: 07 апр 2007, 23:51
Откуда: Уфа, Россия

Re: Вычисление комиссии

Сообщение alf_from_melmok » 04 мар 2016, 20:26

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

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


2. Это понятно. Но мы без этого просто не можем корректно считать взаимодействие с ними. Пусть это будет процент на добавленную стоимость наших услуг.
alf_from_melmok
 
Сообщения: 171
Зарегистрирован: 14 мар 2010, 03:38
Откуда: Москва

Re: Вычисление комиссии

Сообщение skn » 04 мар 2016, 21:52

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


1) все остальные ПС могут, а эти особенные...
2) какая версия биллинга?
skn
Разработчик
 
Сообщения: 4382
Зарегистрирован: 07 апр 2007, 23:51
Откуда: Уфа, Россия

Re: Вычисление комиссии

Сообщение alf_from_melmok » 04 мар 2016, 22:02

2. Версия 6.2
alf_from_melmok
 
Сообщения: 171
Зарегистрирован: 14 мар 2010, 03:38
Откуда: Москва

Re: Вычисление комиссии

Сообщение skn » 05 мар 2016, 14:06

Кстати ПС не может брать комиссию, а вы можете? Это законно? У вас в прайсе и договорах с клиентами есть такая услуга? Да ещё вам придётся платить налоги с этих комиссий.
skn
Разработчик
 
Сообщения: 4382
Зарегистрирован: 07 апр 2007, 23:51
Откуда: Уфа, Россия

Re: Вычисление комиссии

Сообщение alf_from_melmok » 05 мар 2016, 14:31

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

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

Re: Вычисление комиссии

Сообщение skn » 05 мар 2016, 15:18

сейчас при включений комиссии в модуле они заносятся на договор в виде расходов...
просто в зависимости от режима, вся сумма заносится как приход + расход в размере комисии
skn
Разработчик
 
Сообщения: 4382
Зарегистрирован: 07 апр 2007, 23:51
Откуда: Уфа, Россия

Re: Вычисление комиссии

Сообщение alf_from_melmok » 05 мар 2016, 16:58

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

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

Мне кажется даже в этом случае, формулу расчета комиссии надо тогда привести в соответствие со снятым процентом от ПС, иначе перечисленная сумма не прозрачна для бухгалтерии.
alf_from_melmok
 
Сообщения: 171
Зарегистрирован: 14 мар 2010, 03:38
Откуда: Москва

Re: Вычисление комиссии

Сообщение alf_from_melmok » 09 мар 2016, 13:23

Сделайте пожалуйста simplepay.commission.type=3 (комиссия ПС)
alf_from_melmok
 
Сообщения: 171
Зарегистрирован: 14 мар 2010, 03:38
Откуда: Москва

Re: Вычисление комиссии

Сообщение skn » 09 мар 2016, 13:31

сделали
skn
Разработчик
 
Сообщения: 4382
Зарегистрирован: 07 апр 2007, 23:51
Откуда: Уфа, Россия

Re: Вычисление комиссии

Сообщение alf_from_melmok » 09 мар 2016, 14:13

Спасибо, большое.
alf_from_melmok
 
Сообщения: 171
Зарегистрирован: 14 мар 2010, 03:38
Откуда: Москва

Re: Вычисление комиссии

Сообщение alf_from_melmok » 22 мар 2016, 16:51

День добрый.

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

Спасибо.
Вложения
round_sum.png
alf_from_melmok
 
Сообщения: 171
Зарегистрирован: 14 мар 2010, 03:38
Откуда: Москва

Re: Вычисление комиссии

Сообщение skn » 22 мар 2016, 20:19

подправили
skn
Разработчик
 
Сообщения: 4382
Зарегистрирован: 07 апр 2007, 23:51
Откуда: Уфа, Россия

Re: Вычисление комиссии

Сообщение alf_from_melmok » 23 мар 2016, 17:26

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

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

Т.е. пользователь ввел 1000 руб., выскочила та картинка с процентом, а сумма на шлюз ушла что была введена пользователем - 1000 руб., без комиссии.
alf_from_melmok
 
Сообщения: 171
Зарегистрирован: 14 мар 2010, 03:38
Откуда: Москва

Re: Вычисление комиссии

Сообщение skn » 23 мар 2016, 18:39

исправлено
skn
Разработчик
 
Сообщения: 4382
Зарегистрирован: 07 апр 2007, 23:51
Откуда: Уфа, Россия

Re: Вычисление комиссии

Сообщение alf_from_melmok » 23 мар 2016, 20:13

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

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

$this->bbcode_second_pass_code('', '
Ошибка 110

Отсутствует или не действует контракт с магазином
')
alf_from_melmok
 
Сообщения: 171
Зарегистрирован: 14 мар 2010, 03:38
Откуда: Москва

Re: Вычисление комиссии

Сообщение skn » 24 мар 2016, 03:51

А в логах ошибок нет?
skn
Разработчик
 
Сообщения: 4382
Зарегистрирован: 07 апр 2007, 23:51
Откуда: Уфа, Россия

Re: Вычисление комиссии

Сообщение alf_from_melmok » 24 мар 2016, 12:59

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

$this->bbcode_second_pass_code('', '

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

')
alf_from_melmok
 
Сообщения: 171
Зарегистрирован: 14 мар 2010, 03:38
Откуда: Москва

Re: Вычисление комиссии

Сообщение skn » 24 мар 2016, 16:03

исправлено
skn
Разработчик
 
Сообщения: 4382
Зарегистрирован: 07 апр 2007, 23:51
Откуда: Уфа, Россия

Re: Вычисление комиссии

Сообщение alf_from_melmok » 24 мар 2016, 18:00

обновились. вроде работает.
alf_from_melmok
 
Сообщения: 171
Зарегистрирован: 14 мар 2010, 03:38
Откуда: Москва


Вернуться в Модуль SimplePay

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1