public async Task <DeleteCustomerProfileResponse> DeleteAsync(string referenceId, string customerProfileId) { var deleteCustomerProfileRequest = new DeleteCustomerProfileRequest { DeleteCustomerProfileTransactionRequest = new DeleteCustomerProfileTransactionRequest { MerchantAuthentication = new MerchantAuthentication { LoginId = _apiLoginId, TransactionKey = _transactionKey }, CustomerProfileId = customerProfileId, ReferenceId = referenceId } }; return(await DeleteAsync(deleteCustomerProfileRequest)); }
public Task <DeleteCustomerProfileResponse> DeleteAsync( DeleteCustomerProfileRequest request, CancellationToken cancellationToken = default) { return(_delete.PostAsync(request, cancellationToken)); }
public async Task Create_Get_Delete_Customer_Profile_With_Credit_Card_Successfully_Test() { // Arrange var client = _sp.GetRequiredService <ICustomerProfileClient>(); var paymentClient = _sp.GetRequiredService <ICustomerPaymentProfileClient>(); var transactionClient = _sp.GetRequiredService <ITransactionClient>(); var options = _sp.GetRequiredService <IOptions <AuthorizeNetOptions> >(); // 1. Act create Customer/Payment profile var creditCardPaymentProfiles = new Collection <CustomerPaymentProfileType> { new CustomerPaymentProfileType { CustomerType = CustomerTypeEnum.Business, Payment = new PaymentType { CreditCard = new CreditCardType { CardNumber = "4111111111111111", ExpirationDate = "2024-12", CardCode = "900" } }, // visa requires to have the address BillTo = new CustomerAddressType { Address = "1234 main st", City = "Washington", State = "DC", Zip = "46282" }, } }; // 1a. create request var createProfileRequest = new CreateCustomerProfileRequest { Profile = new CustomerProfileType { Description = "Test Customer Account", Email = "*****@*****.**", MerchantCustomerId = "CustomerId-2", ProfileType = CustomerProfileTypeEnum.Regular, PaymentProfiles = creditCardPaymentProfiles, }, ValidationMode = options.Value.ValidationMode }; var createResponse = await client.CreateAsync(createProfileRequest); // Code: E00039 Text: A duplicate record with ID 1517706258 already exists var code = createResponse.Messages.Message[0].Code; var text = createResponse.Messages.Message[0].Text; Assert.Equal("I00001", code); Assert.Equal("Successful.", text); var createResult = new PaymentGatewayResponse(createResponse.ValidationDirectResponseList[0]); Assert.Equal(MessageTypeEnum.Ok, createResponse.Messages.ResultCode); Assert.Equal(ResponseCodeEnum.Approved, createResult.ResponseCode); Assert.Equal("This transaction has been approved.", createResult.ResponseReasonCode); await Task.Delay(TimeSpan.FromSeconds(10)); // 2. Act get Customer/Payment profiles by a customer email var getProfileResponse = await client.GetAsync(new GetCustomerProfileRequest { Email = "*****@*****.**", // CustomerProfileId = createResponse.CustomerProfileId, UnmaskExpirationDate = true, }); Assert.Equal(MessageTypeEnum.Ok, getProfileResponse.Messages.ResultCode); _output.WriteLine($"{getProfileResponse.Profile.CustomerProfileId} - {getProfileResponse.Messages.ResultCode}"); // 3. Act get Customer Payment profile with unmasked values prep for an update var getPaymentResponse = await paymentClient.GetAsync(new GetCustomerPaymentProfileRequest { CustomerPaymentProfileId = getProfileResponse.Profile.PaymentProfiles[0].CustomerPaymentProfileId, CustomerProfileId = getProfileResponse.Profile.CustomerProfileId, UnmaskExpirationDate = true }); Assert.Equal(MessageTypeEnum.Ok, getPaymentResponse.Messages.ResultCode); // 4. Act update Customer Payment profile var exp = "2025-10"; var updatePaymentRequest = new UpdateCustomerPaymentProfileRequest { ValidationMode = options.Value.ValidationMode, CustomerProfileId = getPaymentResponse.PaymentProfile.CustomerProfileId, PaymentProfile = new CustomerPaymentProfileExType { CustomerPaymentProfileId = getPaymentResponse.PaymentProfile.CustomerPaymentProfileId, CustomerType = CustomerTypeEnum.Individual, Payment = new PaymentType { CreditCard = new CreditCardType { CardNumber = getPaymentResponse.PaymentProfile.Payment.CreditCard.CardNumber, ExpirationDate = exp, CardCode = "900" } } } }; _output.WriteLine($"Old: {getPaymentResponse.PaymentProfile.Payment.CreditCard.ExpirationDate}; New:{exp}"); var updatePaymentResponse = await paymentClient.UpdateAsync(updatePaymentRequest); var updatePaymentResult = new PaymentGatewayResponse(updatePaymentResponse.ValidationDirectResponse); Assert.Equal(MessageTypeEnum.Ok, updatePaymentResponse.Messages.ResultCode); Assert.Equal(ResponseCodeEnum.Approved, updatePaymentResult.ResponseCode); await Task.Delay(TimeSpan.FromSeconds(10)); // 5. Act get an Update Customer Payment profile var getUpdatedProfileResponse = await client.GetAsync(new GetCustomerProfileRequest { Email = "*****@*****.**", UnmaskExpirationDate = true, }); Assert.Equal(exp, getUpdatedProfileResponse.Profile.PaymentProfiles[0].Payment.CreditCard.ExpirationDate); // 5. Act Charge Customer Payment profile var chargeRequest = new CreateTransactionRequest { TransactionRequest = new TransactionRequestType { Amount = 5.05m, TransactionType = Enum.GetName(typeof(TransactionTypeEnum), TransactionTypeEnum.AuthCaptureTransaction), Profile = new CustomerProfilePaymentType { CustomerProfileId = getUpdatedProfileResponse.Profile.CustomerProfileId, PaymentProfile = new PaymentProfile { PaymentProfileId = getUpdatedProfileResponse.Profile.PaymentProfiles[0].CustomerPaymentProfileId } }, Customer = new CustomerDataType { Id = "profile-test-56789" }, Order = new OrderType { InvoiceNumber = "cp-invoice-123" }, CustomerIP = options.Value.IpAddress, } }; var chargeResponse = await transactionClient.CreateAsync(chargeRequest); Assert.Equal(MessageTypeEnum.Ok, chargeResponse.Messages.ResultCode); Assert.Equal("1", chargeResponse.TransactionResponse.ResponseCode); Assert.Equal("This transaction has been approved.", chargeResponse.TransactionResponse.Messages[0].Description); _output.WriteLine(chargeResponse.TransactionResponse.TransId); // 7. Act get an Update Customer Payment profile var deleteRequest = new DeleteCustomerProfileRequest { CustomerProfileId = createResponse.CustomerProfileId }; var deleteResponse = await client.DeleteAsync(deleteRequest); Assert.Equal(MessageTypeEnum.Ok, deleteResponse.Messages.ResultCode); }
public async Task <DeleteCustomerProfileResponse> DeleteAsync(DeleteCustomerProfileRequest deleteCustomerProfileRequest) { return(await new AuthorizeNetResult(_authorizeNetUrl).PostAsync <DeleteCustomerProfileRequest, DeleteCustomerProfileResponse>(deleteCustomerProfileRequest)); }
public async Task Create_Get_Delete_Customer_Profile_With_eCheck_Business_Checking_Successfully_Test() { // Arrange var client = _sp.GetRequiredService <ICustomerProfileClient>(); var paymentClient = _sp.GetRequiredService <ICustomerPaymentProfileClient>(); var transactionClient = _sp.GetRequiredService <ITransactionClient>(); var options = _sp.GetRequiredService <IOptions <AuthorizeNetOptions> >(); var randomAccountNumber = new Random().Next(10000, int.MaxValue); // 1. Act create eCheck Customer/Payment profile var eCheckPaymentProfiles = new Collection <CustomerPaymentProfileType> { // e-check business checking new CustomerPaymentProfileType { CustomerType = CustomerTypeEnum.Business, Payment = new PaymentType { BankAccount = new BankAccountType { BankName = "Bank of China", AccountType = BankAccountTypeEnum.BusinessChecking, RoutingNumber = "125008547", AccountNumber = randomAccountNumber.ToString(), NameOnAccount = "Joseph Stalin(Biden)", // .Substring(0, 22), EcheckType = EcheckTypeEnum.CCD }, } }, new CustomerPaymentProfileType { CustomerType = CustomerTypeEnum.Business, Payment = new PaymentType { CreditCard = new CreditCardType { CardNumber = "2223000010309703", ExpirationDate = "2024-12", CardCode = "900" } }, // visa requires to have the address BillTo = new CustomerAddressType { Address = "1600 Pennsylvania Avenue NW", City = "Washington", State = "DC", Zip = "20500" }, } }; // 1a. create request var createProfileRequest = new CreateCustomerProfileRequest { Profile = new CustomerProfileType { Description = "eCheck Business Checking Customer", Email = "*****@*****.**", // id within e-commerce site for the customer MerchantCustomerId = "echeck-id-2", ProfileType = CustomerProfileTypeEnum.Regular, PaymentProfiles = eCheckPaymentProfiles, }, ValidationMode = options.Value.ValidationMode }; var createResponse = await client.CreateAsync(createProfileRequest); var code = createResponse.Messages.Message[0].Code; var text = createResponse.Messages.Message[0].Text; Assert.Equal("I00001", code); Assert.Equal("Successful.", text); var createResult = new PaymentGatewayResponse(createResponse.ValidationDirectResponseList[0]); Assert.Equal(MessageTypeEnum.Ok, createResponse.Messages.ResultCode); Assert.Equal(ResponseCodeEnum.Approved, createResult.ResponseCode); Assert.Equal("This transaction has been approved.", createResult.ResponseReasonCode); // delay for the time to process the record await Task.Delay(TimeSpan.FromSeconds(10)); // 2. Act get an Customer/Payment profile var getUpdatedProfileResponse = await client.GetAsync(new GetCustomerProfileRequest { Email = "*****@*****.**", UnmaskExpirationDate = true, }); // 3. Act Charge Customer Payment profile // pay with e-check var paymentProfileId = getUpdatedProfileResponse .Profile .PaymentProfiles .FirstOrDefault(x => x.Payment.BankAccount.EcheckType == EcheckTypeEnum.CCD)? .CustomerPaymentProfileId; var chargeRequest = new CreateTransactionRequest { TransactionRequest = new TransactionRequestType { Amount = 15.05m, TransactionType = Enum.GetName(typeof(TransactionTypeEnum), TransactionTypeEnum.AuthCaptureTransaction), Profile = new CustomerProfilePaymentType { CustomerProfileId = getUpdatedProfileResponse.Profile.CustomerProfileId, PaymentProfile = new PaymentProfile { // pay with e-check PaymentProfileId = paymentProfileId } }, Customer = new CustomerDataType { Id = "profile-test-56789" }, Order = new OrderType { InvoiceNumber = "eck-invoice-1" }, CustomerIP = options.Value.IpAddress, } }; var chargeResponse = await transactionClient.CreateAsync(chargeRequest); Assert.Equal(MessageTypeEnum.Ok, chargeResponse.Messages.ResultCode); Assert.Equal(ResponseCodeEnum.Approved, ResponseMapper.GetResponseCode(chargeResponse.TransactionResponse.ResponseCode)); Assert.Equal("This transaction has been approved.", chargeResponse.TransactionResponse.Messages[0].Description); _output.WriteLine(chargeResponse.TransactionResponse.TransId); // 4. Act get an Update Customer Payment profile var deleteRequest = new DeleteCustomerProfileRequest { CustomerProfileId = createResponse.CustomerProfileId }; var deleteResponse = await client.DeleteAsync(deleteRequest); Assert.Equal(MessageTypeEnum.Ok, deleteResponse.Messages.ResultCode); }