public Payment CreatePayment(string email, PaymentMethod paymntMethod, string orderAmount, string orderDescription, string returnUrl, string cancelUrl) { Payment pymnt = null; AmountDetails amountDetails = new AmountDetails(); amountDetails.shipping = "2"; amountDetails.tax = "1"; amountDetails.subtotal = orderAmount; Amount amount = new Amount(); amount.currency = "USD"; int total = Convert.ToInt32(amountDetails.tax) + Convert.ToInt32(amountDetails.shipping) + Convert.ToInt32(orderAmount); amount.total = total.ToString(); amount.details = amountDetails; RedirectUrls redirectUrls = new RedirectUrls(); redirectUrls.return_url = returnUrl; redirectUrls.cancel_url = cancelUrl; Transaction transaction = new Transaction(); transaction.amount = amount; transaction.description = orderDescription; List<Transaction> transactions = new List<Transaction>(); transactions.Add(transaction); Payer payer = new Payer(); payer.payment_method = paymntMethod.ToString(); Payment pyment = new Payment(); pyment.intent = "sale"; pyment.payer = payer; pyment.transactions = transactions; pyment.redirect_urls = redirectUrls; pymnt = pyment.Create(accessToken); return pymnt; }
protected void Page_Load(object sender, EventArgs e) { HttpContext CurrContext = HttpContext.Current; Payment pymnt = null; // ## ExecutePayment if (Request.Params["PayerID"] != null) { pymnt = new Payment(); if (Request.Params["guid"] != null) { pymnt.id = (string)Session[Request.Params["guid"]]; } 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.GetProperty("ClientID"), ConfigManager.Instance.GetProperty("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 )); PaymentExecution pymntExecution = new PaymentExecution(); pymntExecution.payer_id = Request.Params["PayerID"]; Payment executedPayment = pymnt.Execute(apiContext, pymntExecution); CurrContext.Items.Add("ResponseJson", JObject.Parse(executedPayment.ConvertToJson()).ToString(Formatting.Indented)); } catch (PayPal.Exception.PayPalException ex) { CurrContext.Items.Add("Error", ex.Message); } } // ## Creating Payment else { // ###Payer // A resource representing a Payer that funds a payment // Payment Method // as `paypal` Payer payr = new Payer(); payr.payment_method = "paypal"; Random rndm = new Random(); var guid = Convert.ToString(rndm.Next(100000)); string baseURI = Request.Url.Scheme + "://" + Request.Url.Authority + "/PaymentWithPayPal.aspx?"; // # Redirect URLS RedirectUrls redirUrls = new RedirectUrls(); redirUrls.cancel_url = baseURI + "guid=" + guid; redirUrls.return_url = baseURI + "guid=" + guid; // ###AmountDetails // Let's you specify details of a payment amount. AmountDetails amntDetails = new AmountDetails(); amntDetails.tax = "15"; amntDetails.shipping = "10"; amntDetails.subtotal = "75"; // ###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 = "100"; amnt.details = amntDetails; // ### List<Item> // ### Create a new ItemList to contain the list of items to be included in this transaction ItemList item_list = new PayPal.Api.Payments.ItemList(); item_list.items = new List<Item>(); // Now we build the items. // REMEMBER: The sum total of all of the Items in the ItemList must equal the value entered in AmountDetails.subtotal // Create Item 1 Item Item1 = new Item(); Item1.currency = "USD"; Item1.name = "Example Item 1"; Item1.price = "45"; Item1.quantity = "1"; Item1.sku = "654321"; // Create Item 2 Item Item2 = new Item(); Item2.currency = "USD"; Item2.name = "Example Item 2"; Item2.price = "30"; Item2.quantity = "1"; Item2.sku = "123456"; // Add the Items to the ItemList item_list.items.Add(Item1); item_list.items.Add(Item2); // ###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 List<Transaction> transactionList = new List<Transaction>(); Transaction tran = new Transaction(); tran.description = "Transaction description."; tran.amount = amnt; tran.item_list = item_list; // The Payment creation API requires a list of // Transaction; add the created `Transaction` // to a List transactionList.Add(tran); // ###Payment // A Payment Resource; create one using // the above types and intent as 'sale' pymnt = new Payment(); pymnt.intent = "sale"; pymnt.payer = payr; pymnt.transactions = transactionList; pymnt.redirect_urls = redirUrls; 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.GetProperty("ClientID"), ConfigManager.Instance.GetProperty("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; Payment createdPayment = pymnt.Create(apiContext); CurrContext.Items.Add("ResponseJson", JObject.Parse(createdPayment.ConvertToJson()).ToString(Formatting.Indented)); var links = createdPayment.links.GetEnumerator(); while (links.MoveNext()) { Link lnk = links.Current; if (lnk.rel.ToLower().Trim().Equals("approval_url")) { CurrContext.Items.Add("RedirectURL", lnk.href); } } Session.Add(guid, createdPayment.id); } 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"); }
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"); }
private AmountDetails GetAmountDetails() { AmountDetails amntDetails = new AmountDetails(); amntDetails.tax = "15"; amntDetails.fee = "2"; amntDetails.shipping = "10"; amntDetails.subtotal = "75"; return amntDetails; }
public void AmountDetailsConstructorTest() { AmountDetails target = new AmountDetails(); Assert.IsNotNull(target); }