forum.bitel.ru http://forum.bitel.ru/ |
|
Отправка чека на email http://forum.bitel.ru/viewtopic.php?f=28&t=12763 |
Страница 1 из 1 |
Автор: | simka [ 12 янв 2018, 14:57 ] |
Заголовок сообщения: | Отправка чека на email |
У нас установлен модуль Sberbank. К действию "Приход платежа" привязан дин.код. Проблема в том, что в этом скрипте не определяется customerEmail, он равен null. Email вводится на стороне Сбербанка вместе с реквизитами банковской карты. Как узнать этот email? Код: sberbank: вер. 6.2.64 / 10.08.2017 16:38:29 Код: package ru.bitel.bgbilling.cashcheck;
import static ru.bitel.bgbilling.common.bean.BGBaseConstants.KEY_CUSTOMER_ADDRESS; import java.sql.Connection; import bitel.billing.server.util.MailMsg; import ru.bitel.bgbilling.common.BGException; import ru.bitel.bgbilling.kernel.contract.api.common.bean.Contract; import ru.bitel.bgbilling.kernel.contract.api.server.bean.ContractDao; import ru.bitel.bgbilling.kernel.contract.balance.common.bean.Payment; import ru.bitel.bgbilling.kernel.contract.balance.server.event.PaymentEvent; import ru.bitel.bgbilling.kernel.contract.config.server.ContractModuleConfigDao; import ru.bitel.bgbilling.kernel.script.server.dev.EventScriptBase; import ru.bitel.bgbilling.plugins.cashcheck.server.CashCheckUtils; import ru.bitel.bgbilling.plugins.cashcheck.server.bean.Check; import ru.bitel.bgbilling.server.util.Setup; import ru.bitel.common.sql.ConnectionSet; import bitel.billing.server.contract.bean.ContractParameterManager; /** * Обрабатываем приход платежа с печатью на регистраторах по событию «Приход платежа». * Попытка костыля для обработки онлайн-платежей. * @author dimon */ public class CheckInternet extends EventScriptBase<PaymentEvent> { /** * [Настройки здесь] * Номер ККМ из конфига плагина, на котором печатать. */ private int kkmNum = 1; /** * [Настройки здесь] * Пароль, под которым заходит в ККМ. */ private int kkmPass = 30; /** * [Настройки здесь] * e-mail администраторов, куда слать уведомления. */ private String[] EMAILS = {"xxxxx@xxxxxx.ru"}; /** * [Настройки здесь] * На основании переданных данных (payment, contract) генерируется объект Check. * Там же внутри в объект Check ставятся тип платежей для ККМ (check.setPaymentType) и налоговая группа для ККМ (check.setTax). */ private void makeCheck(Connection con, Payment payment, Contract contract) throws Exception { int PARAM_ID = 1; //сбербанк if(payment.getTypeId() == 19) // остальные ветки по аналогии { print("печать чека для Сбербанка"); int MID = 23; ContractModuleConfigDao contractModuleConfigDao = new ContractModuleConfigDao( con, MID ); String customerEmail = contractModuleConfigDao.get( contract.getId(), KEY_CUSTOMER_ADDRESS ); contractModuleConfigDao.close(); print(customerEmail); check = new Check(); check.setPaymentType(4); // ставим ТИП ПЛАТЕЖА ККМ: 1 - нал, 2,3,4 - безнал или какой-то другой тип оплаты check.setTax(3); //НДС=0 ставим ТИП НАЛОГА ККМ: 0 - по номеру секции (в атолах), N - какой-то другой на выбор check.setOnlyElCheck(true); // "только электронный чек" check.setCustomerEmail(customerEmail); int paymentDep = 1; // отдел, используется ниже в addPayment // добавляем ФИО ContractParameterManager bgParamMan = new ContractParameterManager( con ); String paramVal = bgParamMan.getStringParam( contract.getId(), PARAM_ID ); paramVal = paramVal.substring(0,20); print("от: "+paramVal); print( "id: " + contract.getTitle() +" ["+contract.getComment()+"]" ); check.addString("от: "+paramVal); check.addString( "id: " + contract.getTitle() +" ["+contract.getComment()+"]" ); check.addPayment( payment.getSum(), "Интернет" , paymentDep ); } } // --- всё что ниже менять не нужно --- private Check check = null; @Override public void onEvent(PaymentEvent event, Setup setup, ConnectionSet set) throws Exception { if(event.isEditMode()) return; // если платёж редактируется, а не создаётся, то сразу уходим Connection con = set.getConnection(); Payment payment = event.getPayment(); int userId = payment.getUserId(); check = null; print( "CashCheck Autoprint: user id="+userId+", печать чека " ); ContractDao contractDao = new ContractDao(con, userId); Contract contract = contractDao.get(payment.getContractId()); contractDao.close(); makeCheck( con, payment, contract ); // в этом методе делается всё про чек - устанавливаются глобальные check и kkmNum if( check != null ) { try { CashCheckUtils.printCheck(check, CashCheckUtils.getPrinter( kkmNum ), kkmPass, con, payment.getId()); print( "CashCheck Autoprint: check was printed!" ); } catch(BGException e) { print( "CashCheck Autoprint: check ERROR: " + e.getMessage() ); sendMails(setup, "CashCheck Autoprint: check ERROR", e.printStackTraceToString()); } } else { error( "CashCheck Autoprint: makeCheck: check == null, payment NOT printed!" ); } } private void sendMails(Setup setup, String subject, String body) { MailMsg mailmsg = new MailMsg(setup); for(String email : EMAILS) { try { print("CashCheck Autoprint: Send e-mail to "+email+"..."); mailmsg.sendMessage(email, subject, body); } catch (Exception e) { error("CashCheck Autoprint: Error send e-mail: "+e.toString()); } } } } |
Автор: | dimOn [ 12 янв 2018, 19:21 ] |
Заголовок сообщения: | Re: Отправка чека на email |
а в биллинг этот емайл вообще приходит в каком-то виде? в логах, каментах или где-то отображается? |
Автор: | dimOn [ 12 янв 2018, 19:22 ] |
Заголовок сообщения: | Re: Отправка чека на email |
в модуле сбербанк в ЛК разве нет поля для ввода мыла/телефона для отправки электронного чека? |
Автор: | simka [ 15 янв 2018, 11:58 ] |
Заголовок сообщения: | Re: Отправка чека на email |
Код: desc sberbank_transaction_23 id contract_id payment_id create_date transaction_date order_id autopayment status params sum в поле params содержатся след.данные Код: orderId=598ff78a-1ed7-7e43-598f-f78a0014d614 depositAmount=1000 approvalCode=424711 authCode=2 Amount=1000 Ip=ХХ.ХХ.ХХ.ХХ OrderNumber=3 OrderStatus=2 cardholderName=CARDHOLDER NAME expiration=202002 currency=643 ErrorCode=0 ErrorMessage=Успешно Pan=XXXXXX**XXXX Вложение: Вложение: Вложение:
|
Автор: | dimOn [ 15 янв 2018, 12:15 ] |
Заголовок сообщения: | Re: Отправка чека на email |
Ну то есть мыла там не приходит. А зачем сбербанк пишет, что вышлет чек, если вы не через него печатать чеки хотите, а на своей стороне? |
Автор: | dimOn [ 15 янв 2018, 12:17 ] |
Заголовок сообщения: | Re: Отправка чека на email |
вот же в настройках модуля есть sberbank.fiscalization.customer.address.enable Включение запроса поля customerAddress при оплате sberbank.fiscalization.customer.address.title Текст поля customerAddress в ЛК, по умолчанию "Укажите E-mail или номер сотового для отправки чека". sberbank.fiscalization.customer.address.required Требование заполнения поля customerAddress при оплате После этого можно в скрипте получить через ContractModuleConfigDao, как в примерах на вики написано http://wiki.bitel.ru/index.php/%D0%9F%D ... 0%B5%D0%B9 |
Автор: | simka [ 15 янв 2018, 12:44 ] |
Заголовок сообщения: | Re: Отправка чека на email |
Код: вот же в настройках модуля есть Это где же? Ни в документации, ни в шаблоне конфигурации модуля Сбербанк нет. При установке этих параметров в ЛК не появляется поле для ввода email. Код: #Включение запроса поля customerAddress при оплате sberbank.fiscalization.customer.address.enable=true #Текст поля customerAddress в ЛК, по умолчанию "Укажите E-mail или номер сотового для отправки чека". sberbank.fiscalization.customer.address.title=Укажите E-mail для отправки чека #Требование заполнения поля customerAddress при оплате sberbank.fiscalization.customer.address.required=true Подскажите, что не так? |
Автор: | dimOn [ 15 янв 2018, 17:01 ] |
Заголовок сообщения: | Re: Отправка чека на email |
извините, ввёл в заблуждение, в 6.2 этого действительно нет |
Автор: | simka [ 15 янв 2018, 17:10 ] |
Заголовок сообщения: | Re: Отправка чека на email |
Так все-таки как нам быть? Как узнать email, чтобы отправлять чеки через свою кассу? |
Автор: | dimOn [ 15 янв 2018, 17:33 ] |
Заголовок сообщения: | Re: Отправка чека на email |
Ну видимо никак не узнать в текущей реализации. Нужно дождаться разработчика модуля, возможно можно накатить это в 6.2 или может туда приходит всё же мыло в каком-то виде. |
Автор: | simka [ 15 янв 2018, 18:40 ] |
Заголовок сообщения: | Re: Отправка чека на email |
А когда появиться разработчик модуля? |
Страница 1 из 1 | Часовой пояс: UTC + 5 часов [ Летнее время ] |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |