public async Task <UpdateCustomerPaymentProfileResponse> PostAsync(string customerProfileId, string referenceId, Models.UpdateCustomerPaymentProfile customerPaymentProfile) { var updateCustomerPaymentProfileRequest = new UpdateCustomerPaymentProfileRequest { PaymentProfileTransactionRequest = new UpdateCustomerPaymentProfileTransactionRequest { MerchantAuthentication = new MerchantAuthentication { LoginId = _apiLoginId, TransactionKey = _transactionKey }, CustomerProfileId = customerProfileId, ReferenceId = referenceId, CustomerPaymentProfile = customerPaymentProfile } }; return(await PostAsync(updateCustomerPaymentProfileRequest)); }
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 Task <UpdateCustomerPaymentProfileResponse> UpdateAsync( UpdateCustomerPaymentProfileRequest request, CancellationToken cancellationToken = default) { return(_update.PostAsync(request, cancellationToken)); }
public async Task <UpdateCustomerPaymentProfileResponse> PostAsync(UpdateCustomerPaymentProfileRequest updateCustomerPaymentProfileRequest) { return(await new AuthorizeNetResult(_authorizeNetUrl).PostAsync <UpdateCustomerPaymentProfileRequest, UpdateCustomerPaymentProfileResponse>(updateCustomerPaymentProfileRequest)); }