public ActionResult Confirmed(Guid id, string token, string payerId) { var viewData = new ConfirmedViewData { Id = id, Token = token, PayerId = payerId }; var accessToken = new OAuthTokenCredential(ConfigManager.Instance.GetProperties()["ClientID"], ConfigManager.Instance.GetProperties()["ClientSecret"]).GetAccessToken(); var apiContext = new APIContext(accessToken); var payment = new Payment() { id = (string)Session[id.ToString()], }; var executedPayment = payment.Execute(apiContext, new PaymentExecution { payer_id = payerId }); viewData.AuthorizationId = executedPayment.transactions[0].related_resources[0].authorization.id; viewData.JsonRequest = JObject.Parse(payment.ConvertToJson()).ToString(Formatting.Indented); viewData.JsonResponse = JObject.Parse(executedPayment.ConvertToJson()).ToString(Formatting.Indented); return View(viewData); }
protected void Page_Load(object sender, EventArgs e) { HttpContext CurrContext = HttpContext.Current; // ###CreditCard // A resource representing a credit card that can be // used to fund a payment. CreditCardToken credCardToken = new CreditCardToken(); credCardToken.credit_card_id = "CARD-5BT058015C739554AKE2GCEI"; // ###AmountDetails // Let's you specify details of a payment amount. AmountDetails amntDetails = new AmountDetails(); amntDetails.shipping = "1"; amntDetails.subtotal = "5"; amntDetails.tax = "1"; // ###Amount // Let's you specify a payment amount. Amount amnt = new Amount(); amnt.currency = "USD"; // Total must be equal to the sum of shipping, tax and subtotal. amnt.total = "7"; amnt.details = amntDetails; // ###Transaction // A transaction defines the contract of a // payment - what is the payment for and who // is fulfilling it. Transaction is created with // a `Payee` and `Amount` types Transaction tran = new Transaction(); tran.amount = amnt; tran.description = "This is the payment transaction description."; // The Payment creation API requires a list of // Transaction; add the created `Transaction` // to a List List<Transaction> transactions = new List<Transaction>(); transactions.Add(tran); // ###FundingInstrument // A resource representing a Payeer's funding instrument. // Use a Payer ID (A unique identifier of the payer generated // and provided by the facilitator. This is required when // creating or using a tokenized funding instrument) // and the `CreditCardDetails` FundingInstrument fundInstrument = new FundingInstrument(); fundInstrument.credit_card_token = credCardToken; // The Payment creation API requires a list of // FundingInstrument; add the created `FundingInstrument` // to a List List<FundingInstrument> fundingInstrumentList = new List<FundingInstrument>(); fundingInstrumentList.Add(fundInstrument); // ###Payer // A resource representing a Payer that funds a payment // Use the List of `FundingInstrument` and the Payment Method // as 'credit_card' Payer payr = new Payer(); payr.funding_instruments = fundingInstrumentList; payr.payment_method = "credit_card"; // ###Payment // A Payment Resource; create one using // the above types and intent as 'sale' Payment pymnt = new Payment(); pymnt.intent = "sale"; pymnt.payer = payr; pymnt.transactions = transactions; try { // ###AccessToken // Retrieve the access token from // OAuthTokenCredential by passing in // ClientID and ClientSecret // It is not mandatory to generate Access Token on a per call basis. // Typically the access token can be generated once and // reused within the expiry window string accessToken = new OAuthTokenCredential(ConfigManager.Instance.GetProperties()["ClientID"], ConfigManager.Instance.GetProperties()["ClientSecret"]).GetAccessToken(); // ### Api Context // Pass in a `ApiContext` object to authenticate // the call and to send a unique request id // (that ensures idempotency). The SDK generates // a request id if you do not pass one explicitly. APIContext apiContext = new APIContext(accessToken); // Use this variant if you want to pass in a request id // that is meaningful in your application, ideally // a order id. // String requestId = Long.toString(System.nanoTime(); // APIContext apiContext = new APIContext(accessToken, requestId )); // Create a payment by posting to the APIService // using a valid AccessToken // The return object contains the status; // Create a payment by posting to the APIService // using a valid AccessToken // The return object contains the status; Payment createdPayment = pymnt.Create(apiContext); CurrContext.Items.Add("ResponseJson", JObject.Parse(createdPayment.ConvertToJson()).ToString(Formatting.Indented)); } catch (PayPal.Exception.PayPalException ex) { CurrContext.Items.Add("Error", ex.Message); } CurrContext.Items.Add("RequestJson", JObject.Parse(pymnt.ConvertToJson()).ToString(Formatting.Indented)); Server.Transfer("~/Response.aspx"); }
public ActionResult CreatePayment(string description, decimal price, decimal tax = 0, decimal shipping = 0) { var viewData = new PayPalViewData(); var guid = Guid.NewGuid().ToString(); var paymentInit = new Payment { intent = "authorize", payer = new Payer { payment_method = "paypal" }, transactions = new List<Transaction> { new Transaction { amount = new Amount { currency = "USD", total = (price + tax + shipping).ToString(), details = new Details { subtotal = price.ToString(), tax = tax.ToString(), shipping = shipping.ToString() } }, description = description } }, redirect_urls = new RedirectUrls { return_url = Utilities.ToAbsoluteUrl(HttpContext, Url.Action("Confirmed", new { id = guid })), cancel_url = Utilities.ToAbsoluteUrl(HttpContext, Url.Action("Canceled", new { id = guid })), }, }; viewData.JsonRequest = JObject.Parse(paymentInit.ConvertToJson()).ToString(Formatting.Indented); try { var accessToken = new OAuthTokenCredential(ConfigManager.Instance.GetProperties()["ClientID"], ConfigManager.Instance.GetProperties()["ClientSecret"]).GetAccessToken(); var apiContext = new APIContext(accessToken); var createdPayment = paymentInit.Create(apiContext); var approvalUrl = createdPayment.links.ToArray().FirstOrDefault(f => f.rel.Contains("approval_url")); if (approvalUrl != null) { Session.Add(guid, createdPayment.id); return Redirect(approvalUrl.href); } viewData.JsonResponse = JObject.Parse(createdPayment.ConvertToJson()).ToString(Formatting.Indented); return View("Error", viewData); } catch (PayPalException ex) { viewData.ErrorMessage = ex.Message; return View("Error", viewData); } }
// ##Create // Sample showing to create a Payment using // CreditCard as a FundingInstrument protected void Page_Load(object sender, EventArgs e) { HttpContext CurrContext = HttpContext.Current; // ###Items // Items within a transaction. Item item = new Item(); item.name = "Item Name"; item.currency = "USD"; item.price = "1"; item.quantity = "5"; item.sku = "sku"; List<Item> itms = new List<Item>(); itms.Add(item); ItemList itemList = new ItemList(); itemList.items = itms; // ###Address // Base Address object used as shipping or billing // address in a payment. Address billingAddress = new Address(); billingAddress.city = "Johnstown"; billingAddress.country_code = "US"; billingAddress.line1 = "52 N Main ST"; billingAddress.postal_code = "43210"; billingAddress.state = "OH"; // ###CreditCard // A resource representing a credit card that can be // used to fund a payment. CreditCard crdtCard = new CreditCard(); crdtCard.billing_address = billingAddress; crdtCard.cvv2 = "874"; crdtCard.expire_month = 11; crdtCard.expire_year = 2018; crdtCard.first_name = "Joe"; crdtCard.last_name = "Shopper"; crdtCard.number = "4417119669820331"; crdtCard.type = "visa"; // ###Details // Let's you specify details of a payment amount. Details details = new Details(); details.shipping = "1"; details.subtotal = "5"; details.tax = "1"; // ###Amount // Let's you specify a payment amount. Amount amnt = new Amount(); amnt.currency = "USD"; // Total must be equal to sum of shipping, tax and subtotal. amnt.total = "7"; amnt.details = details; // ###Transaction // A transaction defines the contract of a // payment - what is the payment for and who // is fulfilling it. Transaction tran = new Transaction(); tran.amount = amnt; tran.description = "This is the payment transaction description."; tran.item_list = itemList; // The Payment creation API requires a list of // Transaction; add the created `Transaction` // to a List List<Transaction> transactions = new List<Transaction>(); transactions.Add(tran); // ###FundingInstrument // A resource representing a Payer's funding instrument. // For direct credit card payments, set the CreditCard // field on this object. FundingInstrument fundInstrument = new FundingInstrument(); fundInstrument.credit_card = crdtCard; // The Payment creation API requires a list of // FundingInstrument; add the created `FundingInstrument` // to a List List<FundingInstrument> fundingInstrumentList = new List<FundingInstrument>(); fundingInstrumentList.Add(fundInstrument); // ###Payer // A resource representing a Payer that funds a payment // Use the List of `FundingInstrument` and the Payment Method // as `credit_card` Payer payr = new Payer(); payr.funding_instruments = fundingInstrumentList; payr.payment_method = "credit_card"; // ###Payment // A Payment Resource; create one using // the above types and intent as `sale` or `authorize` Payment pymnt = new Payment(); pymnt.intent = "sale"; pymnt.payer = payr; pymnt.transactions = transactions; try { // ### Api Context // Pass in a `APIContext` object to authenticate // the call and to send a unique request id // (that ensures idempotency). The SDK generates // a request id if you do not pass one explicitly. // See [Configuration.cs](/Source/Configuration.html) to know more about APIContext.. APIContext apiContext = Configuration.GetAPIContext(); // Create a payment using a valid APIContext Payment createdPayment = pymnt.Create(apiContext); CurrContext.Items.Add("ResponseJson", JObject.Parse(createdPayment.ConvertToJson()).ToString(Formatting.Indented)); } catch (PayPal.Exception.PayPalException ex) { CurrContext.Items.Add("Error", ex.Message); } CurrContext.Items.Add("RequestJson", JObject.Parse(pymnt.ConvertToJson()).ToString(Formatting.Indented)); Server.Transfer("~/Response.aspx"); }
//Establishing the Payment private static void PaymentRequest() { try { Payment p = new Payment() { intent = "sale", payer = new Payer { payment_method = "credit_card", funding_instruments = new List<FundingInstrument> { new FundingInstrument { credit_card = new CreditCard { type = "visa", number = "4983742029722659", expire_month = 12, expire_year = 2019, cvv2 = "222", first_name = "Valerio", last_name = "DAlessio", billing_address = new Address { line1 = "52 N Main ST", city = "Johnstown", country_code = "US", postal_code = "43210", state = "OH", }, }, }, }, }, transactions = new List<Transaction> { new Transaction { amount = new Amount { total = "10", currency = "GBP" }, description = "This is the payment transaction description" } }, }.Create(token); Console.WriteLine("Payment Completed: \n\r\n\r"); Console.WriteLine(p.ConvertToJson()); } catch (Exception e) { Console.WriteLine("RUNTIME EXCEPTION" + e); } }
protected void Page_Load(object sender, EventArgs e) { HttpContext CurrContext = HttpContext.Current; // ###Items // Items within a transaction. Item item = new Item(); item.name = "Item Name"; item.currency = "USD"; item.price = "1"; item.quantity = "5"; item.sku = "sku"; List<Item> itms = new List<Item>(); itms.Add(item); ItemList itemList = new ItemList(); itemList.items = itms; // ###CreditCard // A resource representing a credit card that can be // used to fund a payment. CreditCardToken credCardToken = new CreditCardToken(); credCardToken.credit_card_id = "CARD-5MY32504F4899612AKIHAQHY"; // ###Details // Let's you specify details of a payment amount. Details details = new Details(); details.shipping = "1"; details.subtotal = "5"; details.tax = "1"; // ###Amount // Let's you specify a payment amount. Amount amnt = new Amount(); amnt.currency = "USD"; // Total must be equal to the sum of shipping, tax and subtotal. amnt.total = "7"; amnt.details = details; // ###Transaction // A transaction defines the contract of a // payment - what is the payment for and who // is fulfilling it. Transaction tran = new Transaction(); tran.amount = amnt; tran.description = "This is the payment transaction description."; tran.item_list = itemList; // The Payment creation API requires a list of // Transaction; add the created `Transaction` // to a List List<Transaction> transactions = new List<Transaction>(); transactions.Add(tran); // ###FundingInstrument // A resource representing a Payer's funding instrument. // For stored credit card payments, set the CreditCardToken // field on this object. FundingInstrument fundInstrument = new FundingInstrument(); fundInstrument.credit_card_token = credCardToken; // The Payment creation API requires a list of // FundingInstrument; add the created `FundingInstrument` // to a List List<FundingInstrument> fundingInstrumentList = new List<FundingInstrument>(); fundingInstrumentList.Add(fundInstrument); // ###Payer // A resource representing a Payer that funds a payment // Use the List of `FundingInstrument` and the Payment Method // as 'credit_card' Payer payr = new Payer(); payr.funding_instruments = fundingInstrumentList; payr.payment_method = "credit_card"; // ###Payment // A Payment Resource; create one using // the above types and intent as 'sale' Payment pymnt = new Payment(); pymnt.intent = "sale"; pymnt.payer = payr; pymnt.transactions = transactions; try { // ### Api Context // Pass in a `APIContext` object to authenticate // the call and to send a unique request id // (that ensures idempotency). The SDK generates // a request id if you do not pass one explicitly. // See [Configuration.cs](/Source/Configuration.html) to know more about APIContext.. APIContext apiContext = Configuration.GetAPIContext(); // Create a payment using a valid APIContext Payment createdPayment = pymnt.Create(apiContext); CurrContext.Items.Add("ResponseJson", JObject.Parse(createdPayment.ConvertToJson()).ToString(Formatting.Indented)); } catch (PayPal.Exception.PayPalException ex) { CurrContext.Items.Add("Error", ex.Message); } CurrContext.Items.Add("RequestJson", JObject.Parse(pymnt.ConvertToJson()).ToString(Formatting.Indented)); Server.Transfer("~/Response.aspx"); }