Пример #1
0
        public void reserve_a_product()
        {
            //get search result from cache if exits, to avoid sending redundant search request, if not, get it
            if (!_fixtures.Cache.TryGetValue("_searchResults_test", out SearchResponse searchResult))
            {
                searching_for_two_valid_destinations();
                _fixtures.Cache.TryGetValue("_searchResults_test", out searchResult);
            }

            var searchResultItem = searchResult.Results.First();

            var req = new ReserveRequest(
                "CDGT01",
                DateTime.Now.AddDays(1),
                "CDGT01",
                DateTime.Now.AddDays(2),
                searchResultItem.ContractId,
                searchResultItem.CarCategoryCode,
                searchResultItem.RateId,
                "*****@*****.**",
                new Driver("+989372346281", "MR", "Ali", "Bordbar", "2281206696", "Tehran"));
            var response = _fixtures.CarRent.Reserve(req).Result;

            response.Errors.Should().BeNullOrEmpty();
        }
Пример #2
0
        /// <summary>
        /// Helper method needed for reserving and capturing payment in order to refund examples could work
        /// </summary>
        /// <param name="amount"></param>
        /// <param name="type"></param>
        /// <returns></returns>
        private CaptureResult ReserveAndCapture(Amount amount, AuthType type)
        {
            var request = new ReserveRequest
            {
                ShopOrderId = "csharpexample" + Guid.NewGuid().ToString(),
                Terminal    = "AltaPay Dev Terminal",
                Amount      = amount,
                PaymentType = type,
                Pan         = "4111000011110000",
                ExpiryMonth = 1,
                ExpiryYear  = 2012,
                Cvc         = "123",
            };

            PaymentResult paymentResult = _api.ReserveAmount(request);

            if (paymentResult.Result != Result.Success)
            {
                throw new Exception("The result was: " + paymentResult.Result + ", message: " + paymentResult.ResultMerchantMessage);
            }

            CaptureRequest captureRequest = new CaptureRequest
            {
                PaymentId = paymentResult.Payment.TransactionId
            };

            CaptureResult captureResult = _api.Capture(captureRequest);

            if (captureResult.Result != Result.Success)
            {
                throw new Exception("The result was: " + captureResult.Result + ", message: " + captureResult.ResultMerchantMessage);
            }

            return(captureResult);
        }
Пример #3
0
        private PaymentResult ReserveAmount(double amount, AuthType type, string includeAgreementConfig = "")
        {
            var sixMonthsFromNowDate = DateTime.Now.AddMonths(6);
            var request = new ReserveRequest {
                ShopOrderId = includeAgreementConfig + "csharptest" + Guid.NewGuid().ToString(),
                Terminal    = "AltaPay Soap Test Terminal",
                Amount      = Amount.Get(amount, Currency.DKK),
                PaymentType = type,
                Pan         = "4111000011110000",
                ExpiryMonth = sixMonthsFromNowDate.Month,
                ExpiryYear  = sixMonthsFromNowDate.Year,
                Cvc         = "123",
            };

            if (includeAgreementConfig != "")
            {
                var agreementConfig = new AgreementConfig();
                agreementConfig.AgreementType            = AgreementType.unscheduled;
                agreementConfig.AgreementUnscheduledType = AgreementUnscheduledType.incremental;
                request.AgreementConfig = agreementConfig;
            }

            PaymentResult result = _api.ReserveAmount(request);

            if (result.Result != Result.Success)
            {
                throw new Exception("The result was: " + result.Result + ", message: " + result.ResultMerchantMessage);
            }

            return(result);
        }
Пример #4
0
        public async Task <ReserveResponse> Reserve(ReserveRequest request)
        {
            var path     = new Paths.Reserve(_token);
            var response = await
                           _api.CallRemoteApiAsync <ReserveRequest, ReserveResponse>(request, path);

            return(response);
        }
Пример #5
0
        public System.Threading.Tasks.Task <ReserveResponse> ReserveAsync(SecurityHeaderType Security, RequestHeaderType RequestHeader, dacInput dacInput)
        {
            ReserveRequest inValue = new ReserveRequest();

            inValue.Security      = Security;
            inValue.RequestHeader = RequestHeader;
            inValue.dacInput      = dacInput;
            return(((ReserveV01)(this)).ReserveAsync(inValue));
        }
Пример #6
0
        public dacOutput Reserve(ref SecurityHeaderType Security, RequestHeaderType RequestHeader, dacInput dacInput)
        {
            ReserveRequest inValue = new ReserveRequest();

            inValue.Security      = Security;
            inValue.RequestHeader = RequestHeader;
            inValue.dacInput      = dacInput;
            ReserveResponse retVal = ((ReserveV01)(this)).Reserve(inValue);

            Security = retVal.Security;
            return(retVal.dacOutput);
        }
        private static void CheckReserveRequest(ReserveRequest request)
        {
            if (request == null)
            {
                throw new ArgumentNullException("request");
            }

            if (!request.OrderId.HasValue)
            {
                throw new ArgumentException("OrderId can't empty");
            }
        }
Пример #8
0
        private PaymentResult GetMerchantApiResultCardToken(string shopOrderId, double amount, string cardToken, Boolean callReservationOfFixedAmount = true)
        {
            var request = new ReserveRequest {
                Terminal        = _testTerminal,
                ShopOrderId     = shopOrderId,
                PaymentType     = AuthType.payment,
                Amount          = Amount.Get(amount, Currency.DKK),
                CreditCardToken = cardToken,
                Cvc             = "123",
            };

            return(_api.ReserveAmount(request));                    // reservation
        }
Пример #9
0
        public async Task <ServerResponse <Transaction> > StartReserve(ReserveRequest payment)
        {
            var currentSynchronizationContext = SynchronizationContext.Current;

            try
            {
                SynchronizationContext.SetSynchronizationContext(new OperationContextSynchronizationContext(InnerChannel));
                return(await WrapperTS(Channel.StartReserve, payment));
            }
            finally
            {
                SynchronizationContext.SetSynchronizationContext(currentSynchronizationContext);
            }
        }
Пример #10
0
        private PaymentResult GetMerchantApiResult(string shopOrderId, double amount, Boolean callReservationOfFixedAmount = true)
        {
            DateTime sixMonthsFromNowDate = DateTime.Now.AddMonths(6);
            var      request = new ReserveRequest {
                Terminal    = _testTerminal,
                ShopOrderId = shopOrderId,
                PaymentType = AuthType.paymentAndCapture,
                Amount      = Amount.Get(amount, Currency.DKK),
                Pan         = "4111000011110002",
                ExpiryMonth = sixMonthsFromNowDate.Month,
                ExpiryYear  = sixMonthsFromNowDate.Year,
                Cvc         = "123",
            };

            return(_api.ReserveAmount(request));            // reservation
        }
Пример #11
0
        public void Can_Send_Reserve_Request()
        {
            var     senderId   = "061133";
            var     merchantid = "APPDK0074110008";
            var     orderid    = "DB TESTING 2015060908";
            decimal amount     = 105;

            SoapConnection <ReserveV01Client, ReserveV01> soapConnection =
                new SoapConnection <ReserveV01Client, ReserveV01>(new EndpointConfiguration().ReserveV01);

            var req = new ReserveRequest
            {
                dacInput = new dacInput
                {
                    MerchantId     = merchantid,
                    CustomerId     = string.Empty,
                    OrderId        = orderid,
                    CardChecksum   = string.Empty,
                    Amount         = amount,
                    MinimumAmount  = amount,
                    Partial        = "N",
                    Message        = string.Empty,
                    Test           = "Y",
                    UseDefaultCard = string.Empty,
                    BulkRef        = string.Empty,
                },
                Security      = new SecurityHeaderType(),
                RequestHeader = new RequestHeaderType
                {
                    Language  = "DA",
                    SenderId  = senderId,
                    SignerId1 = senderId,
                    SignerId2 = senderId,
                    SignerId3 = senderId,
                    DBCryptId = senderId,
                    RequestId = "1234",
                    Timestamp = DateTime.UtcNow.DbTimestamp()
                }
            };

            var output =
                soapConnection.Send(client => client.Reserve(ref req.Security, req.RequestHeader, req.dacInput));

            Assert.IsNotNull(output);
        }
Пример #12
0
        private PaymentResult GetMerchantApiResultWithCustomerAndSource(string shopOrderId, double amount, CustomerInfo customerInfo,
                                                                        PaymentSource source = PaymentSource.moto, Boolean callReservationOfFixedAmount = true)
        {
            var sixMonthsFromNowDate = DateTime.Now.AddMonths(6);
            var request = new ReserveRequest {
                Source       = source,
                ShopOrderId  = shopOrderId,
                Terminal     = _testTerminal,
                PaymentType  = AuthType.payment,
                Amount       = Amount.Get(amount, Currency.DKK),
                Pan          = "4111000011110002",
                ExpiryMonth  = sixMonthsFromNowDate.Month,
                ExpiryYear   = sixMonthsFromNowDate.Year,
                Cvc          = "123",
                CustomerInfo = customerInfo,
            };

            return(_api.ReserveAmount(request));            // reservation
        }
Пример #13
0
        public void ReserveAmountWithAgreementAndOrderlines()
        {
            //arrange
            var             sixMonthsFromNowDate = DateTime.Now.AddMonths(6);
            var             shopOrderId          = "IT_AGREEMENTS_UI_csharp_" + Guid.NewGuid().ToString();
            double          amount          = 77.7;
            var             currency        = Currency.DKK;
            AgreementConfig agreementConfig = new AgreementConfig();

            agreementConfig.AgreementType            = AgreementType.unscheduled;
            agreementConfig.AgreementUnscheduledType = AgreementUnscheduledType.incremental;
            var request = new ReserveRequest
            {
                Source          = PaymentSource.eCommerce,
                ShopOrderId     = shopOrderId,
                Terminal        = _testTerminal,
                PaymentType     = AuthType.payment,
                Amount          = Amount.Get(amount, currency),
                Pan             = "4111000011110002",
                ExpiryMonth     = sixMonthsFromNowDate.Month,
                ExpiryYear      = sixMonthsFromNowDate.Year,
                Cvc             = "123",
                CustomerInfo    = InitializeCustomerInfoTestData(),
                OrderLines      = InitializeOrderlinesTestData(),
                AgreementConfig = agreementConfig,
            };

            //act
            ReserveResult result = _api.ReserveAmount(request);

            //assert
            Assert.IsNotNull(result);
            Assert.IsNotNull(result.Result);
            Assert.IsNotNull(result.Payment);

            Assert.AreEqual(result.Result, Result.Success);
            Assert.AreEqual(result.Payment.TransactionStatus, GatewayConstants.PreauthTransactionStatus);
            Assert.AreEqual(result.Payment.ShopOrderId, shopOrderId);
            Assert.AreEqual(result.Payment.ReservedAmount, amount);
            Assert.AreEqual(result.Payment.MerchantCurrencyAlpha, currency.ShortName);
            Assert.IsTrue(CompareCustomerInfos(result.Payment.CustomerInfo));
        }
        public ReserveResponse Reserve(ReserveRequest request)
        {
            CheckReserveRequest(request);

            using (var mgr = IoC.Instance.Resolve <IBPProcessManager>())
            {
                OWB owb;
                using (var owbMgr = IoC.Instance.Resolve <IBaseManager <OWB> >())
                    owb = owbMgr.Get(request.OrderId);

                if (owb == null)
                {
                    throw new IntegrationLogicalException(string.Format("Can't find order with id '{0}' or you do not have permission", request.OrderId));
                }

                mgr.ReserveOWBLst(new[] { owb }, ReserveOperationCode);
            }

            // пока все через очередь
            return(new ReserveResponse {
                OrderId = request.OrderId, ReserveState = ReserveStates.Queued
            });
        }
Пример #15
0
        public void ReserveAmountWithoutOrderlines()
        {
            //arrange
            var    sixMonthsFromNowDate = DateTime.Now.AddMonths(6);
            var    shopOrderId          = Guid.NewGuid().ToString();
            double amount   = 1.23;
            var    currency = Currency.DKK;

            var request = new ReserveRequest
            {
                Source       = PaymentSource.eCommerce,
                ShopOrderId  = shopOrderId,
                Terminal     = _testTerminal,
                PaymentType  = AuthType.payment,
                Amount       = Amount.Get(amount, currency),
                Pan          = "4111000011110002",
                ExpiryMonth  = sixMonthsFromNowDate.Month,
                ExpiryYear   = sixMonthsFromNowDate.Year,
                Cvc          = "123",
                CustomerInfo = InitializeCustomerInfoTestData(),
            };

            //act
            ReserveResult result = _api.ReserveAmount(request);

            //assert
            Assert.IsNotNull(result);
            Assert.IsNotNull(result.Result);
            Assert.IsNotNull(result.Payment);

            Assert.AreEqual(result.Result, Result.Success);
            Assert.AreEqual(result.Payment.TransactionStatus, GatewayConstants.PreauthTransactionStatus);
            Assert.AreEqual(result.Payment.ShopOrderId, shopOrderId);
            Assert.AreEqual(result.Payment.ReservedAmount, amount);
            Assert.AreEqual(result.Payment.MerchantCurrencyAlpha, currency.ShortName);
            Assert.IsTrue(CompareCustomerInfos(result.Payment.CustomerInfo));
        }
 public async Task <ServerResponse <Transaction> > StartReserve(ReserveRequest payment)
 {
     return(await OnlyRunOnIntranet(() => _cl.StartReserve(payment)));
 }
Пример #17
0
 System.Threading.Tasks.Task <ReserveResponse> ReserveV01.ReserveAsync(ReserveRequest request)
 {
     return(base.Channel.ReserveAsync(request));
 }
Пример #18
0
 ReserveResponse ReserveV01.Reserve(ReserveRequest request)
 {
     return(base.Channel.Reserve(request));
 }