public static AuthorizeNetResponse CreatePaymentProfileForCustomerFromTransaction(string transactionId, string customerProfileId, bool simulation = false) { AuthorizeNetResponse finalResponse = new AuthorizeNetResponse(); try { InitEnvironmentAndAccount(simulation); var request = new createCustomerProfileFromTransactionRequest { transId = transactionId, // You can either specify the customer information in form of customerProfileBaseType object //customer = customerProfile // OR // You can just provide the customer Profile ID customerProfileId = customerProfileId, }; System.Net.ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072; // .net3.5沒有Tls12 var controller = new createCustomerProfileFromTransactionController(request); controller.Execute(); createCustomerProfileResponse response = controller.GetApiResponse(); finalResponse = ParseResponse(response); } catch (Exception ex) { finalResponse = GenerateExceptionResponse(ex.Message); } return(finalResponse); }
public static ANetApiResponse Run(string ApiLoginID, string ApiTransactionKey, string transactionId) { Console.WriteLine("CreateCustomerProfileFromTransaction Sample"); ApiOperationBase <ANetApiRequest, ANetApiResponse> .RunEnvironment = AuthorizeNET.Environment.SANDBOX; ApiOperationBase <ANetApiRequest, ANetApiResponse> .MerchantAuthentication = new merchantAuthenticationType() { name = ApiLoginID, ItemElementName = ItemChoiceType.transactionKey, Item = ApiTransactionKey, }; var customerProfile = new customerProfileBaseType { merchantCustomerId = "123212", email = "*****@*****.**", description = "This is a sample customer profile" }; var request = new createCustomerProfileFromTransactionRequest { transId = transactionId, // You can either specify the customer information in form of customerProfileBaseType object customer = customerProfile // OR // You can just provide the customer Profile ID // customerProfileId = "123343" }; var controller = new createCustomerProfileFromTransactionController(request); controller.Execute(); createCustomerProfileResponse response = controller.GetApiResponse(); //validate if (response != null && response.messages.resultCode == messageTypeEnum.Ok) { if (response != null && response.messages.message != null) { Console.WriteLine("Success, CustomerProfileID : " + response.customerProfileId); if (response.customerPaymentProfileIdList.Length > 0) { Console.WriteLine("Success, CustomerPaymentProfileID : " + response.customerPaymentProfileIdList[0]); } if (response.customerShippingAddressIdList.Length > 0) { Console.WriteLine("Success, CustomerShippingProfileID : " + response.customerShippingAddressIdList[0]); } } } else if (response != null) { Console.WriteLine("Error: " + response.messages.message[0].code + " " + response.messages.message[0].text); } return(response); }
public static void Run(string apiLoginId, string apiTransactionKey) { Console.WriteLine("CreateCustomerProfileFromTransaction Sample"); ApiOperationBase <ANetApiRequest, ANetApiResponse> .RunEnvironment = AuthorizeNet.Environment.SANDBOX; ApiOperationBase <ANetApiRequest, ANetApiResponse> .MerchantAuthentication = new merchantAuthenticationType() { name = apiLoginId, ItemElementName = ItemChoiceType.transactionKey, Item = apiTransactionKey, }; var request = new createCustomerProfileFromTransactionRequest { transId = "2238147175" }; var controller = new createCustomerProfileFromTransactionController(request); controller.Execute(); createCustomerProfileResponse response = controller.GetApiResponse(); //validate if (response != null && response.messages.resultCode == messageTypeEnum.Ok) { if (response.messages.message != null) { Console.WriteLine("Success, CustomerProfileID : " + response.customerProfileId); Console.WriteLine("Success, CustomerPaymentProfileID : " + response.customerPaymentProfileIdList[0]); Console.WriteLine("Success, CustomerShippingProfileID : " + response.customerShippingAddressIdList[0]); } } else { if (response != null) { Console.WriteLine("Error: " + response.messages.message[0].code + " " + response.messages.message[0].text); } } }
public void SampleCodeCreateCustomerProfileFromTransaction() { LogHelper.info(Logger, "Sample createCustomerProfileFromTransaction"); ApiOperationBase <ANetApiRequest, ANetApiResponse> .MerchantAuthentication = CustomMerchantAuthenticationType; ApiOperationBase <ANetApiRequest, ANetApiResponse> .RunEnvironment = TestEnvironment; //setup transaction to use var transactionId = GetTransactionId(); var createRequest = new createCustomerProfileFromTransactionRequest { refId = RefId, transId = transactionId.ToString(CultureInfo.InvariantCulture), }; //execute and get response var createController = new createCustomerProfileFromTransactionController(createRequest); var createResponse = createController.ExecuteWithApiResponse(); //validate Assert.NotNull(createResponse); Assert.NotNull(createResponse.messages); Assert.AreEqual(messageTypeEnum.Ok, createResponse.messages.resultCode); Assert.NotNull(createResponse.customerProfileId); Assert.NotNull(createResponse.customerPaymentProfileIdList); Assert.AreNotEqual(0, createResponse.customerPaymentProfileIdList.Length); long customerProfileId; long.TryParse(createResponse.customerProfileId, out customerProfileId); Assert.AreNotEqual(0, customerProfileId); long customerPaymentProfileId; long.TryParse(createResponse.customerPaymentProfileIdList[0], out customerPaymentProfileId); Assert.AreNotEqual(0, customerPaymentProfileId); //if shipping profile is added, shipping profile id will be retrieved too }
public void MockcreateCustomerProfileFromTransactionTest() { //define all mocked objects as final var mockController = GetMockController <createCustomerProfileFromTransactionRequest, createCustomerProfileResponse>(); var mockRequest = new createCustomerProfileFromTransactionRequest { merchantAuthentication = new merchantAuthenticationType() { name = "mocktest", Item = "mockKey", ItemElementName = ItemChoiceType.transactionKey }, transId = CounterStr, }; var mockResponse = new createCustomerProfileResponse { refId = "1234", sessionToken = "sessiontoken", customerProfileId = CounterStr, customerPaymentProfileIdList = new [] { CounterStr }, customerShippingAddressIdList = new [] { CounterStr }, }; var errorResponse = new ANetApiResponse(); var results = new List <String>(); const messageTypeEnum messageTypeOk = messageTypeEnum.Ok; SetMockControllerExpectations <createCustomerProfileFromTransactionRequest, createCustomerProfileResponse, createCustomerProfileFromTransactionController>( mockController.MockObject, mockRequest, mockResponse, errorResponse, results, messageTypeOk); mockController.MockObject.Execute(AuthorizeNet.Environment.CUSTOM); //mockController.MockObject.Execute(); // or var controllerResponse = mockController.MockObject.ExecuteWithApiResponse(AuthorizeNet.Environment.CUSTOM); var controllerResponse = mockController.MockObject.GetApiResponse(); Assert.IsNotNull(controllerResponse); Assert.IsNotNull(controllerResponse.customerProfileId); LogHelper.info(Logger, "createCustomerProfileFromTransaction: Details:{0}", controllerResponse.customerProfileId); }
public async Task <ITransactionResponse> CreateCustomerProfileFromTransaction(string transactionId) { var transactionResponse = new TransactionResponse(); var task = Task.Run(() => { if (Convert.ToBoolean(string.IsNullOrEmpty(ConfigurationManager.AppSettings["AuthNetIsProduction"]) ? "false" : ConfigurationManager.AppSettings["AuthNetIsProduction"])) { ApiOperationBase <ANetApiRequest, ANetApiResponse> .RunEnvironment = AuthorizeNet.Environment.PRODUCTION; } else { ApiOperationBase <ANetApiRequest, ANetApiResponse> .RunEnvironment = AuthorizeNet.Environment.SANDBOX; } // define the merchant information (authentication / transaction id) ApiOperationBase <ANetApiRequest, ANetApiResponse> .MerchantAuthentication = new merchantAuthenticationType() { name = ApiLoginID, ItemElementName = ItemChoiceType.transactionKey, Item = ApiTransactionKey, }; var request = new createCustomerProfileFromTransactionRequest { transId = transactionId }; var controller = new createCustomerProfileFromTransactionController(request); controller.Execute(); createCustomerProfileResponse response = controller.GetApiResponse(); //validate if (response != null && response.messages.resultCode == messageTypeEnum.Ok) { if (response != null && response.messages.message != null) { System.Diagnostics.Debug.WriteLine("Success, Customer Profile ID : " + response.customerProfileId + " Customer Payment Profile ID : " + response.customerPaymentProfileIdList[0]); transactionResponse.TransId = transactionId; transactionResponse.Errors = null; transactionResponse.IsSuccess = true; transactionResponse.Messages = null; transactionResponse.CustomerProfileId = response.customerProfileId; transactionResponse.CustomerPaymentProfileId = response.customerPaymentProfileIdList[0]; } else { transactionResponse.IsSuccess = false; } } else if (response != null && response.messages.message != null) { transactionResponse.IsSuccess = false; System.Diagnostics.Debug.WriteLine("Error: " + response.messages.message[0].code + " " + response.messages.message[0].text); transactionResponse.Messages = new TransactionResponseMessage[] { new TransactionResponseMessage() { Code = response.messages.message[0].code, Description = response.messages.message[0].text } }; } return(response); }); await task; return(transactionResponse); }
public void CreateCustomerProfileFromECheckTransaction() { var rnd = new AnetRandom(DateTime.Now.Millisecond); string customerIndx = rnd.Next(99999).ToString(); ApiOperationBase <ANetApiRequest, ANetApiResponse> .MerchantAuthentication = CustomMerchantAuthenticationType; ApiOperationBase <ANetApiRequest, ANetApiResponse> .RunEnvironment = TestEnvironment; //set up data based on transaction var transactionAmount = SetValidTransactionAmount(Counter); var echeck = new bankAccountType { accountNumber = "123456", accountType = bankAccountTypeEnum.checking, checkNumber = "1234", bankName = "Bank of Seattle", routingNumber = "125000024", echeckType = echeckTypeEnum.WEB, nameOnAccount = "Joe Customer" }; //Create and submit transaction with customer info to create profile from. var paymentType = new paymentType { Item = echeck }; var transactionRequest = new transactionRequestType { transactionType = transactionTypeEnum.authOnlyTransaction.ToString(), payment = paymentType, amount = (decimal)transactionAmount, customer = new customerDataType { email = string.Format("Customer{0}@visa.com", customerIndx), taxId = string.Format("{0}{1}{2}", rnd.Next(999).ToString("000"), rnd.Next(99).ToString("00"), rnd.Next(9999).ToString("0000")) }, billTo = new customerAddressType { firstName = "New", lastName = string.Format("Customer{0}", customerIndx), company = "New Company", address = "1234 Sample St NE", city = "Bellevue", state = "WA", zip = "98001" }, shipTo = new customerAddressType { firstName = "New", lastName = string.Format("Customer{0}", customerIndx), company = "New Company", address = "1234 Sample St NE", city = "Bellevue", state = "WA", zip = "98001" } }; var request = new createTransactionRequest { transactionRequest = transactionRequest }; var controller = new createTransactionController(request); controller.Execute(); var response = controller.GetApiResponse(); //Verify that transaction was accepted and save the transaction ID Assert.AreEqual(messageTypeEnum.Ok, response.messages.resultCode); string txnID = response.transactionResponse.transId; //Build and submit request to create Customer Profile based on the accepted transaction createCustomerProfileFromTransactionRequest profileFromTransReq = new createCustomerProfileFromTransactionRequest(); profileFromTransReq.transId = txnID; createCustomerProfileFromTransactionController profileFromTrxnController = new createCustomerProfileFromTransactionController(profileFromTransReq); profileFromTrxnController.Execute(); createCustomerProfileResponse createProfResp = profileFromTrxnController.GetApiResponse(); Assert.AreEqual(messageTypeEnum.Ok, createProfResp.messages.resultCode); //Get customer profile and verify that profile data matches the data submitted with the transaction getCustomerProfileRequest profileReq = new getCustomerProfileRequest { customerProfileId = createProfResp.customerProfileId }; getCustomerProfileController getCustContr = new getCustomerProfileController(profileReq); getCustContr.Execute(); var getCustResp = getCustContr.GetApiResponse(); //validate Assert.AreEqual("1", response.transactionResponse.messages[0].code); }
public ANetApiResponse CreateProfileFromTransaction(Environment env, createCustomerProfileFromTransactionRequest request) { ANetApiResponse response = null; if (null == request) { throw new ArgumentNullException("request"); } //Logger.debug(string.Format("MerchantInfo->LoginId/TransactionKey: '{0}':'{1}'->{2}", // request.merchantAuthentication.name, request.merchantAuthentication.ItemElementName, request.merchantAuthentication.Item)); var postUrl = GetPostUrl(env); var webRequest = (HttpWebRequest)WebRequest.Create(postUrl); webRequest.Method = "POST"; webRequest.ContentType = "text/xml"; webRequest.KeepAlive = true; webRequest.Proxy = HttpUtility.SetProxyIfRequested(webRequest.Proxy); //set the http connection timeout var httpConnectionTimeout = AuthorizeNet.Environment.getIntProperty(Constants.HttpConnectionTimeout); webRequest.Timeout = (httpConnectionTimeout != 0 ? httpConnectionTimeout : Constants.HttpConnectionDefaultTimeout); //set the time out to read/write from stream var httpReadWriteTimeout = AuthorizeNet.Environment.getIntProperty(Constants.HttpReadWriteTimeout); webRequest.ReadWriteTimeout = (httpReadWriteTimeout != 0 ? httpReadWriteTimeout : Constants.HttpReadWriteDefaultTimeout); var requestType = typeof(createCustomerProfileFromTransactionRequest); var serializer = new XmlSerializer(requestType); using (var writer = new XmlTextWriter(webRequest.GetRequestStream(), Encoding.UTF8)) { serializer.Serialize(writer, request); } // Get the response String responseAsString = null; //Logger.debug(string.Format("Retreiving Response from Url: '{0}'", postUrl)); // Set Tls to Tls1.2 ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12; using (var webResponse = webRequest.GetResponse()) { //Logger.debug(string.Format("Received Response: '{0}'", webResponse)); using (var responseStream = webResponse.GetResponseStream()) { if (null != responseStream) { var result = new StringBuilder(); using (var reader = new StreamReader(responseStream)) { while (!reader.EndOfStream) { result.Append((char)reader.Read()); if (result.Length >= MaxResponseLength) { throw new Exception("response is too long."); } } responseAsString = result.Length > 0 ? result.ToString() : null; } //Logger.debug(string.Format("Response from Stream: '{0}'", responseAsString)); } } } if (null != responseAsString) { using (var memoryStreamForResponseAsString = new MemoryStream(Encoding.UTF8.GetBytes(responseAsString))) { var responseType = typeof(createCustomerProfileResponse); var deSerializer = new XmlSerializer(responseType); Object deSerializedObject; try { // try deserializing to the expected response type deSerializedObject = deSerializer.Deserialize(memoryStreamForResponseAsString); } catch (Exception) { // probably a bad response, try if this is an error response memoryStreamForResponseAsString.Seek(0, SeekOrigin.Begin); //start from beginning of stream var genericDeserializer = new XmlSerializer(typeof(createCustomerProfileResponse)); deSerializedObject = genericDeserializer.Deserialize(memoryStreamForResponseAsString); } //if error response if (deSerializedObject is Utility.ErrorResponse) { response = deSerializedObject as Utility.ErrorResponse; } else { //actual response of type expected if (deSerializedObject is createCustomerProfileResponse) { response = deSerializedObject as createCustomerProfileResponse; } else if (deSerializedObject is ANetApiResponse) //generic response { response = deSerializedObject as ANetApiResponse; } } } } return(response); //var httpApiResponse = AuthorizeNet.Util.HttpUtility.PostData<AuthorizeNet.Api.Controllers.Bases.ApiOperationBase.TQ, TS>(environment, GetApiRequest()); //return _result; }
//public static ANetApiResponse Run(string ApiLoginID, string ApiTransactionKey, string transactionId) //{ // Console.WriteLine("CreateCustomerProfileFromTransaction Sample"); // ApiOperationBase<ANetApiRequest, ANetApiResponse>.RunEnvironment = AuthorizeNET.Environment.SANDBOX; // ApiOperationBase<ANetApiRequest, ANetApiResponse>.MerchantAuthentication = new merchantAuthenticationType() // { // name = ApiLoginID, // ItemElementName = ItemChoiceType.transactionKey, // Item = ApiTransactionKey, // }; // var customerProfile = new customerProfileBaseType // { // merchantCustomerId = "123212", // email = "*****@*****.**", // description = "This is a sample customer profile" // }; // var request = new createCustomerProfileFromTransactionRequest // { // transId = transactionId, // // You can either specify the customer information in form of customerProfileBaseType object // customer = customerProfile // // OR // // You can just provide the customer Profile ID // // customerProfileId = "123343" // }; // var controller = new createCustomerProfileFromTransactionController(request); // controller.Execute(); // createCustomerProfileResponse response = controller.GetApiResponse(); // //validate // if (response != null && response.messages.resultCode == messageTypeEnum.Ok) // { // if (response != null && response.messages.message != null) // { // Console.WriteLine("Success, CustomerProfileID : " + response.customerProfileId); // Console.WriteLine("Success, CustomerPaymentProfileID : " + response.customerPaymentProfileIdList[0]); // Console.WriteLine("Success, CustomerShippingProfileID : " + response.customerShippingAddressIdList[0]); // } // } // else if(response != null) // { // Console.WriteLine("Error: " + response.messages.message[0].code + " " + response.messages.message[0].text); // } // return response; //} public static void CreateCustomerProfileFromTransactionExec(String ApiLoginID, String ApiTransactionKey) { using (CsvReader csv = new CsvReader(new StreamReader(new FileStream(@"../../../CSV_DATA/CreateACustomerProfileFromATransaction.csv", FileMode.Open)), true)) { Console.WriteLine("CreateCustomerProfileFromTransaction Sample"); int fieldCount = csv.FieldCount; //Append Data var item1 = DataAppend.ReadPrevData(); using (CsvFileWriter writer = new CsvFileWriter(new FileStream(@"../../../CSV_DATA/Outputfile.csv", FileMode.Open))) { int flag = 0; string[] headers = csv.GetFieldHeaders(); while (csv.ReadNextRecord()) { // Create Instance of Customer Api ApiOperationBase <ANetApiRequest, ANetApiResponse> .RunEnvironment = AuthorizeNET.Environment.SANDBOX; // define the merchant information (authentication / transaction id) ApiOperationBase <ANetApiRequest, ANetApiResponse> .MerchantAuthentication = new merchantAuthenticationType() { name = ApiLoginID, ItemElementName = ItemChoiceType.transactionKey, Item = ApiTransactionKey, }; //CustomersApi instance = new CustomersApi(EnvironmentSet.Sandbox); // Customer Response Object // Customer response = null; //initialization string TestCaseId = null; string CustomerProfileId = null; string TransactionId = null; for (int i = 0; i < fieldCount; i++) { switch (headers[i]) { case "CustomerProfileId": CustomerProfileId = csv[i]; break; case "TransactionId": TransactionId = csv[i]; break; case "TestCaseId": TestCaseId = csv[i]; break; default: break; } } //Write to output file CsvRow row = new CsvRow(); try { if (flag == 0) { row.Add("TestCaseId"); row.Add("APIName"); row.Add("Status"); row.Add("TimeStamp"); writer.WriteRow(row); flag = flag + 1; //Append Data foreach (var item in item1) { writer.WriteRow(item); } } var customerProfile = new customerProfileBaseType { merchantCustomerId = "123212", email = "*****@*****.**", description = "This is a sample customer profile" }; var request = new createCustomerProfileFromTransactionRequest(); request.customerProfileId = CustomerProfileId; request.customer = customerProfile; request.transId = TransactionId; // instantiate the controller that will call the service var controller = new createCustomerProfileFromTransactionController(request); controller.Execute(); // get the response from the service (errors contained if any) var response = controller.GetApiResponse(); if (response != null && response.messages.resultCode == messageTypeEnum.Ok && response.messages.message != null) { try { //Assert.AreEqual(response.Id, customerProfileId); Console.WriteLine("Assertion Succeed! Valid CustomerId fetched."); CsvRow row1 = new CsvRow(); row1.Add("CACFPT_00" + flag.ToString()); row1.Add("createCustomerFromPaymentTransaction"); row1.Add("Pass"); row1.Add(DateTime.Now.ToString("yyyy/MM/dd" + "::" + "HH:mm:ss:fff")); writer.WriteRow(row1); // Console.WriteLine("Success " + TestcaseID + " CustomerID : " + response.Id); flag = flag + 1; Console.WriteLine("Success, CustomerProfileID : " + response.customerProfileId); Console.WriteLine("Success, CustomerPaymentProfileID : " + response.customerPaymentProfileIdList[0]); Console.WriteLine("Success, CustomerShippingProfileID : " + response.customerShippingAddressIdList[0]); } catch { CsvRow row1 = new CsvRow(); row1.Add("CACFPT_00" + flag.ToString()); row1.Add("createCustomerFromPaymentTransaction"); row1.Add("Fail"); row1.Add(DateTime.Now.ToString("yyyy/MM/dd" + "::" + "HH:mm:ss:fff")); writer.WriteRow(row1); Console.WriteLine("Assertion Failed! Invalid CustomerId fetched."); flag = flag + 1; } } else { CsvRow row1 = new CsvRow(); row1.Add("CACFPT_00" + flag.ToString()); row1.Add("createCustomerFromPaymentTransaction"); row1.Add("Fail"); row1.Add(DateTime.Now.ToString("yyyy/MM/dd" + "::" + "HH:mm:ss:fff")); writer.WriteRow(row1); //Console.WriteLine("Assertion Failed! Invalid CustomerId fetched."); flag = flag + 1; } } catch (Exception e) { CsvRow row2 = new CsvRow(); row2.Add("CACFPT_00" + flag.ToString()); row2.Add("createCustomerFromPaymentTransaction"); row2.Add("Fail"); row2.Add(DateTime.Now.ToString("yyyy/MM/dd" + "::" + "HH:mm:ss:fff")); writer.WriteRow(row2); flag = flag + 1; Console.WriteLine(TestCaseId + " Error Message " + e.Message); } } } } }