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);