static void Main(string[] args) { System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12; // initialise PIN by passing your API Key // See: https://pin.net.au/docs/api#keys PinService ps = new PinService(ConfigurationManager.AppSettings["Secret_API"]); // https://pin.net.au/docs/api/test-cards // 5520000000000000 - Test Mastercard // 4200000000000000 - Test Visa var card = new Card(); card.CardNumber = "5520000000000000"; card.CVC = "111"; card.ExpiryMonth = DateTime.Today.Month.ToString(); // Use the real Expiry card.ExpiryYear = (DateTime.Today.Year + 1).ToString(); // Not my defaults! card.Name = "Roland Robot"; card.Address1 = "42 Sevenoaks St"; card.Address2 = null; card.City = "Lathlain"; card.Postcode = "6454"; card.State = "WA"; card.Country = "Australia"; var response = ps.Charge(new PostCharge { Amount = 1500, Card = card, Currency = "AUD", Description = "Desc", Email = "*****@*****.**", IPAddress = "127.0.0.1" }); System.Console.WriteLine(response.Charge.Success); // Refunds - Pin supports partial refunds // https://pin.net.au/docs/api/customers#get-customers-charges var refund = ps.Refund(response.Token, 200); refund = ps.Refund(response.Token, 100); var refunds = ps.Refunds(response.Token); // Searching for a Charge // See https://pin.net.au/docs/api/charges#search-charges for more detail var respChargesSearch = ps.ChargesSearch(new Actions.ChargeSearch { Query = "", Sort = ChargeSearchSortEnum.Amount, SortDirection = SortDirectionEnum.Descending }); System.Console.WriteLine(respChargesSearch.Count.ToString() + " transactions found"); foreach (var r in respChargesSearch.Response) { System.Console.WriteLine(r.Description + " " + r.Amount.ToString()); } var respChargeSearch = ps.Charge(respChargesSearch.Response[0].Token); System.Console.WriteLine(respChargeSearch.Response.Description); // Create Customer // See: https://pin.net.au/docs/api/customers#post-customers var customer = new Customer(); customer.Email = "*****@*****.**"; customer.Card = new Card(); customer.Card.CardNumber = "5520000000000000"; customer.Card.ExpiryMonth = "05"; customer.Card.ExpiryYear = "2024"; customer.Card.CVC = "123"; customer.Card.Name = "Roland Robot"; customer.Card.Address1 = "42 Sevenoaks St"; customer.Card.Address2 = ""; customer.Card.City = "Lathlain"; customer.Card.Postcode = "6454"; customer.Card.State = "WA"; customer.Card.Country = "Australia"; var respCustomer = ps.CustomerAdd(customer); System.Console.WriteLine("Customer token: " + respCustomer.Response.Token); var plan = new Plan(); plan.Name = "Recurring Plan Name"; plan.Amount = 2795; plan.Currency = "AUD"; plan.Interval = 1; plan.IntervalUnit = "month"; var newPlan = ps.PlanAdd(plan); System.Console.WriteLine("Plan token: " + newPlan.Token); var subs = new Subscription(); subs.PlanToken = newPlan.Token; subs.CustomerToken = respCustomer.Response.Token; var newSubs = ps.SubscriptionAdd(subs); System.Console.WriteLine("Subscription token: " + newSubs.Token); // Get Customer var customers = ps.Customers(); // Customers supports pagination if (customers.Pagination.Pages > 1) { customers = ps.Customers(1); } // Update Customer customer = customers.Customer[0]; customer.Card = new Card(); customer.Card.CardNumber = "5520000000000000"; customer.Card.ExpiryMonth = "05"; customer.Card.ExpiryYear = "2014"; customer.Card.CVC = "123"; customer.Card.Name = "Roland Robot"; customer.Card.Address1 = "42 Sevenoaks St"; customer.Card.Address2 = ""; customer.Card.City = "Lathlain"; customer.Card.Postcode = "6454"; customer.Card.State = "WA"; customer.Card.Country = "Australia"; customer.State = "NSW"; var customerUpate = ps.CustomerUpate(customer); // Get a customer by token var current = ps.Customer(customerUpate.Customer.Token); var respCustomerCharge = ps.Charge(new PostCharge { IPAddress = "127.0.0.1", Amount = 1000, Description = "Charge by customer token: " + customer.Email, Email = customer.Email, CustomerToken = customer.Token }); // Card Token // https://pin.net.au/docs/api/cards // 5520000000000000 - Test Mastercard // 4200000000000000 - Test Visa card = new Card(); card.APIKey = ""; // OPTIONAL. Your publishable API key, if requesting from an insecure environment. // card.CardNumber = "5520000000000000"; card.CVC = "111"; card.ExpiryMonth = DateTime.Today.Month.ToString(); // Use the real Expiry card.ExpiryYear = (DateTime.Today.Year + 1).ToString(); // Not my defaults! card.Name = "Roland Robot"; card.Address1 = "42 Sevenoaks St"; card.Address2 = ""; card.City = "Lathlain"; card.Postcode = "6454"; card.State = "WA"; card.Country = "Australia"; var respCardCreate = ps.CardCreate(card); response = ps.Charge(new PostCharge { Amount = 1500, CardToken = card.Token, Currency = "AUD", Description = "Desc", Email = "*****@*****.**", IPAddress = "127.0.0.1" }); System.Console.WriteLine(response.Charge.Success); // Card tokens can only be used once. // If you try and use it a second time, you will get the following message: response = ps.Charge(new PostCharge { Amount = 1500, CardToken = card.Token, Currency = "AUD", Description = "Desc", Email = "*****@*****.**", IPAddress = "127.0.0.1" }); System.Console.WriteLine(response.Error); // "token_already_used" System.Console.WriteLine(response.Description); // "Token already used. Card tokens can only be used once, to create a charge or assign a card to a customer." }