Example #1
0
        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));
        }
Example #2
0
        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));
 }
Example #4
0
 public async Task <UpdateCustomerPaymentProfileResponse> PostAsync(UpdateCustomerPaymentProfileRequest updateCustomerPaymentProfileRequest)
 {
     return(await new AuthorizeNetResult(_authorizeNetUrl).PostAsync <UpdateCustomerPaymentProfileRequest, UpdateCustomerPaymentProfileResponse>(updateCustomerPaymentProfileRequest));
 }