コード例 #1
0
        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));
        }
コード例 #2
0
 public Task <DeleteCustomerProfileResponse> DeleteAsync(
     DeleteCustomerProfileRequest request,
     CancellationToken cancellationToken = default)
 {
     return(_delete.PostAsync(request, cancellationToken));
 }
コード例 #3
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);
        }
コード例 #4
0
 public async Task <DeleteCustomerProfileResponse> DeleteAsync(DeleteCustomerProfileRequest deleteCustomerProfileRequest)
 {
     return(await new AuthorizeNetResult(_authorizeNetUrl).PostAsync <DeleteCustomerProfileRequest, DeleteCustomerProfileResponse>(deleteCustomerProfileRequest));
 }
コード例 #5
0
        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);
        }