BiTel

Форум BiTel
bgbilling.ru     docs.bitel.ru     wiki.bitel.ru     dbinfo.bitel.ru     bgcrm.ru     billing.bitel.ru     bitel.ru    
Текущее время: 29 мар 2024, 03:48

Часовой пояс: UTC + 5 часов [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 11 ] 
Автор Сообщение
 Заголовок сообщения: Отправка чека на email
СообщениеДобавлено: 12 янв 2018, 14:57 
Не в сети

Зарегистрирован: 23 дек 2015, 18:07
Сообщения: 31
Карма: 0
У нас установлен модуль 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());
         }
      }
   }
}

_________________
Код:
 Сервер: вер. 6.2.1213 / 04.05.2018 12:58:54
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_171


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Отправка чека на email
СообщениеДобавлено: 12 янв 2018, 19:21 
Не в сети
Аватара пользователя

Зарегистрирован: 30 май 2008, 15:51
Сообщения: 6055
Карма: 244
а в биллинг этот емайл вообще приходит в каком-то виде? в логах, каментах или где-то отображается?

_________________
I'm clever. I've got a computer.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Отправка чека на email
СообщениеДобавлено: 12 янв 2018, 19:22 
Не в сети
Аватара пользователя

Зарегистрирован: 30 май 2008, 15:51
Сообщения: 6055
Карма: 244
в модуле сбербанк в ЛК разве нет поля для ввода мыла/телефона для отправки электронного чека?

_________________
I'm clever. I've got a computer.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Отправка чека на email
СообщениеДобавлено: 15 янв 2018, 11:58 
Не в сети

Зарегистрирован: 23 дек 2015, 18:07
Сообщения: 31
Карма: 0
Код:
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

Вложение:
Комментарий к файлу: Скрин из ЛК
sberbank1.png
sberbank1.png [ 19.96 КБ | Просмотров: 5558 ]

Вложение:
Комментарий к файлу: Скрин из ЛК
sberbank2.png
sberbank2.png [ 53.33 КБ | Просмотров: 5558 ]

Вложение:
Комментарий к файлу: страница Сбербанка
sberbank3.png
sberbank3.png [ 22.02 КБ | Просмотров: 5558 ]

_________________
Код:
 Сервер: вер. 6.2.1213 / 04.05.2018 12:58:54
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_171


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Отправка чека на email
СообщениеДобавлено: 15 янв 2018, 12:15 
Не в сети
Аватара пользователя

Зарегистрирован: 30 май 2008, 15:51
Сообщения: 6055
Карма: 244
Ну то есть мыла там не приходит.
А зачем сбербанк пишет, что вышлет чек, если вы не через него печатать чеки хотите, а на своей стороне?

_________________
I'm clever. I've got a computer.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Отправка чека на email
СообщениеДобавлено: 15 янв 2018, 12:17 
Не в сети
Аватара пользователя

Зарегистрирован: 30 май 2008, 15:51
Сообщения: 6055
Карма: 244
вот же в настройках модуля есть

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

_________________
I'm clever. I've got a computer.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Отправка чека на email
СообщениеДобавлено: 15 янв 2018, 12:44 
Не в сети

Зарегистрирован: 23 дек 2015, 18:07
Сообщения: 31
Карма: 0
Код:
вот же в настройках модуля есть

Это где же? Ни в документации, ни в шаблоне конфигурации модуля Сбербанк нет.
При установке этих параметров в ЛК не появляется поле для ввода 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

Подскажите, что не так?

_________________
Код:
 Сервер: вер. 6.2.1213 / 04.05.2018 12:58:54
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_171


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Отправка чека на email
СообщениеДобавлено: 15 янв 2018, 17:01 
Не в сети
Аватара пользователя

Зарегистрирован: 30 май 2008, 15:51
Сообщения: 6055
Карма: 244
извините, ввёл в заблуждение, в 6.2 этого действительно нет

_________________
I'm clever. I've got a computer.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Отправка чека на email
СообщениеДобавлено: 15 янв 2018, 17:10 
Не в сети

Зарегистрирован: 23 дек 2015, 18:07
Сообщения: 31
Карма: 0
Так все-таки как нам быть? Как узнать email, чтобы отправлять чеки через свою кассу?

_________________
Код:
 Сервер: вер. 6.2.1213 / 04.05.2018 12:58:54
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_171


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Отправка чека на email
СообщениеДобавлено: 15 янв 2018, 17:33 
Не в сети
Аватара пользователя

Зарегистрирован: 30 май 2008, 15:51
Сообщения: 6055
Карма: 244
Ну видимо никак не узнать в текущей реализации.
Нужно дождаться разработчика модуля, возможно можно накатить это в 6.2 или может туда приходит всё же мыло в каком-то виде.

_________________
I'm clever. I've got a computer.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Отправка чека на email
СообщениеДобавлено: 15 янв 2018, 18:40 
Не в сети

Зарегистрирован: 23 дек 2015, 18:07
Сообщения: 31
Карма: 0
А когда появиться разработчик модуля?

_________________
Код:
 Сервер: вер. 6.2.1213 / 04.05.2018 12:58:54
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_171


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 11 ] 

Часовой пояс: UTC + 5 часов [ Летнее время ]


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

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


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
POWERED_BY
Русская поддержка phpBB
[ Time : 0.162s | 43 Queries | GZIP : On ]