예제 #1
0
            public async Task Handle(Command request, CancellationToken cancellationToken)
            {
                var directDebitPayment = new DirectDebitPayment(request.DirectDebitCode, request.Value, request.Details, request.PaymentDate);
                await _repository.AddAsync(directDebitPayment);

                await _repository.SaveChangesAsync();
            }
        /// <summary>
        ///     ProcessUsDirectDebitSale
        /// </summary>
        /// <param name="directDebit">Details for this Direct Debit Transaction</param>
        /// <param name="customerData">Customer Details</param>
        public void ProcessUsDirectDebitSale(DirectDebitPayment directDebit, CustomerFields customerData)
        {
            var paymentType = "ACH";
            var transType   = "SALE";

            var paymentData =
                String.Format("&PAYMENT_TYPE={0}&ACH_ROUTING={1}&ACH_ACCOUNT={2}&ACH_ACCOUNT_TYPE={3}&DOC_TYPE={4}&NAME1={5}&NAME2={6}&CUSTOM_ID={7}",
                              HttpUtility.UrlEncode(paymentType),
                              HttpUtility.UrlEncode(directDebit.RoutingNumber), HttpUtility.UrlEncode(directDebit.BankAccountNumber),
                              HttpUtility.UrlEncode(directDebit.AccountType), HttpUtility.UrlEncode(directDebit.DocType),
                              HttpUtility.UrlEncode(customerData.Name1), HttpUtility.UrlEncode(customerData.Name2), HttpUtility.UrlEncode(directDebit.CustomId));

            ProcessPayment(paymentData, transType, directDebit.Amount, "");
        }
        private void ProcessSepaTransaction(DirectDebitPayment sepaPayment, CustomerFields customerData, string transType)
        {
            var paymentType = "SEPA";

            // to do - documentation says we need MANDATE_ID and MANDATE_DATE also
            var paymentData =
                String.Format(
                    "&BIC={0}&IBAN={1}&DOC_TYPE={2}&PAYMENT_TYPE={3}&NAME1={4}&NAME2={5}&ACH_ACCOUNT_TYPE={6}&CUSTOM_ID={7}",
                    HttpUtility.UrlEncode(sepaPayment.RoutingNumber),
                    HttpUtility.UrlEncode(sepaPayment.BankAccountNumber), HttpUtility.UrlEncode(sepaPayment.DocType), HttpUtility.UrlEncode(paymentType),
                    HttpUtility.UrlEncode(customerData.Name1), HttpUtility.UrlEncode(customerData.Name2), HttpUtility.UrlEncode(sepaPayment.AccountType),
                    HttpUtility.UrlEncode(sepaPayment.CustomId));

            ProcessPayment(paymentData, transType, sepaPayment.Amount, "");
        }
        public void BluePayPaymentSepaSaleTest()
        {
            var testBic  = "OKOYFIHH";
            var testIban = "DE89370400440532013000";

            var sepaPayment = new DirectDebitPayment
            {
                AccountType       = "",
                Amount            = 3,
                BankAccountNumber = testIban,
                CustomId          = "A8G2LR6054V4C7G1WFP",
                DocType           = AchDocType,
                RoutingNumber     = testBic
            };

            var customerData = new CustomerFields
            {
                Name1 = "James",
                Name2 = "Bond",
            };

            var transaction = new Payment(UserName, Password, Mode, ResponseVersion);

            transaction.ProcessIntlDirectDebitSale(sepaPayment, customerData);

            var result = transaction.GetRawResponse();

            Assert.NotNull(result);

            var response = new Response(result);

            Console.WriteLine("BluePayPaymentSepaSaleTest: " + response.ToString());


            //  Assert.Equal(customId, response.GetValue(ResponseFields.CustomId), "custom id");
            Assert.Equal(sepaPayment.Amount, Decimal.Parse(response.GetValue(ResponseFields.Amount)));
            Assert.Equal("SEPA", response.GetValue(ResponseFields.PaymentType));
            Assert.Equal(AchDocType, response.GetValue(RequestFields.DocType));
            Assert.Equal(customerData.Name1, response.GetValue(RequestFields.Name1));
            Assert.Equal(customerData.Name2, response.GetValue(RequestFields.Name2));

            Assert.Contains("APPROVED", response.GetValue(ResponseFields.Result));
            Assert.False(String.IsNullOrEmpty(response.GetValue(ResponseFields.ResultToken)), "token");
        }
        public void BluePayPaymentDirectDebitSaleTest()
        {
            var customerData = new CustomerFields
            {
                Name1 = "Abe",
                Name2 = "Lincoln",
            };

            var directDebit = new DirectDebitPayment
            {
                AccountType       = DefaultAccountType,
                Amount            = 5,
                BankAccountNumber = "123456789",
                RoutingNumber     = "123123123",
                DocType           = AchDocType,
                CustomId          = "ABC1234"
            };

            var transaction = new Payment(UserName, Password, Mode, ResponseVersion);

            transaction.ProcessUsDirectDebitSale(directDebit, customerData);

            var result   = transaction.GetRawResponse();
            var response = new Response(result);

            Console.WriteLine("BluePayPaymentDirectDebitSaleTest: " + response.ToString());

            Assert.Equal(directDebit.Amount, Decimal.Parse(response.GetValue(ResponseFields.Amount)));
            Assert.Equal("ACH", response.GetValue(ResponseFields.PaymentType));
            Assert.Equal(AchDocType, response.GetValue(RequestFields.DocType));
            Assert.Equal(customerData.Name1, response.GetValue(RequestFields.Name1));
            Assert.Equal(customerData.Name2, response.GetValue(RequestFields.Name2));
            // Assert.Equal(directDebit.BankAccountNumber, response.GetValue(ResponseFields.PaymentAccount));
            Assert.Equal(directDebit.CustomId, response.GetValue(ResponseFields.CustomId));

            Assert.Contains("APPROVED", response.GetValue(ResponseFields.Result));
            Assert.False(String.IsNullOrEmpty(response.GetValue(ResponseFields.ResultToken)), "token");
        }
        /// <summary>
        ///     Runs an Auth Transaction
        /// </summary>
        public void ProcessIntlDirectDebitAuth(DirectDebitPayment directDebit, CustomerFields customerData)
        {
            var transType = "AUTH";

            ProcessSepaTransaction(directDebit, customerData, transType);
        }
        /// <summary>
        ///     Runs an Auth Transaction
        /// </summary>
        public void ProcessIntlDirectDebitSale(DirectDebitPayment sepaPayment, CustomerFields customerData)
        {
            var transType = "SALE";

            ProcessSepaTransaction(sepaPayment, customerData, transType);
        }
 public Task AddAsync(DirectDebitPayment entity) => _crudRepository.AddAsync(entity);