WiFi-портал с оплатой картой через assist

Материал из BiTel WiKi

Версия от 05:03, 21 марта 2017; Stark (Обсуждение | вклад)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск
package ru.bitel.saha.script.wifi;
 
import ru.bitel.bgbilling.kernel.event.Event;
import ru.bitel.bgbilling.kernel.script.server.dev.EventScriptBase;
import ru.bitel.bgbilling.server.util.Setup;
import ru.bitel.common.sql.ConnectionSet;
import ru.bitel.bgbilling.kernel.wifi.common.event.WiFiActivateEvent;
import ru.bitel.bgbilling.common.BGException;
import bitel.billing.server.contract.bean.ContractManager;
import bitel.billing.server.contract.bean.Contract;
import java.util.Date;
import java.util.Calendar;
import org.apache.log4j.Logger;
import ru.bitel.bgbilling.kernel.container.managed.ServerContext;
import ru.bitel.bgbilling.modules.inet.api.common.service.InetServService;
import java.util.List;
import ru.bitel.bgbilling.modules.inet.api.common.bean.InetServ;
import bitel.billing.server.contract.bean.ContractParameterManager;
import java.sql.PreparedStatement;
import bitel.billing.common.TimeUtils;
import java.sql.ResultSet;
import ru.bitel.bgbilling.kernel.event.events.ContractParamChangedEvent;
import bitel.billing.server.contract.bean.CommentPatternManager; 
import ru.bitel.bgbilling.kernel.network.sms.Smsc;
import ru.bitel.common.Utils;
import java.math.BigDecimal;
import bitel.billing.server.util.PswdGen;
import ru.bitel.bgbilling.server.util.Setup;
import java.net.URLEncoder;
 
 
public class Activation
	extends EventScriptBase<WiFiActivateEvent>
{
	static final Logger logger = Logger.getLogger( Activation.class );
 
	private static final int CONTRACT_PATTERN_GOROD_ID = 6;
	private static final int INET_MODULE_ID = 1;
	private static final int PHONE_PARAM_ID = 5;
	//private static final int FIO_PARAM_ID = 4;
	private static final Object mutexGorod = new Object();
 
	//
	private static String STAT_PATH = "http://host/bgbilling/webexecuter";
 
	private static String PORTAL_PATH = "http://host:9090/auth/activate.do?";
 
	private static String MESSAGE_SUCCESS = "Ваша оплата прошла успешно";
	private static String MESSAGE_FAIL = "Возникли проблемы при оплате";
 
 
	@Override
	public void onEvent( WiFiActivateEvent event, Setup setup, ConnectionSet connectionSet )
		throws Exception
	{
		String phone =      event.getParams().get( "phone" );
		print( "phone=" + phone ); 
 
        if ( phone == null || phone.trim().length() != 10 )
        {
        	event.setError( "Вы должны ввести 10-чный номер" );
        	return;             
		}
 
		phone = "+7" + phone.trim();
 
 
 
		activateGorod( event, 	connectionSet, phone/*, fio	*/);
 
 
	}
 
 
 
	private void activateGorod( WiFiActivateEvent event, 	ConnectionSet connectionSet, String phone/*, String fio */)
	{
		synchronized (mutexGorod )
		{
			try
			{
 
				print( "WiFi Activation Gorod" );
 
				String sumStr = event.getParams().get( "sum" );
				BigDecimal sum =  Utils.parseBigDecimal( sumStr, BigDecimal.ZERO );
				if( sum == null || sum.equals(BigDecimal.ZERO)  )
				{ 
					event.setError( "Вы должны ввести сумму в рублях" );
        			return;   
        		}
 
        		String passwd = PswdGen.generatePassword( Setup.getSetup() );
 
				ContractManager contractManager = new ContractManager( connectionSet.getConnection() );
				Contract contract = contractManager.createFromPattern( CONTRACT_PATTERN_GOROD_ID, null, Calendar.getInstance(), passwd );
				if ( contract == null )
				{
					print( "договор не создан" );
					event.setError( "Ошибка, обратитесь к администратору" );
					return; 
				}	
 
				ContractParameterManager paramManager = new ContractParameterManager( connectionSet.getConnection() );
				if ( !Utils.isEmptyString( phone ) )
				{				
        			paramManager.updateStringParam( contract.getId(), PHONE_PARAM_ID, phone, 0);
            		//чтобы title договора поменялся                
            		new CommentPatternManager( connectionSet.getConnection() ).updateContractComment( contract.getId() );
				}		
 
				ServerContext context = ServerContext.get();
				InetServService wsServ = context.getService( InetServService.class, INET_MODULE_ID );
 
				List<InetServ> servList = wsServ.inetServList( contract.getId() );
				//Сервис с логином пароля настроен уже в шаблоне договора, его не надо создавать
				if ( servList.size() == 0 )
				{
					print( "сервис не создан" );
					event.setError( "Ошибка, обратитесь к администратору" );
					return;
				}   
				InetServ serv = servList.get( 0 );
 
				print( "Contract created with title = " + contract.getTitle() + ";id=" + contract.getId() );					
 
 
				String payUrl = STAT_PATH + "?action=Pay&mid=6&module=assist&contractId=" + contract.getId() + 
				"&user=" + contract.getTitle() +"&pswd=" + contract.getPswd() + "&midAuth=0&summ=" + sum +
				"&url_ok=" + URLEncoder.encode( PORTAL_PATH + "method=remoteSuccess&message=" +  MESSAGE_SUCCESS, "utf8" ) + 
				"&url_no=" + URLEncoder.encode( PORTAL_PATH + "method=remoteSuccess&message=" +  MESSAGE_FAIL, "utf8") ;
 
				print( "url=" + payUrl );
				event.setPayUrl( payUrl );
 
			}
			catch( Exception ex  )
        	{
        		logger.error( ex.getMessage(), ex );            
            	event.setError( "Ошибка, обратитесь к администратору" );
			}
		}						
	}	
}
Личные инструменты