From dc75a20b2b515fc94553ea0f24075f62d325523d Mon Sep 17 00:00:00 2001 From: Egor Cherniak Date: Fri, 26 Sep 2025 17:00:11 +0300 Subject: [PATCH] Bump damsel proto --- .github/workflows/deploy.yml | 1 + pom.xml | 6 +- .../controller/ThreeDsCallbackController.java | 6 - .../entry/RecCtxToEntryModelConverter.java | 150 ------------------ ...itModelToRecTokenProxyResultConverter.java | 54 ------- .../flow/RecurrentResultIntentResolver.java | 10 -- ...GenerateTokenResultIntentResolverImpl.java | 27 ---- ...rectGenerateTokenResultIntentResolver.java | 28 ---- ...rtedGenerateTokenResultIntentResolver.java | 16 -- .../lib/handler/ProxyProviderServiceImpl.java | 21 +-- .../handler/ServerHandlerLogDecorator.java | 33 +--- .../handler/ServerHandlerMdcDecorator.java | 26 +-- .../RecurrentTokenCallbackHandler.java | 43 ----- .../flow/lib/logback/mdc/MdcContext.java | 11 -- .../flow/lib/service/CardDataService.java | 5 - .../service/CardDataServiceDefaultImpl.java | 8 - .../CardDataServiceWithHolderNamesImpl.java | 12 -- .../lib/service/TemporaryContextService.java | 7 - .../lib/service/ThreeDsAdapterService.java | 5 - .../factory/RecurrentIntentResultFactory.java | 17 -- ...tentResultForwardThreeDsParamsFactory.java | 85 ---------- .../SimpleRecurrentIntentResultFactory.java | 91 ----------- .../lib/flow/AbstractGenerateTokenTest.java | 71 +-------- .../flow/lib/flow/config/HandlerConfig.java | 61 +------ .../full/three/ds/GenerateToken3ds1Test.java | 101 ------------ .../three/ds/GenerateTokenNon3dsTest.java | 74 --------- .../ds/config/FullThreeDsFlowConfig.java | 29 ---- .../QrRedirectWithPollingDsFlowConfig.java | 15 -- ...SimpleRedirectWithPollingDsFlowConfig.java | 28 ---- .../adapter/flow/lib/flow/utils/MockUtil.java | 31 ---- ...ardDataServiceWithHolderNamesImplTest.java | 23 --- 31 files changed, 25 insertions(+), 1070 deletions(-) delete mode 100644 src/main/java/dev/vality/adapter/flow/lib/converter/entry/RecCtxToEntryModelConverter.java delete mode 100644 src/main/java/dev/vality/adapter/flow/lib/converter/exit/ExitModelToRecTokenProxyResultConverter.java delete mode 100644 src/main/java/dev/vality/adapter/flow/lib/flow/RecurrentResultIntentResolver.java delete mode 100644 src/main/java/dev/vality/adapter/flow/lib/flow/full/GenerateTokenResultIntentResolverImpl.java delete mode 100644 src/main/java/dev/vality/adapter/flow/lib/flow/simple/SimpleRedirectGenerateTokenResultIntentResolver.java delete mode 100644 src/main/java/dev/vality/adapter/flow/lib/flow/simple/UnsupportedGenerateTokenResultIntentResolver.java delete mode 100644 src/main/java/dev/vality/adapter/flow/lib/handler/callback/RecurrentTokenCallbackHandler.java delete mode 100644 src/main/java/dev/vality/adapter/flow/lib/service/factory/RecurrentIntentResultFactory.java delete mode 100644 src/main/java/dev/vality/adapter/flow/lib/service/factory/RecurrentIntentResultForwardThreeDsParamsFactory.java delete mode 100644 src/main/java/dev/vality/adapter/flow/lib/service/factory/SimpleRecurrentIntentResultFactory.java delete mode 100644 src/test/java/dev/vality/adapter/flow/lib/flow/full/three/ds/GenerateToken3ds1Test.java delete mode 100644 src/test/java/dev/vality/adapter/flow/lib/flow/full/three/ds/GenerateTokenNon3dsTest.java diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 3ccda4e..ae4af79 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -5,6 +5,7 @@ on: branches: - 'master' - 'main' + - 'epic/**' jobs: deploy: diff --git a/pom.xml b/pom.xml index 5130501..f37b17c 100644 --- a/pom.xml +++ b/pom.xml @@ -12,7 +12,7 @@ adapter-flow-lib - 1.0.4 + 1.1.0 jar adapter-flow-lib @@ -46,7 +46,7 @@ UTF-8 2.0.0 1.20-be9cdeb - 1.654-ab44b9d + 1.670-1d0c1ec 3.12.0 1.15 1.7.36 @@ -60,7 +60,7 @@ 6.1.6 3.3.1 1.66-01353ce - 2.0.0 + 3.0.0 diff --git a/src/main/java/dev/vality/adapter/flow/lib/controller/ThreeDsCallbackController.java b/src/main/java/dev/vality/adapter/flow/lib/controller/ThreeDsCallbackController.java index 4027f64..fb09b0d 100644 --- a/src/main/java/dev/vality/adapter/flow/lib/controller/ThreeDsCallbackController.java +++ b/src/main/java/dev/vality/adapter/flow/lib/controller/ThreeDsCallbackController.java @@ -22,10 +22,4 @@ public String receivePaymentIncomingParameters(HttpServletRequest servletRequest HttpServletResponse servletResponse) { return this.threeDsAdapterService.receivePaymentIncomingParameters(servletRequest, servletResponse); } - - @PostMapping({"recurrent-term-url"}) - public String receiveRecurrentIncomingParameters(HttpServletRequest servletRequest, - HttpServletResponse servletResponse) { - return this.threeDsAdapterService.receiveRecurrentIncomingParameters(servletRequest, servletResponse); - } } \ No newline at end of file diff --git a/src/main/java/dev/vality/adapter/flow/lib/converter/entry/RecCtxToEntryModelConverter.java b/src/main/java/dev/vality/adapter/flow/lib/converter/entry/RecCtxToEntryModelConverter.java deleted file mode 100644 index 31dff69..0000000 --- a/src/main/java/dev/vality/adapter/flow/lib/converter/entry/RecCtxToEntryModelConverter.java +++ /dev/null @@ -1,150 +0,0 @@ -package dev.vality.adapter.flow.lib.converter.entry; - -import dev.vality.adapter.common.cds.CdsStorageClient; -import dev.vality.adapter.common.cds.model.CardDataProxyModel; -import dev.vality.adapter.common.damsel.ProxyProviderPackageCreators; -import dev.vality.adapter.common.damsel.ProxyProviderPackageExtractors; -import dev.vality.adapter.flow.lib.constant.MetaData; -import dev.vality.adapter.flow.lib.model.*; -import dev.vality.adapter.flow.lib.serde.TemporaryContextDeserializer; -import dev.vality.adapter.flow.lib.service.CardDataService; -import dev.vality.adapter.flow.lib.service.IdGenerator; -import dev.vality.adapter.flow.lib.service.TemporaryContextService; -import dev.vality.adapter.flow.lib.utils.CardDataUtils; -import dev.vality.cds.storage.Auth3DS; -import dev.vality.cds.storage.CardData; -import dev.vality.cds.storage.SessionData; -import dev.vality.damsel.domain.BankCard; -import dev.vality.damsel.domain.DisposablePaymentResource; -import dev.vality.damsel.domain.PaymentTool; -import dev.vality.damsel.domain.TransactionInfo; -import dev.vality.damsel.proxy_provider.RecurrentPaymentTool; -import dev.vality.damsel.proxy_provider.RecurrentTokenContext; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.springframework.core.convert.converter.Converter; - -import java.util.HashMap; - -@Slf4j -@RequiredArgsConstructor -public class RecCtxToEntryModelConverter implements Converter { - - private final TemporaryContextDeserializer temporaryContextDeserializer; - private final CdsStorageClient cdsStorageClient; - private final IdGenerator idGenerator; - private final TemporaryContextService temporaryContextService; - private final CardDataService cardDataService; - - @Override - public EntryStateModel convert(RecurrentTokenContext context) { - var generalExitStateModel = temporaryContextService.getTemporaryContext( - context, temporaryContextDeserializer); - var tokenInfo = context.getTokenInfo(); - var recurrentPaymentTool = tokenInfo.getPaymentTool(); - var paymentResource = recurrentPaymentTool.getPaymentResource(); - var paymentTool = paymentResource.getPaymentTool(); - validatePaymentTool(paymentTool); - var entryStateModelBuilder = EntryStateModel.builder(); - var cardData = initCardData(context, generalExitStateModel, paymentResource); - var mobilePaymentData = initMobilePaymentData(context, generalExitStateModel); - - TransactionInfo transactionInfo = tokenInfo.getTrx(); - String invoiceFormatPaymentId = tokenInfo.getPaymentTool().getId(); - Long orderId = idGenerator.get(invoiceFormatPaymentId); - var temporaryContext = temporaryContextService.getTemporaryContext(context, temporaryContextDeserializer); - - return entryStateModelBuilder - .baseRequestModel(BaseRequestModel.builder() - .recurrentPaymentData(RecurrentPaymentData - .builder() - .makeRecurrent(true) - .recToken(transactionInfo != null && transactionInfo.getExtra() != null - ? transactionInfo.getExtra().get(MetaData.META_REC_TOKEN) - : null) - .build()) - .mobilePaymentData(mobilePaymentData) - .cardData(cardData) - .refundData(initRefundData(recurrentPaymentTool, orderId)) - .paymentId(orderId) - .invoiceFormatPaymentId(invoiceFormatPaymentId) - .currency(Currency.builder() - .name(recurrentPaymentTool.getMinimalPaymentCost().getCurrency().getName()) - .symbolicCode( - recurrentPaymentTool.getMinimalPaymentCost().getCurrency().getSymbolicCode()) - .numericCode( - recurrentPaymentTool.getMinimalPaymentCost().getCurrency().getNumericCode()) - .exponent(recurrentPaymentTool.getMinimalPaymentCost().getCurrency().getExponent()) - .build() - ) - .amount(recurrentPaymentTool.getMinimalPaymentCost().getAmount()) - .details(recurrentPaymentTool.getId()) - .payerInfo(PayerInfo.builder() - .ip(ProxyProviderPackageCreators.extractIpAddress(context)) - .build()) - .adapterConfigurations(context.getOptions()) - .providerTrxId(transactionInfo != null ? transactionInfo.getId() : null) - .savedData(transactionInfo == null || transactionInfo.getExtra() == null - ? new HashMap<>() - : transactionInfo.getExtra()) - .threeDsDataFromMpiCallback(temporaryContext.getThreeDsData()) - .build()) - .currentStep(generalExitStateModel.getNextStep()) - .startedPollingInfo(temporaryContext.getPollingInfo()) - .build(); - } - - private dev.vality.adapter.flow.lib.model.CardData initCardData(RecurrentTokenContext context, - TemporaryContext generalExitStateModel, - DisposablePaymentResource paymentResource) { - var cardDataBuilder = dev.vality.adapter.flow.lib.model.CardData.builder(); - if (generalExitStateModel == null || generalExitStateModel.getNextStep() == null) { - SessionData sessionData = cdsStorageClient.getSessionData(context); - if (!sessionData.getAuthData().isSetAuth3ds()) { - CardDataProxyModel cardData = getCardData(context, paymentResource); - cardDataBuilder.cardHolder(cardData.getCardholderName()) - .pan(cardData.getPan()) - .cvv2(CardDataUtils.extractCvv2(sessionData)) - .expYear(cardData.getExpYear()) - .expMonth(cardData.getExpMonth()) - .cardToken(ProxyProviderPackageExtractors.extractBankCardToken(paymentResource)); - } - } - return cardDataBuilder.build(); - } - - private MobilePaymentData initMobilePaymentData(RecurrentTokenContext context, - TemporaryContext generalExitStateModel) { - MobilePaymentData.MobilePaymentDataBuilder mobilePaymentDataBuilder = MobilePaymentData.builder(); - if (generalExitStateModel == null || generalExitStateModel.getNextStep() == null) { - SessionData sessionData = cdsStorageClient.getSessionData(context); - if (sessionData.getAuthData().isSetAuth3ds()) { - Auth3DS auth3ds = sessionData.getAuthData().getAuth3ds(); - mobilePaymentDataBuilder.cryptogram(auth3ds.getCryptogram()) - .eci(auth3ds.getEci()); - } - } - return mobilePaymentDataBuilder.build(); - } - - private void validatePaymentTool(PaymentTool paymentTool) { - if (!paymentTool.isSetBankCard()) { - throw new IllegalArgumentException("Wrong recurrentPaymentTool. It should be bank card"); - } - } - - private RefundData initRefundData(RecurrentPaymentTool recurrentPaymentTool, Long orderId) { - return RefundData.builder() - .id(String.valueOf(orderId)) - .amount(recurrentPaymentTool.getMinimalPaymentCost().getAmount()) - .build(); - } - - private CardDataProxyModel getCardData(RecurrentTokenContext context, DisposablePaymentResource paymentResource) { - String cardToken = ProxyProviderPackageExtractors.extractBankCardToken(paymentResource); - CardData cardData = cdsStorageClient.getCardData(cardToken); - BankCard bankCard = ProxyProviderPackageExtractors.extractBankCard(context); - return cardDataService.getCardDataProxyModel(context, cardData, bankCard); - } - -} diff --git a/src/main/java/dev/vality/adapter/flow/lib/converter/exit/ExitModelToRecTokenProxyResultConverter.java b/src/main/java/dev/vality/adapter/flow/lib/converter/exit/ExitModelToRecTokenProxyResultConverter.java deleted file mode 100644 index 438ff57..0000000 --- a/src/main/java/dev/vality/adapter/flow/lib/converter/exit/ExitModelToRecTokenProxyResultConverter.java +++ /dev/null @@ -1,54 +0,0 @@ -package dev.vality.adapter.flow.lib.converter.exit; - -import dev.vality.adapter.flow.lib.converter.ExitStateModelToTemporaryContextConverter; -import dev.vality.adapter.flow.lib.flow.RecurrentResultIntentResolver; -import dev.vality.adapter.flow.lib.model.ExitStateModel; -import dev.vality.adapter.flow.lib.serde.TemporaryContextSerializer; -import dev.vality.adapter.flow.lib.service.factory.SimpleRecurrentIntentResultFactory; -import dev.vality.adapter.flow.lib.utils.AdditionalInfoUtils; -import dev.vality.damsel.domain.TransactionInfo; -import dev.vality.damsel.proxy_provider.RecurrentTokenIntent; -import dev.vality.damsel.proxy_provider.RecurrentTokenProxyResult; -import lombok.RequiredArgsConstructor; -import org.springframework.core.convert.converter.Converter; -import org.springframework.util.StringUtils; - -import java.util.HashMap; - -@RequiredArgsConstructor -public class ExitModelToRecTokenProxyResultConverter implements Converter { - - private final SimpleRecurrentIntentResultFactory recurrentIntentResultFactory; - private final TemporaryContextSerializer serializer; - private final RecurrentResultIntentResolver recurrentResultIntentResolver; - private final ExitStateModelToTemporaryContextConverter contextConverter; - - @Override - public RecurrentTokenProxyResult convert(ExitStateModel exitStateModel) { - if (exitStateModel.getErrorCode() != null) { - return new RecurrentTokenProxyResult( - recurrentIntentResultFactory.createFinishIntentFailed( - exitStateModel.getErrorCode(), - exitStateModel.getErrorMessage())) - .setTrx(StringUtils.hasText(exitStateModel.getProviderTrxId()) - ? getTransactionInfo(exitStateModel) - : null); - } - - RecurrentTokenIntent intent = recurrentResultIntentResolver.initIntentByStep(exitStateModel); - - return new RecurrentTokenProxyResult(intent) - .setNextState(serializer.writeByte(contextConverter.convert(exitStateModel))) - .setTrx(getTransactionInfo(exitStateModel)); - } - - private TransactionInfo getTransactionInfo(ExitStateModel exitStateModel) { - return new TransactionInfo() - .setId(exitStateModel.getProviderTrxId()) - .setExtra(exitStateModel.getTrxExtra() != null - ? exitStateModel.getTrxExtra() - : new HashMap<>()) - .setAdditionalInfo(AdditionalInfoUtils.initAdditionalTrxInfo(exitStateModel)); - } -} - diff --git a/src/main/java/dev/vality/adapter/flow/lib/flow/RecurrentResultIntentResolver.java b/src/main/java/dev/vality/adapter/flow/lib/flow/RecurrentResultIntentResolver.java deleted file mode 100644 index 7e4c729..0000000 --- a/src/main/java/dev/vality/adapter/flow/lib/flow/RecurrentResultIntentResolver.java +++ /dev/null @@ -1,10 +0,0 @@ -package dev.vality.adapter.flow.lib.flow; - -import dev.vality.adapter.flow.lib.model.ExitStateModel; -import dev.vality.damsel.proxy_provider.RecurrentTokenIntent; - -public interface RecurrentResultIntentResolver { - - RecurrentTokenIntent initIntentByStep(ExitStateModel exitStateModel); - -} diff --git a/src/main/java/dev/vality/adapter/flow/lib/flow/full/GenerateTokenResultIntentResolverImpl.java b/src/main/java/dev/vality/adapter/flow/lib/flow/full/GenerateTokenResultIntentResolverImpl.java deleted file mode 100644 index 40e995c..0000000 --- a/src/main/java/dev/vality/adapter/flow/lib/flow/full/GenerateTokenResultIntentResolverImpl.java +++ /dev/null @@ -1,27 +0,0 @@ -package dev.vality.adapter.flow.lib.flow.full; - -import dev.vality.adapter.flow.lib.constant.Step; -import dev.vality.adapter.flow.lib.flow.RecurrentResultIntentResolver; -import dev.vality.adapter.flow.lib.model.ExitStateModel; -import dev.vality.adapter.flow.lib.service.factory.SimpleRecurrentIntentResultFactory; -import dev.vality.damsel.proxy_provider.RecurrentTokenIntent; -import lombok.RequiredArgsConstructor; - -@RequiredArgsConstructor -public class GenerateTokenResultIntentResolverImpl implements RecurrentResultIntentResolver { - - private final SimpleRecurrentIntentResultFactory recurrentIntentResultFactory; - - @Override - public RecurrentTokenIntent initIntentByStep(ExitStateModel exitStateModel) { - Step nextStep = exitStateModel.getNextStep(); - return switch (nextStep) { - case REFUND, CAPTURE -> recurrentIntentResultFactory.createSleepIntentForReinvocation(); - case FINISH_THREE_DS_V1, FINISH_THREE_DS_V2 -> recurrentIntentResultFactory.createIntentWithSuspension( - exitStateModel); - case DO_NOTHING -> recurrentIntentResultFactory.createFinishIntent(exitStateModel.getRecToken()); - default -> throw new IllegalStateException("Wrong state: " + nextStep); - }; - } - -} diff --git a/src/main/java/dev/vality/adapter/flow/lib/flow/simple/SimpleRedirectGenerateTokenResultIntentResolver.java b/src/main/java/dev/vality/adapter/flow/lib/flow/simple/SimpleRedirectGenerateTokenResultIntentResolver.java deleted file mode 100644 index 05e9337..0000000 --- a/src/main/java/dev/vality/adapter/flow/lib/flow/simple/SimpleRedirectGenerateTokenResultIntentResolver.java +++ /dev/null @@ -1,28 +0,0 @@ -package dev.vality.adapter.flow.lib.flow.simple; - -import dev.vality.adapter.flow.lib.constant.Step; -import dev.vality.adapter.flow.lib.flow.RecurrentResultIntentResolver; -import dev.vality.adapter.flow.lib.model.ExitStateModel; -import dev.vality.adapter.flow.lib.service.factory.SimpleRecurrentIntentResultFactory; -import dev.vality.damsel.proxy_provider.RecurrentTokenIntent; -import lombok.RequiredArgsConstructor; - -@RequiredArgsConstructor -public class SimpleRedirectGenerateTokenResultIntentResolver implements RecurrentResultIntentResolver { - - private final SimpleRecurrentIntentResultFactory recurrentIntentResultFactory; - - @Override - public RecurrentTokenIntent initIntentByStep(ExitStateModel exitStateModel) { - Step nextStep = exitStateModel.getNextStep(); - Step currentStep = exitStateModel.getEntryStateModel().getCurrentStep(); - return switch (nextStep) { - case CHECK_STATUS -> currentStep == Step.GENERATE_TOKEN - ? recurrentIntentResultFactory.createIntentWithSuspension(exitStateModel) - : recurrentIntentResultFactory.createSleepIntentWithExponentialPolling(exitStateModel); - case DO_NOTHING -> recurrentIntentResultFactory.createFinishIntent(exitStateModel.getRecToken()); - default -> throw new IllegalStateException("Wrong state: " + nextStep); - }; - } - -} diff --git a/src/main/java/dev/vality/adapter/flow/lib/flow/simple/UnsupportedGenerateTokenResultIntentResolver.java b/src/main/java/dev/vality/adapter/flow/lib/flow/simple/UnsupportedGenerateTokenResultIntentResolver.java deleted file mode 100644 index 56067e5..0000000 --- a/src/main/java/dev/vality/adapter/flow/lib/flow/simple/UnsupportedGenerateTokenResultIntentResolver.java +++ /dev/null @@ -1,16 +0,0 @@ -package dev.vality.adapter.flow.lib.flow.simple; - -import dev.vality.adapter.flow.lib.flow.RecurrentResultIntentResolver; -import dev.vality.adapter.flow.lib.model.ExitStateModel; -import dev.vality.damsel.proxy_provider.RecurrentTokenIntent; -import lombok.RequiredArgsConstructor; - -@RequiredArgsConstructor -public class UnsupportedGenerateTokenResultIntentResolver implements RecurrentResultIntentResolver { - - @Override - public RecurrentTokenIntent initIntentByStep(ExitStateModel exitStateModel) { - throw new UnsupportedOperationException(); - } - -} diff --git a/src/main/java/dev/vality/adapter/flow/lib/handler/ProxyProviderServiceImpl.java b/src/main/java/dev/vality/adapter/flow/lib/handler/ProxyProviderServiceImpl.java index 52fe9aa..fd8a935 100644 --- a/src/main/java/dev/vality/adapter/flow/lib/handler/ProxyProviderServiceImpl.java +++ b/src/main/java/dev/vality/adapter/flow/lib/handler/ProxyProviderServiceImpl.java @@ -2,7 +2,10 @@ import dev.vality.adapter.flow.lib.handler.callback.CallbackHandler; import dev.vality.adapter.flow.lib.validator.AdapterConfigurationValidator; -import dev.vality.damsel.proxy_provider.*; +import dev.vality.damsel.proxy_provider.PaymentCallbackResult; +import dev.vality.damsel.proxy_provider.PaymentContext; +import dev.vality.damsel.proxy_provider.PaymentProxyResult; +import dev.vality.damsel.proxy_provider.ProviderProxySrv; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.thrift.TException; @@ -14,25 +17,9 @@ public class ProxyProviderServiceImpl implements ProviderProxySrv.Iface { private final CallbackHandler paymentCallbackHandler; - private final CallbackHandler recurrentTokenCallbackHandler; private final ServerFlowHandler serverFlowHandler; - private final ServerFlowHandler generateTokenFlowHandler; private final AdapterConfigurationValidator adapterConfigurationValidator; - @Override - public RecurrentTokenProxyResult generateToken(RecurrentTokenContext context) throws TException { - adapterConfigurationValidator.validate(context.getOptions()); - return generateTokenFlowHandler.handle(context); - } - - @Override - public RecurrentTokenCallbackResult handleRecurrentTokenCallback( - ByteBuffer byteBuffer, - RecurrentTokenContext context - ) throws TException { - return recurrentTokenCallbackHandler.handleCallback(byteBuffer, context); - } - @Override public PaymentProxyResult processPayment(PaymentContext context) throws TException { adapterConfigurationValidator.validate(context.getOptions()); diff --git a/src/main/java/dev/vality/adapter/flow/lib/handler/ServerHandlerLogDecorator.java b/src/main/java/dev/vality/adapter/flow/lib/handler/ServerHandlerLogDecorator.java index d43e179..c8367dc 100644 --- a/src/main/java/dev/vality/adapter/flow/lib/handler/ServerHandlerLogDecorator.java +++ b/src/main/java/dev/vality/adapter/flow/lib/handler/ServerHandlerLogDecorator.java @@ -1,14 +1,18 @@ package dev.vality.adapter.flow.lib.handler; import dev.vality.adapter.flow.lib.utils.PaymentResourceTypeResolver; -import dev.vality.damsel.proxy_provider.*; +import dev.vality.damsel.proxy_provider.PaymentCallbackResult; +import dev.vality.damsel.proxy_provider.PaymentContext; +import dev.vality.damsel.proxy_provider.PaymentProxyResult; +import dev.vality.damsel.proxy_provider.ProviderProxySrv; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.thrift.TException; import java.nio.ByteBuffer; -import static dev.vality.adapter.common.damsel.ProxyProviderPackageExtractors.*; +import static dev.vality.adapter.common.damsel.ProxyProviderPackageExtractors.extractInvoiceId; +import static dev.vality.adapter.common.damsel.ProxyProviderPackageExtractors.extractTargetInvoicePaymentStatus; import static dev.vality.adapter.common.damsel.ProxyProviderVerification.isUndefinedResultOrUnavailable; @Slf4j @@ -17,31 +21,6 @@ public class ServerHandlerLogDecorator implements ProviderProxySrv.Iface { private final ProviderProxySrv.Iface handler; - @Override - public RecurrentTokenProxyResult generateToken(RecurrentTokenContext context) throws TException { - String recurrentId = extractRecurrentId(context); - log.info("Generate token started with recurrentId {}", recurrentId); - try { - RecurrentTokenProxyResult proxyResult = handler.generateToken(context); - log.info("Generate token finished {} with recurrentId {}", proxyResult, recurrentId); - return proxyResult; - } catch (Exception ex) { - String message = "Failed handle generate token with recurrentId " + recurrentId; - logMessage(ex, message); - throw ex; - } - } - - @Override - public RecurrentTokenCallbackResult handleRecurrentTokenCallback(ByteBuffer byteBuffer, - RecurrentTokenContext context) throws TException { - String recurrentId = extractRecurrentId(context); - log.info("handleRecurrentTokenCallback: start with recurrentId {}", recurrentId); - RecurrentTokenCallbackResult result = handler.handleRecurrentTokenCallback(byteBuffer, context); - log.info("handleRecurrentTokenCallback end {} with recurrentId {}", result, recurrentId); - return result; - } - @Override public PaymentProxyResult processPayment(PaymentContext context) throws TException { String invoiceId = extractInvoiceId(context); diff --git a/src/main/java/dev/vality/adapter/flow/lib/handler/ServerHandlerMdcDecorator.java b/src/main/java/dev/vality/adapter/flow/lib/handler/ServerHandlerMdcDecorator.java index cb25faf..6ed5253 100644 --- a/src/main/java/dev/vality/adapter/flow/lib/handler/ServerHandlerMdcDecorator.java +++ b/src/main/java/dev/vality/adapter/flow/lib/handler/ServerHandlerMdcDecorator.java @@ -1,7 +1,10 @@ package dev.vality.adapter.flow.lib.handler; import dev.vality.adapter.flow.lib.logback.mdc.MdcContext; -import dev.vality.damsel.proxy_provider.*; +import dev.vality.damsel.proxy_provider.PaymentCallbackResult; +import dev.vality.damsel.proxy_provider.PaymentContext; +import dev.vality.damsel.proxy_provider.PaymentProxyResult; +import dev.vality.damsel.proxy_provider.ProviderProxySrv; import lombok.RequiredArgsConstructor; import org.apache.thrift.TException; import org.slf4j.MDC; @@ -13,27 +16,6 @@ public class ServerHandlerMdcDecorator implements ProviderProxySrv.Iface { private final ProviderProxySrv.Iface serverHandlerLogDecorator; - public RecurrentTokenProxyResult generateToken(RecurrentTokenContext recurrentTokenContext) throws TException { - MdcContext.mdcPutContext(recurrentTokenContext); - try { - return serverHandlerLogDecorator.generateToken(recurrentTokenContext); - } finally { - MDC.clear(); - } - } - - @Override - public RecurrentTokenCallbackResult handleRecurrentTokenCallback(ByteBuffer byteBuffer, - RecurrentTokenContext recurrentTokenContext) - throws TException { - MdcContext.mdcPutContext(recurrentTokenContext); - try { - return serverHandlerLogDecorator.handleRecurrentTokenCallback(byteBuffer, recurrentTokenContext); - } finally { - MDC.clear(); - } - } - @Override public PaymentProxyResult processPayment(PaymentContext paymentContext) throws TException { MdcContext.mdcPutContext(paymentContext); diff --git a/src/main/java/dev/vality/adapter/flow/lib/handler/callback/RecurrentTokenCallbackHandler.java b/src/main/java/dev/vality/adapter/flow/lib/handler/callback/RecurrentTokenCallbackHandler.java deleted file mode 100644 index d8c0ac3..0000000 --- a/src/main/java/dev/vality/adapter/flow/lib/handler/callback/RecurrentTokenCallbackHandler.java +++ /dev/null @@ -1,43 +0,0 @@ -package dev.vality.adapter.flow.lib.handler.callback; - -import dev.vality.adapter.common.damsel.BasePackageCreators; -import dev.vality.adapter.common.damsel.ProxyProviderPackageCreators; -import dev.vality.adapter.flow.lib.model.TemporaryContext; -import dev.vality.adapter.flow.lib.serde.Deserializer; -import dev.vality.adapter.flow.lib.serde.StateSerializer; -import dev.vality.adapter.flow.lib.service.TemporaryContextService; -import dev.vality.damsel.proxy_provider.RecurrentTokenCallbackResult; -import dev.vality.damsel.proxy_provider.RecurrentTokenContext; -import dev.vality.damsel.proxy_provider.RecurrentTokenIntent; -import dev.vality.damsel.proxy_provider.RecurrentTokenProxyResult; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; - -import java.nio.ByteBuffer; - -@Slf4j -@RequiredArgsConstructor -public class RecurrentTokenCallbackHandler - implements CallbackHandler { - - private final Deserializer adapterDeserializer; - private final StateSerializer adapterSerializer; - private final TemporaryContextService temporaryContextService; - - public RecurrentTokenCallbackResult handleCallback(ByteBuffer callback, RecurrentTokenContext context) { - var generalExitStateModel = initTemporaryContext(callback, context); - byte[] callbackResponse = new byte[0]; - return ProxyProviderPackageCreators.createRecurrentTokenCallbackResult(callbackResponse, - (new RecurrentTokenProxyResult()).setIntent(RecurrentTokenIntent - .sleep(ProxyProviderPackageCreators.createSleepIntent( - BasePackageCreators.createTimerTimeout(0)))) - .setNextState(this.adapterSerializer.writeByte(generalExitStateModel)) - ); - } - - private TemporaryContext initTemporaryContext(ByteBuffer callback, RecurrentTokenContext context) { - var temporaryContext = temporaryContextService.getTemporaryContext(context, this.adapterDeserializer); - return temporaryContextService.appendThreeDsParametersToContext(callback, temporaryContext); - } - -} \ No newline at end of file diff --git a/src/main/java/dev/vality/adapter/flow/lib/logback/mdc/MdcContext.java b/src/main/java/dev/vality/adapter/flow/lib/logback/mdc/MdcContext.java index e121807..ee3788f 100644 --- a/src/main/java/dev/vality/adapter/flow/lib/logback/mdc/MdcContext.java +++ b/src/main/java/dev/vality/adapter/flow/lib/logback/mdc/MdcContext.java @@ -2,7 +2,6 @@ import dev.vality.damsel.domain.TransactionInfo; import dev.vality.damsel.proxy_provider.PaymentContext; -import dev.vality.damsel.proxy_provider.RecurrentTokenContext; import lombok.AccessLevel; import lombok.NoArgsConstructor; import org.slf4j.MDC; @@ -13,11 +12,6 @@ @NoArgsConstructor(access = AccessLevel.PRIVATE) public class MdcContext { - public static void mdcPutContext(RecurrentTokenContext context, String[] fieldsToPutInMdc) { - TransactionInfo transactionInfo = context.getTokenInfo().getTrx(); - mdcPutContextTransactionInfo(transactionInfo, fieldsToPutInMdc); - } - public static void mdcPutContext(PaymentContext context, String[] fieldsToPutInMdc) { TransactionInfo transactionInfo = context.getPaymentInfo().getPayment().getTrx(); mdcPutContextTransactionInfo(transactionInfo, fieldsToPutInMdc); @@ -28,11 +22,6 @@ public static void mdcPutContext(PaymentContext context) { mdcPutContextTransactionInfo(transactionInfo); } - public static void mdcPutContext(RecurrentTokenContext context) { - TransactionInfo transactionInfo = context.getTokenInfo().getTrx(); - mdcPutContextTransactionInfo(transactionInfo); - } - public static void mdcPutContextTransactionInfo(TransactionInfo transactionInfo, String[] fieldsToPutInMdc) { if (transactionInfo != null) { Map trxextra = transactionInfo.getExtra(); diff --git a/src/main/java/dev/vality/adapter/flow/lib/service/CardDataService.java b/src/main/java/dev/vality/adapter/flow/lib/service/CardDataService.java index dc0ce73..cd26a0d 100644 --- a/src/main/java/dev/vality/adapter/flow/lib/service/CardDataService.java +++ b/src/main/java/dev/vality/adapter/flow/lib/service/CardDataService.java @@ -4,15 +4,10 @@ import dev.vality.cds.storage.CardData; import dev.vality.damsel.domain.BankCard; import dev.vality.damsel.proxy_provider.PaymentContext; -import dev.vality.damsel.proxy_provider.RecurrentTokenContext; public interface CardDataService { - CardDataProxyModel getCardDataProxyModel(RecurrentTokenContext context, - CardData cardData, - BankCard bankCard); - CardDataProxyModel getCardDataProxyModel(PaymentContext context, CardData cardData, BankCard bankCard); CardDataProxyModel getCardDataProxyModelFromCds(PaymentContext context); diff --git a/src/main/java/dev/vality/adapter/flow/lib/service/CardDataServiceDefaultImpl.java b/src/main/java/dev/vality/adapter/flow/lib/service/CardDataServiceDefaultImpl.java index 9614e6c..1b3e84b 100644 --- a/src/main/java/dev/vality/adapter/flow/lib/service/CardDataServiceDefaultImpl.java +++ b/src/main/java/dev/vality/adapter/flow/lib/service/CardDataServiceDefaultImpl.java @@ -6,7 +6,6 @@ import dev.vality.cds.storage.CardData; import dev.vality.damsel.domain.BankCard; import dev.vality.damsel.proxy_provider.PaymentContext; -import dev.vality.damsel.proxy_provider.RecurrentTokenContext; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -16,13 +15,6 @@ public class CardDataServiceDefaultImpl implements CardDataService { private final CdsStorageClient cdsStorageClient; - @Override - public CardDataProxyModel getCardDataProxyModel(RecurrentTokenContext context, - CardData cardData, - BankCard bankCard) { - return BankCardExtractor.initCardDataProxyModel(bankCard, cardData); - } - @Override public CardDataProxyModel getCardDataProxyModel(PaymentContext context, CardData cardData, BankCard bankCard) { return BankCardExtractor.initCardDataProxyModel(bankCard, cardData); diff --git a/src/main/java/dev/vality/adapter/flow/lib/service/CardDataServiceWithHolderNamesImpl.java b/src/main/java/dev/vality/adapter/flow/lib/service/CardDataServiceWithHolderNamesImpl.java index 3a173ab..d68ca14 100644 --- a/src/main/java/dev/vality/adapter/flow/lib/service/CardDataServiceWithHolderNamesImpl.java +++ b/src/main/java/dev/vality/adapter/flow/lib/service/CardDataServiceWithHolderNamesImpl.java @@ -7,7 +7,6 @@ import dev.vality.cds.storage.CardData; import dev.vality.damsel.domain.BankCard; import dev.vality.damsel.proxy_provider.PaymentContext; -import dev.vality.damsel.proxy_provider.RecurrentTokenContext; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -18,17 +17,6 @@ public class CardDataServiceWithHolderNamesImpl implements CardDataService { private final CdsStorageClient cdsStorageClient; private final CardHolderNamesService cardHolderNamesService; - @Override - public CardDataProxyModel getCardDataProxyModel(RecurrentTokenContext context, - CardData cardData, - BankCard bankCard) { - if (context.getOptions().containsKey(OptionFields.CARD_HOLDER_FROM_FILE.name())) { - return BankCardExtractor.initCardDataProxyModel(bankCard, cardData, - cardHolderNamesService.getCardHoldersNames()); - } - return BankCardExtractor.initCardDataProxyModel(bankCard, cardData); - } - @Override public CardDataProxyModel getCardDataProxyModel(PaymentContext context, CardData cardData, BankCard bankCard) { if (context.getOptions().containsKey(OptionFields.CARD_HOLDER_FROM_FILE.name())) { diff --git a/src/main/java/dev/vality/adapter/flow/lib/service/TemporaryContextService.java b/src/main/java/dev/vality/adapter/flow/lib/service/TemporaryContextService.java index d491ad3..3d1be9a 100644 --- a/src/main/java/dev/vality/adapter/flow/lib/service/TemporaryContextService.java +++ b/src/main/java/dev/vality/adapter/flow/lib/service/TemporaryContextService.java @@ -4,7 +4,6 @@ import dev.vality.adapter.flow.lib.serde.Deserializer; import dev.vality.adapter.flow.lib.serde.ParametersDeserializer; import dev.vality.damsel.proxy_provider.PaymentContext; -import dev.vality.damsel.proxy_provider.RecurrentTokenContext; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -42,12 +41,6 @@ public TemporaryContext appendThreeDsParametersToContext(ByteBuffer callback, Te } private static byte[] getState(Object context) { - if (context instanceof RecurrentTokenContext) { - if (((RecurrentTokenContext) context).getSession() == null) { - return new byte[0]; - } - return ((RecurrentTokenContext) context).getSession().getState(); - } return ((PaymentContext) context).getSession().getState(); } diff --git a/src/main/java/dev/vality/adapter/flow/lib/service/ThreeDsAdapterService.java b/src/main/java/dev/vality/adapter/flow/lib/service/ThreeDsAdapterService.java index 6c74228..47d0e08 100644 --- a/src/main/java/dev/vality/adapter/flow/lib/service/ThreeDsAdapterService.java +++ b/src/main/java/dev/vality/adapter/flow/lib/service/ThreeDsAdapterService.java @@ -29,11 +29,6 @@ public String receivePaymentIncomingParameters(HttpServletRequest servletRequest return this.processCallback(servletRequest, servletResponse, hellgateClient::processPaymentCallback); } - public String receiveRecurrentIncomingParameters(HttpServletRequest servletRequest, - HttpServletResponse servletResponse) { - return this.processCallback(servletRequest, servletResponse, hellgateClient::processRecurrentTokenCallback); - } - private String processCallback(HttpServletRequest servletRequest, HttpServletResponse servletResponse, BiFunction hgFunction) { diff --git a/src/main/java/dev/vality/adapter/flow/lib/service/factory/RecurrentIntentResultFactory.java b/src/main/java/dev/vality/adapter/flow/lib/service/factory/RecurrentIntentResultFactory.java deleted file mode 100644 index 52b8638..0000000 --- a/src/main/java/dev/vality/adapter/flow/lib/service/factory/RecurrentIntentResultFactory.java +++ /dev/null @@ -1,17 +0,0 @@ -package dev.vality.adapter.flow.lib.service.factory; - -import dev.vality.adapter.flow.lib.model.ExitStateModel; -import dev.vality.damsel.proxy_provider.RecurrentTokenIntent; - -public interface RecurrentIntentResultFactory { - - RecurrentTokenIntent createIntentWithSuspension(ExitStateModel exitStateModel); - - RecurrentTokenIntent createSleepIntentForReinvocation(); - - RecurrentTokenIntent createSleepIntentWithExponentialPolling(ExitStateModel exitStateModel); - - RecurrentTokenIntent createFinishIntent(String recToken); - - RecurrentTokenIntent createFinishIntentFailed(String errorCode, String errorMessage); -} diff --git a/src/main/java/dev/vality/adapter/flow/lib/service/factory/RecurrentIntentResultForwardThreeDsParamsFactory.java b/src/main/java/dev/vality/adapter/flow/lib/service/factory/RecurrentIntentResultForwardThreeDsParamsFactory.java deleted file mode 100644 index 9349cfa..0000000 --- a/src/main/java/dev/vality/adapter/flow/lib/service/factory/RecurrentIntentResultForwardThreeDsParamsFactory.java +++ /dev/null @@ -1,85 +0,0 @@ -package dev.vality.adapter.flow.lib.service.factory; - -import dev.vality.adapter.common.mapper.ErrorMapping; -import dev.vality.adapter.flow.lib.model.EntryStateModel; -import dev.vality.adapter.flow.lib.model.ExitStateModel; -import dev.vality.adapter.flow.lib.model.PollingInfo; -import dev.vality.adapter.flow.lib.model.ThreeDsData; -import dev.vality.adapter.flow.lib.service.ExponentialBackOffPollingService; -import dev.vality.adapter.flow.lib.service.PollingInfoService; -import dev.vality.adapter.flow.lib.service.TagManagementService; -import dev.vality.adapter.flow.lib.utils.ThreeDsDataInitializer; -import dev.vality.adapter.flow.lib.utils.TimeoutUtils; -import dev.vality.adapter.flow.lib.utils.TimerProperties; -import dev.vality.damsel.base.Timer; -import dev.vality.damsel.proxy_provider.*; -import lombok.RequiredArgsConstructor; - -import java.util.Map; - -import static dev.vality.adapter.common.damsel.OptionsExtractors.extractRedirectTimeout; -import static dev.vality.adapter.common.damsel.ProxyProviderPackageCreators.createPostUserInteraction; -import static dev.vality.adapter.common.damsel.ProxyProviderPackageCreators.createRecurrentTokenStatusSuccess; - -@RequiredArgsConstructor -public class RecurrentIntentResultForwardThreeDsParamsFactory implements RecurrentIntentResultFactory { - - private final TimerProperties timerProperties; - private final TagManagementService tagManagementService; - private final PollingInfoService pollingInfoService; - private final ErrorMapping errorMapping; - private final ExponentialBackOffPollingService exponentialBackOffPollingService; - - @Override - public RecurrentTokenIntent createIntentWithSuspension(ExitStateModel exitStateModel) { - EntryStateModel entryStateModel = exitStateModel.getEntryStateModel(); - ThreeDsData threeDsData = exitStateModel.getThreeDsData(); - Map params = ThreeDsDataInitializer.initThreeDsParameters(exitStateModel); - Map adapterConfigurations = entryStateModel.getBaseRequestModel().getAdapterConfigurations(); - int timerRedirectTimeoutMin = extractRedirectTimeout( - adapterConfigurations, - timerProperties.getRedirectTimeoutMin()); - return RecurrentTokenIntent.suspend( - new SuspendIntent( - tagManagementService.findTag(params), - Timer.timeout(TimeoutUtils.toSeconds(timerRedirectTimeoutMin)) - ).setUserInteraction(createPostUserInteraction(threeDsData.getAcsUrl(), params)) - ); - } - - @Override - public RecurrentTokenIntent createSleepIntentForReinvocation() { - return RecurrentTokenIntent.sleep(new SleepIntent(Timer.timeout(0))); - } - - @Override - public RecurrentTokenIntent createSleepIntentWithExponentialPolling(ExitStateModel exitStateModel) { - EntryStateModel entryStateModel = exitStateModel.getEntryStateModel(); - PollingInfo pollingInfo = pollingInfoService.initPollingInfo(entryStateModel); - if (pollingInfoService.isDeadline(pollingInfo)) { - return createFinishIntentFailed("Sleep timeout", "Max time pool limit reached"); - } - exitStateModel.setPollingInfo(pollingInfo); - - Map adapterConfigurations = entryStateModel.getBaseRequestModel().getAdapterConfigurations(); - int nextTimeoutSec = - exponentialBackOffPollingService.prepareNextPollingInterval(pollingInfo, adapterConfigurations); - return RecurrentTokenIntent.sleep( - new SleepIntent(Timer.timeout(nextTimeoutSec)) - ); - } - - @Override - public RecurrentTokenIntent createFinishIntent(String recToken) { - return RecurrentTokenIntent.finish( - createRecurrentTokenStatusSuccess(recToken) - ); - } - - @Override - public RecurrentTokenIntent createFinishIntentFailed(String errorCode, String errorMessage) { - return RecurrentTokenIntent.finish(new RecurrentTokenFinishIntent(RecurrentTokenFinishStatus.failure( - errorMapping.mapFailure(errorCode, errorMessage))) - ); - } -} diff --git a/src/main/java/dev/vality/adapter/flow/lib/service/factory/SimpleRecurrentIntentResultFactory.java b/src/main/java/dev/vality/adapter/flow/lib/service/factory/SimpleRecurrentIntentResultFactory.java deleted file mode 100644 index 01b1837..0000000 --- a/src/main/java/dev/vality/adapter/flow/lib/service/factory/SimpleRecurrentIntentResultFactory.java +++ /dev/null @@ -1,91 +0,0 @@ -package dev.vality.adapter.flow.lib.service.factory; - -import dev.vality.adapter.common.mapper.ErrorMapping; -import dev.vality.adapter.flow.lib.constant.RedirectFields; -import dev.vality.adapter.flow.lib.model.EntryStateModel; -import dev.vality.adapter.flow.lib.model.ExitStateModel; -import dev.vality.adapter.flow.lib.model.PollingInfo; -import dev.vality.adapter.flow.lib.model.ThreeDsData; -import dev.vality.adapter.flow.lib.service.CallbackUrlExtractor; -import dev.vality.adapter.flow.lib.service.ExponentialBackOffPollingService; -import dev.vality.adapter.flow.lib.service.PollingInfoService; -import dev.vality.adapter.flow.lib.service.TagManagementService; -import dev.vality.adapter.flow.lib.utils.ThreeDsDataInitializer; -import dev.vality.adapter.flow.lib.utils.TimeoutUtils; -import dev.vality.adapter.flow.lib.utils.TimerProperties; -import dev.vality.damsel.base.Timer; -import dev.vality.damsel.proxy_provider.*; -import lombok.RequiredArgsConstructor; - -import java.util.Map; - -import static dev.vality.adapter.common.damsel.OptionsExtractors.extractRedirectTimeout; -import static dev.vality.adapter.common.damsel.ProxyProviderPackageCreators.createPostUserInteraction; -import static dev.vality.adapter.common.damsel.ProxyProviderPackageCreators.createRecurrentTokenStatusSuccess; - -@RequiredArgsConstructor -public class SimpleRecurrentIntentResultFactory implements RecurrentIntentResultFactory { - - private final TimerProperties timerProperties; - private final CallbackUrlExtractor callbackUrlExtractor; - private final TagManagementService tagManagementService; - private final PollingInfoService pollingInfoService; - private final ErrorMapping errorMapping; - private final ExponentialBackOffPollingService exponentialBackOffPollingService; - - @Override - public RecurrentTokenIntent createIntentWithSuspension(ExitStateModel exitStateModel) { - EntryStateModel entryStateModel = exitStateModel.getEntryStateModel(); - ThreeDsData threeDsData = exitStateModel.getThreeDsData(); - Map params = ThreeDsDataInitializer.initThreeDsParameters(exitStateModel); - String redirectUrl = entryStateModel.getBaseRequestModel().getSuccessRedirectUrl(); - Map adapterConfigurations = entryStateModel.getBaseRequestModel().getAdapterConfigurations(); - params.put(RedirectFields.TERM_URL.getValue(), - callbackUrlExtractor.extractCallbackUrl(adapterConfigurations, redirectUrl)); - int timerRedirectTimeoutMin = extractRedirectTimeout( - adapterConfigurations, - timerProperties.getRedirectTimeoutMin()); - return RecurrentTokenIntent.suspend( - new SuspendIntent( - tagManagementService.findTag(params), - Timer.timeout(TimeoutUtils.toSeconds(timerRedirectTimeoutMin)) - ).setUserInteraction(createPostUserInteraction(threeDsData.getAcsUrl(), params)) - ); - } - - @Override - public RecurrentTokenIntent createSleepIntentForReinvocation() { - return RecurrentTokenIntent.sleep(new SleepIntent(Timer.timeout(0))); - } - - @Override - public RecurrentTokenIntent createSleepIntentWithExponentialPolling(ExitStateModel exitStateModel) { - EntryStateModel entryStateModel = exitStateModel.getEntryStateModel(); - PollingInfo pollingInfo = pollingInfoService.initPollingInfo(entryStateModel); - if (pollingInfoService.isDeadline(pollingInfo)) { - return createFinishIntentFailed("Sleep timeout", "Max time pool limit reached"); - } - exitStateModel.setPollingInfo(pollingInfo); - - Map adapterConfigurations = entryStateModel.getBaseRequestModel().getAdapterConfigurations(); - int nextTimeoutSec = - exponentialBackOffPollingService.prepareNextPollingInterval(pollingInfo, adapterConfigurations); - return RecurrentTokenIntent.sleep( - new SleepIntent(Timer.timeout(nextTimeoutSec)) - ); - } - - @Override - public RecurrentTokenIntent createFinishIntent(String recToken) { - return RecurrentTokenIntent.finish( - createRecurrentTokenStatusSuccess(recToken) - ); - } - - @Override - public RecurrentTokenIntent createFinishIntentFailed(String errorCode, String errorMessage) { - return RecurrentTokenIntent.finish(new RecurrentTokenFinishIntent(RecurrentTokenFinishStatus.failure( - errorMapping.mapFailure(errorCode, errorMessage))) - ); - } -} diff --git a/src/test/java/dev/vality/adapter/flow/lib/flow/AbstractGenerateTokenTest.java b/src/test/java/dev/vality/adapter/flow/lib/flow/AbstractGenerateTokenTest.java index c835b48..af87716 100644 --- a/src/test/java/dev/vality/adapter/flow/lib/flow/AbstractGenerateTokenTest.java +++ b/src/test/java/dev/vality/adapter/flow/lib/flow/AbstractGenerateTokenTest.java @@ -1,7 +1,6 @@ package dev.vality.adapter.flow.lib.flow; import dev.vality.adapter.common.cds.CdsStorageClient; -import dev.vality.adapter.common.damsel.ProxyProviderVerification; import dev.vality.adapter.common.hellgate.HellgateClient; import dev.vality.adapter.flow.lib.client.RemoteClient; import dev.vality.adapter.flow.lib.constant.Step; @@ -14,7 +13,10 @@ import dev.vality.adapter.flow.lib.service.impl.CallbackUrlExtractorImpl; import dev.vality.adapter.flow.lib.validator.AdapterConfigurationValidator; import dev.vality.bender.BenderSrv; -import dev.vality.damsel.proxy_provider.*; +import dev.vality.damsel.proxy_provider.PaymentCallbackResult; +import dev.vality.damsel.proxy_provider.PaymentContext; +import dev.vality.damsel.proxy_provider.PaymentProxyResult; +import dev.vality.damsel.proxy_provider.ProviderProxySrv; import org.apache.thrift.TException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.mock.mockito.MockBean; @@ -48,59 +50,6 @@ public class AbstractGenerateTokenTest { @Autowired protected ProviderProxySrv.Iface serverHandlerLogDecorator; - protected RecurrentTokenProxyResult checkSuccessAuthOrPay(RecurrentTokenContext paymentContext) throws TException { - RecurrentTokenProxyResult recurrentTokenProxyResult = serverHandlerLogDecorator.generateToken(paymentContext); - assertNotNull(recurrentTokenProxyResult.getTrx().getId()); - assertTrue(recurrentTokenProxyResult.getIntent().isSetSleep()); - assertEquals(Step.CAPTURE, - temporaryContextDeserializer.read(recurrentTokenProxyResult.getNextState()).getNextStep()); - return recurrentTokenProxyResult; - } - - protected RecurrentTokenProxyResult checkSleepWithStatus(Step step, - RecurrentTokenContext recurrentTokenContext, - RecurrentTokenProxyResult recurrentTokenProxyResult, - byte[] state) - throws TException { - recurrentTokenContext.getSession() - .setState(state); - recurrentTokenContext.getTokenInfo().setTrx(recurrentTokenProxyResult.getTrx()); - RecurrentTokenProxyResult paymentProxyResultDeposit = - serverHandlerLogDecorator.generateToken(recurrentTokenContext); - assertTrue(paymentProxyResultDeposit.getIntent().isSetSleep()); - assertEquals(step, temporaryContextDeserializer.read(paymentProxyResultDeposit.getNextState()).getNextStep()); - return paymentProxyResultDeposit; - } - - protected RecurrentTokenProxyResult checkSuccessRefund(RecurrentTokenContext recurrentTokenContext, - RecurrentTokenProxyResult recurrentTokenProxyResult, - byte[] state) - throws TException { - recurrentTokenContext.getSession().setState(state); - recurrentTokenContext.getTokenInfo().setTrx(recurrentTokenProxyResult.getTrx()); - RecurrentTokenProxyResult paymentProxyResultRefunded = - serverHandlerLogDecorator.generateToken(recurrentTokenContext); - assertEquals(paymentProxyResultRefunded.getIntent().getFinish().getStatus().getSuccess(), - new RecurrentTokenSuccess(RECURRENT_TOKEN)); - assertNotNull(paymentProxyResultRefunded.getIntent().getFinish().getStatus().getSuccess().getToken()); - assertEquals(Step.DO_NOTHING, - temporaryContextDeserializer.read(paymentProxyResultRefunded.getNextState()).getNextStep()); - return paymentProxyResultRefunded; - } - - protected RecurrentTokenProxyResult checkSuccessFinishThreeDs(RecurrentTokenContext context, - RecurrentTokenProxyResult proxyResult, - RecurrentTokenCallbackResult paymentCallbackResult) - throws TException { - context.getTokenInfo().setTrx(proxyResult.getTrx()); - context.getSession().setState(paymentCallbackResult.getResult().getNextState()); - RecurrentTokenProxyResult paymentProxyResult = serverHandlerLogDecorator.generateToken(context); - String trxId = paymentProxyResult.getTrx().getId(); - assertTrue(ProxyProviderVerification.isSleep(paymentProxyResult)); - assertEquals(trxId, paymentProxyResult.getTrx().getId()); - return paymentProxyResult; - } - protected PaymentProxyResult checkSuspend(Step step, PaymentContext context, PaymentProxyResult proxyResult, @@ -114,16 +63,4 @@ protected PaymentProxyResult checkSuspend(Step step, assertEquals(step, temporaryContextDeserializer.read(paymentProxyResult.getNextState()).getNextStep()); return paymentProxyResult; } - - protected RecurrentTokenProxyResult processWithDoNothingSuccessResult(RecurrentTokenContext paymentContext, - RecurrentTokenProxyResult paymentProxyResult) - throws TException { - paymentContext.getSession().setState(paymentProxyResult.getNextState()); - RecurrentTokenProxyResult recurrentTokenProxyResult = serverHandlerLogDecorator.generateToken(paymentContext); - assertTrue(recurrentTokenProxyResult.getIntent().isSetFinish()); - assertTrue(recurrentTokenProxyResult.getIntent().getFinish().getStatus().isSetSuccess()); - assertEquals(Step.DO_NOTHING, - temporaryContextDeserializer.read(recurrentTokenProxyResult.getNextState()).getNextStep()); - return recurrentTokenProxyResult; - } } diff --git a/src/test/java/dev/vality/adapter/flow/lib/flow/config/HandlerConfig.java b/src/test/java/dev/vality/adapter/flow/lib/flow/config/HandlerConfig.java index beb319f..8fd8066 100644 --- a/src/test/java/dev/vality/adapter/flow/lib/flow/config/HandlerConfig.java +++ b/src/test/java/dev/vality/adapter/flow/lib/flow/config/HandlerConfig.java @@ -7,16 +7,12 @@ import dev.vality.adapter.flow.lib.converter.ExitStateModelToTemporaryContextConverter; import dev.vality.adapter.flow.lib.converter.base.EntryModelToBaseRequestModelConverter; import dev.vality.adapter.flow.lib.converter.entry.CtxToEntryModelConverter; -import dev.vality.adapter.flow.lib.converter.entry.RecCtxToEntryModelConverter; import dev.vality.adapter.flow.lib.converter.exit.ExitModelToProxyResultConverter; -import dev.vality.adapter.flow.lib.converter.exit.ExitModelToRecTokenProxyResultConverter; -import dev.vality.adapter.flow.lib.flow.RecurrentResultIntentResolver; import dev.vality.adapter.flow.lib.flow.ResultIntentResolver; import dev.vality.adapter.flow.lib.handler.ProxyProviderServiceImpl; import dev.vality.adapter.flow.lib.handler.ServerFlowHandler; import dev.vality.adapter.flow.lib.handler.ServerHandlerLogDecorator; import dev.vality.adapter.flow.lib.handler.callback.PaymentCallbackHandler; -import dev.vality.adapter.flow.lib.handler.callback.RecurrentTokenCallbackHandler; import dev.vality.adapter.flow.lib.serde.ParametersDeserializer; import dev.vality.adapter.flow.lib.serde.ParametersSerializer; import dev.vality.adapter.flow.lib.serde.TemporaryContextDeserializer; @@ -24,12 +20,13 @@ import dev.vality.adapter.flow.lib.service.*; import dev.vality.adapter.flow.lib.service.factory.IntentResultFactory; import dev.vality.adapter.flow.lib.service.factory.SimpleIntentResultFactory; -import dev.vality.adapter.flow.lib.service.factory.SimpleRecurrentIntentResultFactory; import dev.vality.adapter.flow.lib.utils.AdapterProperties; import dev.vality.adapter.flow.lib.utils.TimerProperties; import dev.vality.adapter.flow.lib.validator.AdapterConfigurationValidator; import dev.vality.bender.BenderSrv; -import dev.vality.damsel.proxy_provider.*; +import dev.vality.damsel.proxy_provider.PaymentContext; +import dev.vality.damsel.proxy_provider.PaymentProxyResult; +import dev.vality.damsel.proxy_provider.ProviderProxySrv; import lombok.RequiredArgsConstructor; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @@ -76,16 +73,6 @@ public PaymentCallbackHandler paymentCallbackHandler(TemporaryContextDeserialize ); } - @Bean - public RecurrentTokenCallbackHandler recurrentTokenCallbackHandler( - TemporaryContextDeserializer adapterDeserializer, - TemporaryContextSerializer temporaryContextSerializer, - TemporaryContextService temporaryContextService) { - return new RecurrentTokenCallbackHandler(adapterDeserializer, - temporaryContextSerializer, - temporaryContextService); - } - @Bean public CardHolderNamesService cardHolderNamesService(AdapterProperties properties) throws IOException { return new CardHolderNamesService(properties); @@ -123,37 +110,11 @@ public AdapterProperties adapterProperties() { return adapterProperties; } - @Bean - public RecCtxToEntryModelConverter recCtxToEntryModelConverter(CdsStorageClient cdsStorageClient, - TemporaryContextDeserializer adapterDeserializer, - IdGenerator idGenerator, - TemporaryContextService temporaryContextService, - CardDataServiceWithHolderNamesImpl cardDataService) { - return new RecCtxToEntryModelConverter(adapterDeserializer, - cdsStorageClient, - idGenerator, - temporaryContextService, - cardDataService); - } - @Bean public ExitStateModelToTemporaryContextConverter exitStateModelToTemporaryContextConverter() { return new ExitStateModelToTemporaryContextConverter(); } - @Bean - public ExitModelToRecTokenProxyResultConverter exitModelToRecTokenProxyResultConverter( - SimpleRecurrentIntentResultFactory recurrentIntentResultFactory, - TemporaryContextSerializer temporaryContextSerializer, - RecurrentResultIntentResolver recurrentResultIntentResolver, - ExitStateModelToTemporaryContextConverter exitStateModelToTemporaryContextConverter) { - return new ExitModelToRecTokenProxyResultConverter(recurrentIntentResultFactory, - temporaryContextSerializer, - recurrentResultIntentResolver, - exitStateModelToTemporaryContextConverter - ); - } - @Bean public ErrorMapping errorMapping() { return new ErrorMapping("", List.of()); @@ -205,15 +166,11 @@ public EntryModelToBaseRequestModelConverter entryModelToBaseRequestModelConvert @Bean public ProviderProxySrv.Iface serverHandlerLogDecorator( PaymentCallbackHandler paymentCallbackHandler, - RecurrentTokenCallbackHandler recurrentTokenCallbackHandler, ServerFlowHandler serverFlowHandler, - ServerFlowHandler generateTokenFlowHandler, AdapterConfigurationValidator paymentContextValidator) { return new ServerHandlerLogDecorator(new ProxyProviderServiceImpl( paymentCallbackHandler, - recurrentTokenCallbackHandler, serverFlowHandler, - generateTokenFlowHandler, paymentContextValidator )); } @@ -236,16 +193,4 @@ public SimpleIntentResultFactory intentResultFactory( parametersSerializer, pollingInfoService, errorMapping, exponentialBackOffPollingService); } - @Bean - public SimpleRecurrentIntentResultFactory recurrentIntentResultFactory( - TimerProperties timerProperties, - CallbackUrlExtractor callbackUrlExtractor, - TagManagementService tagManagementService, - PollingInfoService pollingInfoService, - ErrorMapping errorMapping, - ExponentialBackOffPollingService exponentialBackOffPollingService) { - return new SimpleRecurrentIntentResultFactory(timerProperties, callbackUrlExtractor, tagManagementService, - pollingInfoService, errorMapping, exponentialBackOffPollingService); - } - } diff --git a/src/test/java/dev/vality/adapter/flow/lib/flow/full/three/ds/GenerateToken3ds1Test.java b/src/test/java/dev/vality/adapter/flow/lib/flow/full/three/ds/GenerateToken3ds1Test.java deleted file mode 100644 index f577c4f..0000000 --- a/src/test/java/dev/vality/adapter/flow/lib/flow/full/three/ds/GenerateToken3ds1Test.java +++ /dev/null @@ -1,101 +0,0 @@ -package dev.vality.adapter.flow.lib.flow.full.three.ds; - -import com.fasterxml.jackson.core.JsonProcessingException; -import dev.vality.adapter.flow.lib.constant.Status; -import dev.vality.adapter.flow.lib.constant.Step; -import dev.vality.adapter.flow.lib.flow.AbstractGenerateTokenTest; -import dev.vality.adapter.flow.lib.flow.full.three.ds.config.FullThreeDsFlowConfig; -import dev.vality.adapter.flow.lib.flow.utils.BeanUtils; -import dev.vality.adapter.flow.lib.flow.utils.MockUtil; -import dev.vality.adapter.flow.lib.model.BaseResponseModel; -import dev.vality.damsel.proxy_provider.RecurrentTokenCallbackResult; -import dev.vality.damsel.proxy_provider.RecurrentTokenContext; -import dev.vality.damsel.proxy_provider.RecurrentTokenProxyResult; -import org.apache.thrift.TException; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.ExtendWith; -import org.mockito.Mockito; -import org.mockito.MockitoAnnotations; -import org.springframework.test.context.ContextConfiguration; -import org.springframework.test.context.TestPropertySource; -import org.springframework.test.context.junit.jupiter.SpringExtension; - -import java.nio.ByteBuffer; -import java.util.Date; -import java.util.Map; - -import static dev.vality.adapter.flow.lib.flow.full.three.ds.ForwardRecurrentPaymentNon3dsTest.RECURRENT_TOKEN; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertTrue; -import static org.mockito.ArgumentMatchers.any; - -@ExtendWith(SpringExtension.class) -@ContextConfiguration(classes = FullThreeDsFlowConfig.class) -@TestPropertySource(properties = {"server.rest.port=8083", - "error-mapping.file=classpath:fixture/errors.json", - "service.secret.enabled=true"}) -public class GenerateToken3ds1Test extends AbstractGenerateTokenTest { - - @BeforeEach - public void setUp() throws TException { - MockitoAnnotations.openMocks(this); - MockUtil.mockAllWithout3Ds(cdsStorageClient, benderClient); - - BaseResponseModel baseResponseModel = BeanUtils.createBaseResponseModel(); - baseResponseModel.setThreeDsData(BeanUtils.create3Ds1(baseResponseModel)); - baseResponseModel.setStatus(Status.NEED_REDIRECT); - - BaseResponseModel baseResponseModelRec = BeanUtils.createBaseResponseModel(); - baseResponseModelRec.setRecurrentToken(RECURRENT_TOKEN); - - Mockito.when(client.auth(any())).thenReturn(baseResponseModel); - Mockito.when(client.pay(any())).thenReturn(baseResponseModel); - - Mockito.when(client.finish3ds(any())).thenReturn(baseResponseModelRec); - Mockito.when(client.refund(any())).thenReturn(baseResponseModelRec); - Mockito.when(client.capture(any())).thenReturn(baseResponseModelRec); - } - - @Test - public void testPaymentOneStage() throws TException, JsonProcessingException { - // pay - Map options = MockUtil.buildOptionsOneStage(); - testPayment(options); - } - - @Test - public void testPaymentTwoStage() throws TException, JsonProcessingException { - // auth - Map options = MockUtil.buildOptionsTwoStage(); - testPayment(options); - } - - private void testPayment(Map options) throws TException, JsonProcessingException { - RecurrentTokenContext paymentContext = MockUtil.buildRecurrentTokenContext(String.valueOf(new Date().getTime()), - options); - RecurrentTokenProxyResult paymentProxyResult = serverHandlerLogDecorator.generateToken(paymentContext); - assertTrue(paymentProxyResult.getIntent().getSuspend().getUserInteraction().isSetRedirect()); - assertEquals(Step.FINISH_THREE_DS_V1, - temporaryContextDeserializer.read(paymentProxyResult.getNextState()).getNextStep()); - - ByteBuffer byteBuffer = BeanUtils.createParesBuffer("pares", "md"); - paymentContext.getTokenInfo().setTrx(paymentProxyResult.getTrx()); - paymentContext.getSession().setState(paymentProxyResult.getNextState()); - RecurrentTokenCallbackResult paymentCallbackResult = serverHandlerLogDecorator.handleRecurrentTokenCallback( - byteBuffer, - paymentContext); - - //finish three ds - paymentProxyResult = checkSuccessFinishThreeDs(paymentContext, paymentProxyResult, paymentCallbackResult); - - - //capture - paymentProxyResult = checkSleepWithStatus(Step.REFUND, paymentContext, paymentProxyResult, - paymentProxyResult.getNextState()); - - //refund - checkSuccessRefund(paymentContext, paymentProxyResult, paymentProxyResult.getNextState()); - } - -} diff --git a/src/test/java/dev/vality/adapter/flow/lib/flow/full/three/ds/GenerateTokenNon3dsTest.java b/src/test/java/dev/vality/adapter/flow/lib/flow/full/three/ds/GenerateTokenNon3dsTest.java deleted file mode 100644 index 997b0b2..0000000 --- a/src/test/java/dev/vality/adapter/flow/lib/flow/full/three/ds/GenerateTokenNon3dsTest.java +++ /dev/null @@ -1,74 +0,0 @@ -package dev.vality.adapter.flow.lib.flow.full.three.ds; - -import dev.vality.adapter.flow.lib.constant.Step; -import dev.vality.adapter.flow.lib.flow.AbstractGenerateTokenTest; -import dev.vality.adapter.flow.lib.flow.full.three.ds.config.FullThreeDsFlowConfig; -import dev.vality.adapter.flow.lib.flow.utils.BeanUtils; -import dev.vality.adapter.flow.lib.flow.utils.MockUtil; -import dev.vality.adapter.flow.lib.model.BaseResponseModel; -import dev.vality.damsel.proxy_provider.RecurrentTokenContext; -import dev.vality.damsel.proxy_provider.RecurrentTokenProxyResult; -import org.apache.thrift.TException; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.ExtendWith; -import org.mockito.Mockito; -import org.mockito.MockitoAnnotations; -import org.springframework.test.context.ContextConfiguration; -import org.springframework.test.context.TestPropertySource; -import org.springframework.test.context.junit.jupiter.SpringExtension; - -import java.util.Date; -import java.util.Map; - -import static dev.vality.adapter.flow.lib.flow.full.three.ds.ForwardRecurrentPaymentNon3dsTest.RECURRENT_TOKEN; -import static org.mockito.ArgumentMatchers.any; - -@ExtendWith(SpringExtension.class) -@ContextConfiguration(classes = FullThreeDsFlowConfig.class) -@TestPropertySource(properties = {"server.rest.port=8083", - "error-mapping.file=classpath:fixture/errors.json", - "service.secret.enabled=true"}) -public class GenerateTokenNon3dsTest extends AbstractGenerateTokenTest { - - @BeforeEach - public void setUp() throws TException { - MockitoAnnotations.openMocks(this); - MockUtil.mockAllWithout3Ds(cdsStorageClient, benderClient); - - BaseResponseModel baseResponseModel = BeanUtils.createBaseResponseModel(); - baseResponseModel.setRecurrentToken(RECURRENT_TOKEN); - - Mockito.when(client.auth(any())).thenReturn(baseResponseModel); - Mockito.when(client.pay(any())).thenReturn(baseResponseModel); - Mockito.when(client.capture(any())).thenReturn(baseResponseModel); - Mockito.when(client.refund(any())).thenReturn(baseResponseModel); - } - - @Test - public void testPaymentOneStage() throws TException { - // pay - Map options = MockUtil.buildOptionsOneStage(); - testPayment(options); - } - - @Test - public void testPaymentTwoStage() throws TException { - // auth - Map options = MockUtil.buildOptionsTwoStage(); - testPayment(options); - } - - private void testPayment(Map options) throws TException { - RecurrentTokenContext paymentContext = MockUtil.buildRecurrentTokenContext(String.valueOf(new Date().getTime()), - options); - RecurrentTokenProxyResult paymentProxyResult = checkSuccessAuthOrPay(paymentContext); - - //capture - paymentProxyResult = checkSleepWithStatus(Step.REFUND, paymentContext, paymentProxyResult, - paymentProxyResult.getNextState()); - - //refund - checkSuccessRefund(paymentContext, paymentProxyResult, paymentProxyResult.getNextState()); - } -} diff --git a/src/test/java/dev/vality/adapter/flow/lib/flow/full/three/ds/config/FullThreeDsFlowConfig.java b/src/test/java/dev/vality/adapter/flow/lib/flow/full/three/ds/config/FullThreeDsFlowConfig.java index f306f08..927d079 100644 --- a/src/test/java/dev/vality/adapter/flow/lib/flow/full/three/ds/config/FullThreeDsFlowConfig.java +++ b/src/test/java/dev/vality/adapter/flow/lib/flow/full/three/ds/config/FullThreeDsFlowConfig.java @@ -3,15 +3,11 @@ import dev.vality.adapter.flow.lib.client.RemoteClient; import dev.vality.adapter.flow.lib.converter.base.EntryModelToBaseRequestModelConverter; import dev.vality.adapter.flow.lib.converter.entry.CtxToEntryModelConverter; -import dev.vality.adapter.flow.lib.converter.entry.RecCtxToEntryModelConverter; import dev.vality.adapter.flow.lib.converter.exit.ExitModelToProxyResultConverter; -import dev.vality.adapter.flow.lib.converter.exit.ExitModelToRecTokenProxyResultConverter; -import dev.vality.adapter.flow.lib.flow.RecurrentResultIntentResolver; import dev.vality.adapter.flow.lib.flow.ResultIntentResolver; import dev.vality.adapter.flow.lib.flow.StepResolver; import dev.vality.adapter.flow.lib.flow.full.FullThreeDsAllVersionsStepResolverImpl; import dev.vality.adapter.flow.lib.flow.full.GenerateTokenFullThreeDsAllVersionsStepResolverImpl; -import dev.vality.adapter.flow.lib.flow.full.GenerateTokenResultIntentResolverImpl; import dev.vality.adapter.flow.lib.flow.full.ResultIntentResolverImpl; import dev.vality.adapter.flow.lib.handler.CommonHandler; import dev.vality.adapter.flow.lib.handler.ServerFlowHandler; @@ -22,11 +18,8 @@ import dev.vality.adapter.flow.lib.model.ExitStateModel; import dev.vality.adapter.flow.lib.processor.Processor; import dev.vality.adapter.flow.lib.service.factory.SimpleIntentResultFactory; -import dev.vality.adapter.flow.lib.service.factory.SimpleRecurrentIntentResultFactory; import dev.vality.damsel.proxy_provider.PaymentContext; import dev.vality.damsel.proxy_provider.PaymentProxyResult; -import dev.vality.damsel.proxy_provider.RecurrentTokenContext; -import dev.vality.damsel.proxy_provider.RecurrentTokenProxyResult; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @@ -61,28 +54,6 @@ public ServerFlowHandler serverFlowHandler( exitModelToProxyResultConverter); } - @Bean - public ServerFlowHandler generateTokenFlowHandler( - RemoteClient client, - EntryModelToBaseRequestModelConverter entryModelToBaseRequestModelConverter, - Processor baseProcessor, - StepResolver generateTokenFullThreeDsAllVersionsStepResolverImpl, - RecCtxToEntryModelConverter recCtxToEntryStateModelConverter, - ExitModelToRecTokenProxyResultConverter exitModelToRecTokenProxyResultConverter - ) { - return new ServerFlowHandlerImpl<>( - getHandlers(client, entryModelToBaseRequestModelConverter, baseProcessor), - generateTokenFullThreeDsAllVersionsStepResolverImpl, - recCtxToEntryStateModelConverter, - exitModelToRecTokenProxyResultConverter); - } - - @Bean - public RecurrentResultIntentResolver recurrentResultIntentResolver( - SimpleRecurrentIntentResultFactory recurrentIntentResultFactory) { - return new GenerateTokenResultIntentResolverImpl(recurrentIntentResultFactory); - } - @Bean public ResultIntentResolver resultIntentResolver(SimpleIntentResultFactory intentResultFactory) { return new ResultIntentResolverImpl(intentResultFactory); diff --git a/src/test/java/dev/vality/adapter/flow/lib/flow/qr/config/QrRedirectWithPollingDsFlowConfig.java b/src/test/java/dev/vality/adapter/flow/lib/flow/qr/config/QrRedirectWithPollingDsFlowConfig.java index f2a4643..f83d2b1 100644 --- a/src/test/java/dev/vality/adapter/flow/lib/flow/qr/config/QrRedirectWithPollingDsFlowConfig.java +++ b/src/test/java/dev/vality/adapter/flow/lib/flow/qr/config/QrRedirectWithPollingDsFlowConfig.java @@ -5,12 +5,10 @@ import dev.vality.adapter.flow.lib.converter.base.EntryModelToBaseRequestModelConverter; import dev.vality.adapter.flow.lib.converter.entry.CtxToEntryModelConverter; import dev.vality.adapter.flow.lib.converter.exit.ExitModelToProxyResultConverter; -import dev.vality.adapter.flow.lib.flow.RecurrentResultIntentResolver; import dev.vality.adapter.flow.lib.flow.ResultIntentResolver; import dev.vality.adapter.flow.lib.flow.StepResolver; import dev.vality.adapter.flow.lib.flow.simple.SimpleRedirectWithPollingResultIntentResolver; import dev.vality.adapter.flow.lib.flow.simple.SimpleRedirectWithPollingStepResolverImpl; -import dev.vality.adapter.flow.lib.flow.simple.UnsupportedGenerateTokenResultIntentResolver; import dev.vality.adapter.flow.lib.flow.simple.UnsupportedGenerateTokenStepResolverImpl; import dev.vality.adapter.flow.lib.handler.CommonHandler; import dev.vality.adapter.flow.lib.handler.ServerFlowHandler; @@ -28,8 +26,6 @@ import dev.vality.adapter.flow.lib.utils.TimerProperties; import dev.vality.damsel.proxy_provider.PaymentContext; import dev.vality.damsel.proxy_provider.PaymentProxyResult; -import dev.vality.damsel.proxy_provider.RecurrentTokenContext; -import dev.vality.damsel.proxy_provider.RecurrentTokenProxyResult; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Primary; @@ -67,22 +63,11 @@ public Processor baseProcess return new RetryProcessor(qrDisplayProcessor); } - @Bean - public RecurrentResultIntentResolver recurrentResultIntentResolver() { - return new UnsupportedGenerateTokenResultIntentResolver(); - } - @Bean public ResultIntentResolver resultIntentResolver(IntentResultQrPaymentFactory intentResultFactory) { return new SimpleRedirectWithPollingResultIntentResolver(intentResultFactory); } - @Bean - public ServerFlowHandler generateTokenFlowHandler() { - return new ServerFlowHandler<>() { - }; - } - @Bean public IntentResultQrPaymentFactory intentResultFactory( TimerProperties timerProperties, diff --git a/src/test/java/dev/vality/adapter/flow/lib/flow/simple/redirect/config/SimpleRedirectWithPollingDsFlowConfig.java b/src/test/java/dev/vality/adapter/flow/lib/flow/simple/redirect/config/SimpleRedirectWithPollingDsFlowConfig.java index c21c58b..f4d1474 100644 --- a/src/test/java/dev/vality/adapter/flow/lib/flow/simple/redirect/config/SimpleRedirectWithPollingDsFlowConfig.java +++ b/src/test/java/dev/vality/adapter/flow/lib/flow/simple/redirect/config/SimpleRedirectWithPollingDsFlowConfig.java @@ -3,14 +3,10 @@ import dev.vality.adapter.flow.lib.client.RemoteClient; import dev.vality.adapter.flow.lib.converter.base.EntryModelToBaseRequestModelConverter; import dev.vality.adapter.flow.lib.converter.entry.CtxToEntryModelConverter; -import dev.vality.adapter.flow.lib.converter.entry.RecCtxToEntryModelConverter; import dev.vality.adapter.flow.lib.converter.exit.ExitModelToProxyResultConverter; -import dev.vality.adapter.flow.lib.converter.exit.ExitModelToRecTokenProxyResultConverter; -import dev.vality.adapter.flow.lib.flow.RecurrentResultIntentResolver; import dev.vality.adapter.flow.lib.flow.ResultIntentResolver; import dev.vality.adapter.flow.lib.flow.StepResolver; import dev.vality.adapter.flow.lib.flow.simple.GenerateTokenSimpleRedirectWithPollingStepResolverImpl; -import dev.vality.adapter.flow.lib.flow.simple.SimpleRedirectGenerateTokenResultIntentResolver; import dev.vality.adapter.flow.lib.flow.simple.SimpleRedirectWithPollingResultIntentResolver; import dev.vality.adapter.flow.lib.flow.simple.SimpleRedirectWithPollingStepResolverImpl; import dev.vality.adapter.flow.lib.handler.CommonHandler; @@ -22,11 +18,8 @@ import dev.vality.adapter.flow.lib.model.ExitStateModel; import dev.vality.adapter.flow.lib.processor.Processor; import dev.vality.adapter.flow.lib.service.factory.SimpleIntentResultFactory; -import dev.vality.adapter.flow.lib.service.factory.SimpleRecurrentIntentResultFactory; import dev.vality.damsel.proxy_provider.PaymentContext; import dev.vality.damsel.proxy_provider.PaymentProxyResult; -import dev.vality.damsel.proxy_provider.RecurrentTokenContext; -import dev.vality.damsel.proxy_provider.RecurrentTokenProxyResult; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @@ -54,32 +47,11 @@ public ServerFlowHandler serverFlowHandler( exitModelToProxyResultConverter); } - @Bean - public RecurrentResultIntentResolver recurrentResultIntentResolver( - SimpleRecurrentIntentResultFactory recurrentIntentResultFactory) { - return new SimpleRedirectGenerateTokenResultIntentResolver(recurrentIntentResultFactory); - } - @Bean public ResultIntentResolver resultIntentResolver(SimpleIntentResultFactory intentResultFactory) { return new SimpleRedirectWithPollingResultIntentResolver(intentResultFactory); } - @Bean - public ServerFlowHandler generateTokenFlowHandler( - RemoteClient client, - EntryModelToBaseRequestModelConverter entryModelToBaseRequestModelConverter, - Processor baseProcessor, - StepResolver generateTokenStepResolverImpl, - RecCtxToEntryModelConverter recCtxToEntryStateModelConverter, - ExitModelToRecTokenProxyResultConverter exitModelToRecTokenProxyResultConverter) { - return new ServerFlowHandlerImpl<>( - getHandlers(client, entryModelToBaseRequestModelConverter, baseProcessor), - generateTokenStepResolverImpl, - recCtxToEntryStateModelConverter, - exitModelToRecTokenProxyResultConverter); - } - private List> getHandlers( RemoteClient client, EntryModelToBaseRequestModelConverter entryModelToBaseRequestModelConverter, diff --git a/src/test/java/dev/vality/adapter/flow/lib/flow/utils/MockUtil.java b/src/test/java/dev/vality/adapter/flow/lib/flow/utils/MockUtil.java index c2832e3..352f163 100644 --- a/src/test/java/dev/vality/adapter/flow/lib/flow/utils/MockUtil.java +++ b/src/test/java/dev/vality/adapter/flow/lib/flow/utils/MockUtil.java @@ -85,12 +85,6 @@ private static void mockCardData(int expMonthNon3ds, String cardholderName, String panSuccessNon3ds, CdsStorageClient cdsStorageClient) { - doAnswer((Answer) invocationOnMock -> CardDataProxyModel.builder() - .expMonth((byte) expMonthNon3ds) - .expYear((short) expYearNon3ds) - .cardholderName(cardholderName) - .pan(panSuccessNon3ds) - .build()).when(cdsStorageClient).getCardData(any(RecurrentTokenContext.class)); doAnswer((Answer) invocation -> new CardData() .setExpDate(new ExpDate() @@ -126,9 +120,6 @@ public static void mock3ds2SimpleFlowSessionData(CdsStorageClient cdsStorageClie } private static void mockCvv(String cvvNon3ds, CdsStorageClient cdsStorageClient) { - doAnswer((Answer) invocation -> - new SessionData(AuthData.card_security_code(new CardSecurityCode(cvvNon3ds)))) - .when(cdsStorageClient).getSessionData(any(RecurrentTokenContext.class)); doAnswer((Answer) invocation -> new SessionData(AuthData.card_security_code(new CardSecurityCode(cvvNon3ds)))) .when(cdsStorageClient).getSessionData(any(PaymentContext.class)); @@ -237,26 +228,4 @@ public static PaymentContext buildRecurrentPaymentContext(String invoiceId, Stri .setRecToken(token))); return paymentContext; } - - public static RecurrentTokenContext buildRecurrentTokenContext(String recurrentId, Map options) { - return new RecurrentTokenContext() - .setSession(new RecurrentTokenSession()) - .setTokenInfo(new RecurrentTokenInfo() - .setPaymentTool(new RecurrentPaymentTool() - .setId(recurrentId) - .setCreatedAt("2016-03-22T06:12:27Z") - .setPaymentResource(new DisposablePaymentResource() - .setPaymentTool(PaymentTool.bank_card(new BankCard() - .setToken("kektoken") - .setBin("1234") - .setExpDate(new BankCardExpDate() - .setMonth((byte) EXP_MONTH_NON3DS) - .setYear((short) EXP_YEAR_NON3DS))))) - .setMinimalPaymentCost(new Cash() - .setAmount(1000) - .setCurrency(new Currency() - .setSymbolicCode("RUB") - .setNumericCode((short) 643))))) - .setOptions(options); - } } diff --git a/src/test/java/dev/vality/adapter/flow/lib/service/CardDataServiceWithHolderNamesImplTest.java b/src/test/java/dev/vality/adapter/flow/lib/service/CardDataServiceWithHolderNamesImplTest.java index 8a37e34..09aad85 100644 --- a/src/test/java/dev/vality/adapter/flow/lib/service/CardDataServiceWithHolderNamesImplTest.java +++ b/src/test/java/dev/vality/adapter/flow/lib/service/CardDataServiceWithHolderNamesImplTest.java @@ -8,7 +8,6 @@ import dev.vality.damsel.domain.BankCard; import dev.vality.damsel.domain.BankCardExpDate; import dev.vality.damsel.proxy_provider.PaymentContext; -import dev.vality.damsel.proxy_provider.RecurrentTokenContext; import org.apache.thrift.TException; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.BeforeEach; @@ -67,28 +66,6 @@ void getCardDataProxyModel() { Assertions.assertNotEquals(TEST_1, cardDataProxyModel.getCardholderName()); } - @Test - void testGetCardDataProxyModel() { - CardDataProxyModel cardDataProxyModel = cardDataServiceWithHolderNames.getCardDataProxyModel( - new RecurrentTokenContext() - .setOptions(Map.of(OptionFields.CARD_HOLDER_FROM_FILE.name(), "true")), - new CardData(), - new BankCard() - .setToken("test") - .setExpDate(new BankCardExpDate())); - - Assertions.assertEquals(TEST_1, cardDataProxyModel.getCardholderName()); - - cardDataProxyModel = cardDataServiceWithHolderNames.getCardDataProxyModel( - new RecurrentTokenContext() - .setOptions(Map.of()), - new CardData(), - new BankCard().setToken("test") - .setExpDate(new BankCardExpDate())); - - Assertions.assertNotEquals(TEST_1, cardDataProxyModel.getCardholderName()); - } - @Test void getCardDataProxyModelFromCds() { CardDataProxyModel cardDataProxyModel = cardDataServiceWithHolderNames.getCardDataProxyModelFromCds(