protected internal override void stageExecute(SalePostContext context) { long? stan; Scheme scheme = context.getScheme(); if (scheme == null) { //throw new EndpointException("Context Scheme not yet defined"); } stan = scheme.createStan(context.saleBuild().Timestamp); //Logger.info("STAN generated for sale: " + stan); context.saleBuild().setSTAN(scheme.AuthScheme, stan); nextStg(context); }
protected internal override void stageExecute(SalePostContext context) { SaleRepo.SaleBuilder builder = context.saleBuild(); SalePostRequest request = context.Request; AcceptorDetail defaultAcceptorDetail = builder.Terminal.DefaultAcceptorDetail; AcceptorDetail dynamicAcceptor; if (request.hasDynamicAcceptor()) { // So we have dynamic acceptor details provided, try to use. dynamicAcceptor = _acceptorUtil.obtainExplicitAcceptor(builder.Terminal, request.getDynamicAcceptorName(), request.getDynamicAcceptorStreet(), request.getDynamicAcceptorCity(), request.getDynamicAcceptorState(), request.getDynamicAcceptorPostalCode(), request.getDynamicAcceptorCustomerServicePhone(), request.getDynamicAcceptorSubMerchantId(), defaultAcceptorDetail.CustomerServiceEmail); if (dynamicAcceptor != null) { //Logger.info("Dynamic Acceptor associated: " + dynamicAcceptor); builder.ExplictAcceptor = dynamicAcceptor; } else { //Logger.warn("Ignoring supplied Dynamic Acceptor"); } } else { //Logger.warn("No Dynamic Acceptor - doing nothing"); } nextStg(context); }
public override void stageExecute(SalePostContext context) { SaleRepo.SaleBuilder builder = context.saleBuild(); PANRange binRange = builder.getCard().getPANRange(); Scheme scheme = schemeCheck.getSchemeFromPanRange(binRange); if ((binRange == null) || (scheme == null)) { // TODO: Throw exception rather than this? context.Response.ResponseCode = ResponseCode.NO_BIN_FOR_CARD_NUMBER; return; } else { //Logger.info("Scheme: " + scheme.AuthScheme); context.Scheme = scheme; } CardDate cardExpiryDate = builder.Card.ExpiryDate; if (cardExpiryDate == null) { //Logger.warn("Card expiry date is outside of maximum limit"); context.Response.ResponseCode = ResponseCode.CARD_EXPIRY_DATE_INVALID; return; } nextStage(context); }
public override void stageExecute(SalePostContext context) { SaleRepo.SaleBuilder saleBuilder; SalePostRequest request = context.Request; saleBuilder = context.saleBuild(); saleBuilder.setBID(request.getBID()).setMID(request.getTerminalMID()).setTID(request.getTerminalTID()); nextStage(context); }
public override void stageExecute(SalePostContext context) { CardRepo_CardBuilder cardBuilder; SalePostRequest request = context.Request; cardBuilder = context.saleBuild().cardBuilder(); cardBuilder.setNumber(cardUtility.buildCardNumber(request.getCardNumber())).setIssueDate(cardUtility.buildCardDate(request.getCardDateIssue())).setExpiryDate(cardUtility.buildCardDate(request.getCardDateExpiry())).setAVSData(cardUtility.buildAVSData(request.getCardAddress(), request.getCardPostalCode())).setCVV(request.getCardCVV()); nextStage(context); throw new NotImplementedException(); }
protected internal override void stageExecute(SalePostContext context) { SaleRepo.AuthenticationDataBuilder authDataBuilder; SalePostRequest request = context.Request; //if (request.getAuthenticationECIFlag()!= null) //{ authDataBuilder = context.saleBuild().authenticationDataBuilder(); authDataBuilder.setECIFlag(request.getAuthenticationECIFlag()).setXID(request.getAuthenticationXID()).setACSData(request.getAuthenticationACSData()).set3DsVersion(request.getAuthentication3DsVersion()).setDsTransId(request.getAuthenticationDsTransId()); //} nextStg(context); }
public override void stageExecute(SalePostContext context) { SaleRepo.SaleBuilder saleBuilder; SalePostRequest request = context.Request; saleBuilder = context.saleBuild(); saleBuilder.setGatewayRef(request.getGatewayReference()).setAuthType(request.getAuthType()).setCurrencyAmount(request.getAmount(), request.getCurrency()).setRecurrenceFlag(request.getRecurrenceFlag()).setExemptionIndicator(request.getExemptionIndicator()); //Logger.info("Gateway Reference: " + request.GatewayReference); //Logger.info("Sale AuthType: " + request.AuthType + ", Recurrence: " + request.RecurrenceFlag); //Logger.info("Amount: " + request.Amount + " " + request.Currency.name()); //Logger.info("Exemption Indicator: " + request.ExemptionIndicator); nextStage(context); }
public override void stageExecute(SalePostContext context) { SaleRepo.SaleBuilder saleBuilder; SalePostRequest request = context.Request; saleBuilder = context.saleBuild(); if ((!string.ReferenceEquals(request.getRecipientSurname(), null)) || (request.getRecipientDOB() != null) || (!string.ReferenceEquals(request.getRecipientSurname(), null)) || (!string.ReferenceEquals(request.getDynamicAcceptorSubMerchantId(), null))) { SaleRepo.FundsRecipientBuilder recipBuilder = saleBuilder.fundsRecipientBuilder(); recipBuilder.setSurname(request.getRecipientSurname()).setDoB(request.getRecipientDOB()).setPostalCode(request.getRecipientPostalCode()).setAccountNumber(request.getRecipientAccountNumber()); } nextStage(context); }
protected internal override void stageExecute(SalePostContext context) { SaleRepo.SaleBuilder builder = context.saleBuild(); SalePostRequest request = context.Request; string softDescriptor = request.getSoftDescriptor(); if (!string.ReferenceEquals(softDescriptor, null)) { //Logger.info("Setting Soft Desciptor on Sale: " + softDescriptor); builder.SoftDescriptor = softDescriptor; } nextStg(context); }
protected internal override void stageExecute(SalePostContext context) { Terminal_Lock @lock = null; try { Sale sale = context.saleBuild().createdSale(); Terminal terminal = sale.Terminal; @lock = terminal.@lock(sale.Id.ToString(), sale.Card, context.getScheme().AuthScheme); if (@lock != null) { // Have the lock.. continue on. //Logger.info("Locked terminal"); context.setTerminalStatistics(@lock.CardStatistics, @lock.SchemeStatistics); nextStg(context); } else { // Cannot get lock - Not an error - Already locked, so indicate undesired // concurrency. //Logger.warn("Failed to lock terminal"); context.responseBuilder().ResponseCode = ResponseCode.CONCURRENT_AUTHS; } } finally { if (@lock != null) { Action action; ResponseCode responseCode; responseCode = context.responseBuilder().ResponseCode; if (responseCode != null) { //action = responseCode.Action; action = Action.APPROVE; } else { //Logger.warn("No scheme result"); action = Action.DO_NOT_ACCEPT; } //Logger.info("Unlocking, recording Action: {}", action.name()); @lock.unlock(action); } } }
protected internal override void stageExecute(SalePostContext context) { SaleRepo.SaleBuilder saleBuilder = context.saleBuild(); SalePostRequest request = context.Request; if (String.IsNullOrEmpty(request.getAuthMode().ToString())) { //Logger.info("Setting Sale auth mode to default:" + defaultAuthMode); //saleBuilder.AuthMode = DefaultAuthMode; saleBuilder.AuthMode = AuthMode.FINAL; } else { //Logger.info("Setting Sale auth mode to:" + request.AuthMode); saleBuilder.AuthMode = request.getAuthMode(); } nextStg(context); }
protected internal override void stageExecute(SalePostContext context) { Terminal terminal; terminal = context.saleBuild().Terminal; if (terminal == null) { //Logger.warn("Terminal not found"); context.Response.ResponseCode = ResponseCode.INVALID_TERMINAL; } else if (terminal.Status != TerminalStatus.LIVE) { //Logger.warn("Terminal is not live"); context.Response.ResponseCode = ResponseCode.TERMINAL_NOT_LIVE; } else { //Logger.info("Terminal found."); nextStg(context); } }
public override void stageExecute(SalePostContext context) { SalePostResponse response = context.Response; SaleRepo.SaleBuilder saleBuilder = context.saleBuild(); PANRange binRange = null; Card card = saleBuilder.Card; ResponseCode?failureResponseCode = null;; if (card != null) { binRange = card.PANRange; } if (binRange != null) { Terminal terminal = saleBuilder.Terminal; if (terminal != null) { failureResponseCode = checkSchemeFundsRecipient(binRange, terminal, saleBuilder.FundsRecipient, binRange.Scheme, saleBuilder.DebtRepayFlag); } else { //Logger.warn("Sale doesn't have associated terminal = " + "Cannot perform Funds recipient check"); } } else { //Logger.info("Not performing FundsRecipient check - Not a VISA/Mastercard card"); } //nextStage(context); if (failureResponseCode.HasValue) { response.ResponseCode = (ResponseCode)failureResponseCode; } else { nextStage(context); } }
//public override void Invoke(SalePostContext context) //{ // bool createFailed = true; // SaleBuilder saleBuilder; // nextStage(context); // saleBuilder = context.saleBuild(); // if (saleBuilder.createdSale() == null) // { // //Logger.warn("Sale was not stored - Creating Failed Sale"); // } // else if (context.responseBuilder().createdResponse() == null) // { // //Logger.warn("SaleAuthResponse was not stored - Creating Failed Sale"); // } // else // { // createFailed = false; // } // if (createFailed) // { // SalePostRequest request; // ResponseCode responseCode; // FailedSaleBuilder failedSaleBuilder = saleBuilder.failedSaleBuilder(); // responseCode = context.Response.ResponseCode; // if (responseCode == null) // { // // Oh - Don't have anything, set a sensible default... // responseCode = ResponseCode.UNKNOWN; // context.Response.ResponseCode = responseCode; // } // request = context.Request; // failedSaleBuilder.setAuthScheme(saleBuilder.AuthScheme).setResponseCode(responseCode).setGatewayRef(request.getGatewayReference()).setAuthType((request.getAuthType() != null) ? request.getAuthType().ToString() : null).setAmount(request.getAmount()).setCurrencyCode((request.getCurrency() != null) ? request.getCurrency().ToString() : null).setRecurrenceFlag((request.getRecurrenceFlag() != null) ? request.getRecurrenceFlag().ToString() : null).setTerminalBID(request.getBID()).setTerminalMID(request.getTerminalMID()).setTerminalTID(request.getTerminalTID()).setCardNumber(request.getCardNumber()).setCardDateIssue(request.getCardDateIssue()).setCardDateExpiry(request.getCardDateExpiry()).setCardAddress(request.getCardAddress()).setCardPostalCode(request.getCardPostalCode()).setAuthentECI(request.getAuthenticationECIFlag()).setAuthentXID(request.getAuthenticationXID()).setAuthentACS(request.getAuthenticationACSData()).setAuthent3DsVersion(request.getAuthentication3DsVersion()).setAuthMode((request.getAuthMode() != null) ? request.getAuthMode().ToString() : null).setDebtRepayFlag(saleBuilder.getDebtRepayFlag()); // long? failedSaleId = failedSaleBuilder.create(); // //Logger.warn("Failed sale stored with Id: " + failedSaleId); // } //} protected internal override void stageExecute(SalePostContext context) { bool createFailed = true; SaleBuilder saleBuilder; nextStg(context); saleBuilder = context.saleBuild(); if (saleBuilder.createdSale() == null) { //Logger.warn("Sale was not stored - Creating Failed Sale"); } else if (context.responseBuilder().createdResponse() == null) { //Logger.warn("SaleAuthResponse was not stored - Creating Failed Sale"); } else { createFailed = false; } if (createFailed) { SalePostRequest request; ResponseCode responseCode; FailedSaleBuilder failedSaleBuilder = saleBuilder.failedSaleBuilder(); responseCode = context.Response.ResponseCode; if (responseCode == null) { // Oh - Don't have anything, set a sensible default... responseCode = ResponseCode.UNKNOWN; context.Response.ResponseCode = responseCode; } request = context.Request; failedSaleBuilder.setAuthScheme(saleBuilder.AuthScheme).setResponseCode(responseCode).setGatewayRef(request.getGatewayReference()).setAuthType((request.getAuthType() != null) ? request.getAuthType().ToString() : null).setAmount(request.getAmount()).setCurrencyCode((request.getCurrency() != null) ? request.getCurrency().ToString() : null).setRecurrenceFlag((request.getRecurrenceFlag() != null) ? request.getRecurrenceFlag().ToString() : null).setTerminalBID(request.getBID()).setTerminalMID(request.getTerminalMID()).setTerminalTID(request.getTerminalTID()).setCardNumber(request.getCardNumber()).setCardDateIssue(request.getCardDateIssue()).setCardDateExpiry(request.getCardDateExpiry()).setCardAddress(request.getCardAddress()).setCardPostalCode(request.getCardPostalCode()).setAuthentECI(request.getAuthenticationECIFlag()).setAuthentXID(request.getAuthenticationXID()).setAuthentACS(request.getAuthenticationACSData()).setAuthent3DsVersion(request.getAuthentication3DsVersion()).setAuthMode((request.getAuthMode() != null) ? request.getAuthMode().ToString() : null).setDebtRepayFlag(saleBuilder.getDebtRepayFlag()); long?failedSaleId = failedSaleBuilder.create(); //Logger.warn("Failed sale stored with Id: " + failedSaleId); } }
public override void stageExecute(SalePostContext context) { bool isDebtRepayTrans; ResponseCode errorCode; SaleRepo.SaleBuilder saleBuilder = context.saleBuild(); Card card = saleBuilder.Card; bool debtRepaymentProfileFlag = context.Request.getDebtRepayFlag(); Terminal terminal = saleBuilder.Terminal; errorCode = debtRepaymentSetUpUtility.checkDebtRepayFlag(card, debtRepaymentProfileFlag, terminal); isDebtRepayTrans = debtRepaymentSetUpUtility.isDebtRepaymentTrans(card, terminal, debtRepaymentProfileFlag); if (errorCode != null) { context.Response.ResponseCode = errorCode; } else { //Logger.info("Setting debt repayment flag: " + isDebtRepayTrans); saleBuilder.DebtRepayFlag = isDebtRepayTrans; nextStage(context); } }
public override void stageExecute(SalePostContext context) { ActionStatistics schemeStats = context.getTerminalSchemeStatitics(); AuthScheme scheme = context.saleBuild().AuthScheme; if ((scheme != null) && (schemeStats != null)) { if (terminalStatsCheckUtility.isUnderThreshold(schemeStats, scheme)) { nextStage(context); } else { // Over threshold and approval rate too low - Block the transaction. context.responseBuilder().ResponseCode = ResponseCode.SCHEME_AUTH_LIMIT_REACHED; } } else { // Cannot get stats, can't guarantee won't exceed limits, so have to decline. //Logger.error("Cannot get scheme statistics, or determine scheme - " + "Rejecting transaction"); context.responseBuilder().ResponseCode = ResponseCode.COULD_NOT_CHECK_AUTH_LIMIT; } }