/
C# SDK Sample: Customer Credit Cards
C# SDK Sample: Customer Credit Cards
using System; using System.Collections.Generic; using com.ultracart.admin.v2.Api; using com.ultracart.admin.v2.Client; using com.ultracart.admin.v2.Model; using NUnit.Framework; namespace SdkSample { // This sample uses NUnit Framework [TestFixture] public class UpdateCustomerCreditCard { private Customer CreateNewCustomer(CustomerApi api) { var random = new Random(); var i = random.Next(); Customer customer = new Customer { Email = "sample" + i + "@ultracart.com", Password = "change_me" }; CustomerResponse response = api.InsertCustomer(customer); return response.Customer; } // HostedFields code: // https://ultracart.atlassian.net/wiki/spaces/ucdoc/pages/160235523/C+SDK+Sample+Hosted+Fields+Credit+Card+Numbers private HostedFields.JsonResult UploadCardNumber(string merchantId, string cardNumber) { HostedFields hostedFields = HostedFields.Create(merchantId); return hostedFields.StoreNumber(cardNumber); } [Test] public void AddTwoCreditCards() { // See https://secure.ultracart.com/merchant/configuration/apiManagementApp.do const string simpleKey = "508052342b482a015d85c69048030a0005a9da7cea5afe015d85c69048030a00"; Configuration.Default.ApiKey.Add("x-ultracart-simple-key", simpleKey); Configuration.Default.DefaultHeader.Add("X-UltraCart-Api-Version", "2017-03-01"); var api = new CustomerApi(); Customer customer = CreateNewCustomer(api); // add a credit card. // use hosted fields to upload the credit card numbers. // See: https://github.com/UltraCart/hosted_fields const string merchantId = "DEMO"; const string cardNumber1 = "4444333322221111"; const int expYear1 = 2025; const int expMonth1 = 2; HostedFields.JsonResult uploadResult1 = UploadCardNumber(merchantId, cardNumber1); CustomerCard card1 = new CustomerCard { CardExpirationMonth = expMonth1, CardExpirationYear = expYear1, CardNumberToken = uploadResult1.token, CardNumber = uploadResult1.maskedValue, CardType = uploadResult1.cardType }; const string cardNumber2 = "4111111111111111"; const int expYear2 = 2027; const int expMonth2 = 6; HostedFields.JsonResult uploadResult2 = UploadCardNumber(merchantId, cardNumber2); CustomerCard card2 = new CustomerCard { CardExpirationMonth = expMonth2, CardExpirationYear = expYear2, CardNumberToken = uploadResult2.token, CardNumber = uploadResult2.maskedValue, CardType = uploadResult2.cardType }; customer.Cards = new List<CustomerCard> {card1, card2}; String expansion = "billing,shipping,cards,pricing_tiers"; CustomerResponse customerResponse = api.UpdateCustomer(customer, customer.CustomerProfileOid, expansion); if (customerResponse.Success == true) { Console.WriteLine(customerResponse.Customer); } else { Console.WriteLine(customerResponse.Error.ErrorCode); Console.WriteLine(customerResponse.Error.DeveloperMessage); Console.WriteLine(customerResponse.Error.UserMessage); Console.WriteLine(customerResponse.Error.MoreInfo); } } [Test] public void UpdateCreditCard() { // See https://secure.ultracart.com/merchant/configuration/apiManagementApp.do const string simpleKey = "508052342b482a015d85c69048030a0005a9da7cea5afe015d85c69048030a00"; Configuration.Default.ApiKey.Add("x-ultracart-simple-key", simpleKey); Configuration.Default.DefaultHeader.Add("X-UltraCart-Api-Version", "2017-03-01"); var api = new CustomerApi(); const int sampleCustomerProfileId = 3336562; const string expansion = "billing,shipping,cards,pricing_tiers"; CustomerResponse customerResponse = api.GetCustomer(sampleCustomerProfileId, expansion); Customer customer = customerResponse.Customer; // I know this customer has a credit card on file. CustomerCard card = customer.Cards[0]; card.CardExpirationMonth = 12; card.CardExpirationYear = 2035; customerResponse = api.UpdateCustomer(customer, customer.CustomerProfileOid, expansion); if (customerResponse.Success == true) { Console.WriteLine(customerResponse.Customer); } else { Console.WriteLine(customerResponse.Error.ErrorCode); Console.WriteLine(customerResponse.Error.DeveloperMessage); Console.WriteLine(customerResponse.Error.UserMessage); Console.WriteLine(customerResponse.Error.MoreInfo); } } } }