private PayPalRest.Payment CreatePayPalPayment(PaymentProcessingContext request, PayPalConfig settings) { var config = new Dictionary <string, string>(); config.Add("mode", settings.SandboxMode ? "sandbox" : "live"); var credentials = new OAuthTokenCredential(settings.ClientId, settings.ClientSecret, config); var accessToken = credentials.GetAccessToken(); var payment = new PayPalRest.Payment { intent = "sale", payer = new Payer { payment_method = "credit_card", funding_instruments = new List <PayPalRest.FundingInstrument> { new PayPalRest.FundingInstrument { credit_card = CreateCreditCard(request) } } }, transactions = new List <Transaction> { CreateTransaction(request) } }; return(payment.Create(new APIContext(accessToken) { Config = config })); }
public void CreditCardPay(Address billingaddr, CreditCard cc, Amount amount) { Transaction transaction = new Transaction(); transaction.amount = amount; transaction.description = "This is the payment transaction description."; List<Transaction> transactions = new List<Transaction>(); transactions.Add(transaction); FundingInstrument fundingInstrument = new FundingInstrument(); fundingInstrument.credit_card = cc; List<FundingInstrument> fundingInstruments = new List<FundingInstrument>(); fundingInstruments.Add(fundingInstrument); Payer payer = new Payer(); payer.funding_instruments = fundingInstruments; payer.payment_method = "credit_card"; Payment payment = new Payment(); payment.intent = "sale"; payment.payer = payer; payment.transactions = transactions; Payment createdPayment = payment.Create(AccessToken()); }
/// <summary> /// Erstellt ein neues Payment für Paypal. /// </summary> /// <param name="returnUrl"></param> /// <param name="cancelUrl"></param> /// <param name="subTotalPrice"></param> /// <param name="shippingCosts"></param> /// <param name="totalPrice"></param> /// <param name="description"></param> /// <returns>Die Url für Paypal auf die der Benutzer weiter geleitet werden muss.</returns> public Uri CreateNewPayment(Uri returnUrl, Uri cancelUrl, decimal subTotalPrice, decimal shippingCosts, decimal totalPrice, string description, out string paymentId) { var context = GetPayPalToken(); //string accessToken = tokenCredential.GetAccessToken(); var amountDetails = new Details(); amountDetails.subtotal = _toPayPalPrice(subTotalPrice); amountDetails.tax = "0.00"; // Derzeit geben wir keine Steuern an. amountDetails.shipping = _toPayPalPrice(shippingCosts); var amount = new Amount(); amount.total = _toPayPalPrice(totalPrice); amount.currency = "EUR"; amount.details = amountDetails; var transaction = new Transaction(); transaction.amount = amount; transaction.description = description; var transactions = new List<Transaction>(); transactions.Add(transaction); var payer = new Payer(); payer.payment_method = "paypal"; var payment = new Payment(); payment.intent = "sale"; payment.payer = payer; payment.transactions = transactions; payment.redirect_urls = new RedirectUrls { return_url = returnUrl.AbsoluteUri, cancel_url = cancelUrl.AbsoluteUri }; var createdPayment = payment.Create(context); if (createdPayment == null) { throw new Exception("Beim Bezahlen mit PayPal ist etwas schief gelaufen. Aber keine Angst, Dein Geld wurde nicht angefasst!"); } // Wir können den Kunden an PayPal weiterleiten. if (createdPayment.state == "created") { var approvalUrl = (from link in createdPayment.links where link.rel == "approval_url" select link.href).FirstOrDefault(); if (approvalUrl == null) { throw new Exception("PayPal hat uns keinen Link gegeben mit dem du Deine Bezahlung bestätigen könntest. Probiere es später noch einmal."); } #if DEBUG if (approvalUrl.ToLower().IndexOf("sandbox") == -1) throw new AccessViolationException("PAYPAYL ist NICHT im SANDBOX-Modus!"); #endif paymentId = createdPayment.id; return new Uri(approvalUrl); } throw new Exception("PayPal lässt Dich leider nicht zahlen. Hmmm...."); }
public void CompletePayment(string paymentTransactionId, string payerId) { var apiContext = ApiContextFactory.Create(); var payment = new Payment { id = paymentTransactionId }; var paymentExecution = new PaymentExecution { payer_id = payerId }; // Call paypal to complete the payment payment.Execute(apiContext, paymentExecution); }
public string EfetuarCompra(PessoaFisica pessoaFisica, CreditCard creditCard, int quantidadeFits) { string valor = (quantidadeFits * valorFits).ToString(); Dictionary<string, string> payPalConfig = new Dictionary<string, string>(); payPalConfig.Add("mode", this.mode); OAuthTokenCredential tokenCredential = new OAuthTokenCredential(this.clientId, this.clientSecret, payPalConfig); string accessToken = tokenCredential.GetAccessToken(); Address billingAddress = new Address(); billingAddress.line1 = string.Format("{0} Num {1}",pessoaFisica.Endereco.Rua, pessoaFisica.Endereco.Numero) ; billingAddress.city = pessoaFisica.Endereco.Cidade; billingAddress.country_code = "BR"; billingAddress.postal_code = pessoaFisica.Endereco.CEP; billingAddress.state = pessoaFisica.Endereco.Estado; creditCard.billing_address = billingAddress; Details amountDetails = new Details(); amountDetails.subtotal = valor; amountDetails.tax = "0.00"; amountDetails.shipping = "0.00"; Amount amount = new Amount(); amount.total = (quantidadeFits * valorFits).ToString(); amount.currency = "USD"; amount.details = amountDetails; Transaction transaction = new Transaction(); transaction.amount = amount; transaction.description = string.Format("Este pagamento foi efetuado por {0}, na quantia de {1} fits", pessoaFisica.Nome, quantidadeFits); List<Transaction> transactions = new List<Transaction>(); transactions.Add(transaction); FundingInstrument fundingInstrument = new FundingInstrument(); fundingInstrument.credit_card = creditCard; List<FundingInstrument> fundingInstruments = new List<FundingInstrument>(); fundingInstruments.Add(fundingInstrument); Payer payer = new Payer(); payer.funding_instruments = fundingInstruments; payer.payment_method = "credit_card"; Payment payment = new Payment(); payment.intent = "sale"; payment.payer = payer; payment.transactions = transactions; Payment createdPayment = payment.Create(accessToken); return valor; }
public void ExecutePayment(string payerId) { PaymentExecution exec = new PaymentExecution(); exec.payer_id = payerId; Payment payment = new Payment(); Payment responsePayment = payment.Execute(credentials.AccessToken, new PaymentExecution()); WriteTestData("TestExecutePayment", responsePayment); }
protected void Page_Init(Object sender, EventArgs e) { if (HttpContext.Current.User.Identity.IsAuthenticated) { if (Request.QueryString["OrderId"] != null && Request.QueryString["Success"] != null) { var orderID = Request.QueryString["OrderId"]; var payerID = Request.QueryString["PayerId"]; var isSuccess = Convert.ToBoolean(Request.QueryString["Success"]); if (isSuccess) { PaymentExecution pymntExecution = new PaymentExecution(); pymntExecution.payer_id = payerID; Payment pymnt = new Payment(); pymnt.id = GetOrdersPaymentID(orderID); Payment pay = null; try { pay = pymnt.Execute(accessToken, pymntExecution); if (pay != null && pay.state.Trim().ToLower().Equals("approved")) { var state = pay.state.Trim(); var updatedAtDateTime = Convert.ToDateTime(pay.create_time); var updatedAt = updatedAtDateTime.ToString("yyyy-MM-dd hh:mm:ss.FFFFF"); var ordID = Convert.ToInt32(orderID); bool isUpdated = Update(ordID, state, updatedAt); } } catch (Exception ex) { divAlertMessage.Visible = true; divAlertMessage.Attributes["class"] = "alert fade in alert-error"; labelAlertMessage.InnerText = ex.Message; } } else { orderID = Request.QueryString["OrderId"]; var updatedAtDateTime = DateTime.Now; var updatedAt = updatedAtDateTime.ToString("yyyy-MM-dd hh:mm:ss.FFFFF"); bool isUpdated = Update(Convert.ToInt32(orderID), "cancelled", updatedAt); } } } else { Response.Redirect("~/Users/SignIn.aspx"); } }
private Payment GetPayment() { Payment target = new Payment(); target.intent = "authorize"; CreditCard card = GetCreditCard(); List<FundingInstrument> fundingInstruments = new List<FundingInstrument>(); FundingInstrument fundingInstrument = new FundingInstrument(); fundingInstrument.credit_card = card; fundingInstruments.Add(fundingInstrument); Payer payer = new Payer(); payer.payment_method = "credit_card"; payer.funding_instruments = fundingInstruments; List<Transaction> transacts = new List<Transaction>(); Transaction trans = new Transaction(); trans.amount = GetAmount(); transacts.Add(trans); target.transactions = transacts; target.payer = payer; return target.Create(AccessToken); }
private Payment CreatePayment() { Payment pay = new Payment(); pay.intent = "sale"; CreditCard card = GetCreditCard(); List<FundingInstrument> fundingInstruments = new List<FundingInstrument>(); FundingInstrument fundingInstrument = new FundingInstrument(); fundingInstrument.credit_card = card; fundingInstruments.Add(fundingInstrument); Payer payer = new Payer(); payer.payment_method = "credit_card"; payer.funding_instruments = fundingInstruments; List<Transaction> transactionList = new List<Transaction>(); Transaction trans = new Transaction(); trans.amount = GetAmount(); transactionList.Add(trans); pay.transactions = transactionList; pay.payer = payer; return pay.Create(UnitTestUtil.GetApiContext()); }
public void CreatePaymentTest() { string accessToken = AccessToken; Payment target = new Payment(); target.intent = "sale"; CreditCard creditCard = GetCreditCard(); List<FundingInstrument> fundingInstruments = new List<FundingInstrument>(); FundingInstrument fundingInstrument = new FundingInstrument(); fundingInstrument.credit_card = creditCard; fundingInstruments.Add(fundingInstrument); Payer payer = new Payer(); payer.payment_method = "credit_card"; payer.funding_instruments = fundingInstruments; List<Transaction> transacts = new List<Transaction>(); Transaction trans = new Transaction(); trans.amount = GetAmount(); transacts.Add(trans); target.transactions = transacts; target.payer = payer; Payment actual = new Payment(); actual = target.Create(accessToken); Assert.AreEqual("approved", actual.state); }
public Payment CreatePayment(string email, PaymentMethod payMethod, string orderAmount, string orderDescription, string returnUrl, string cancelUrl) { Payment pay = null; Details amountDetails = new Details(); 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 payr = new Payer(); payr.payment_method = payMethod.ToString(); Payment paymnt = new Payment(); paymnt.intent = "sale"; paymnt.payer = payr; paymnt.transactions = transactions; paymnt.redirect_urls = redirectUrls; pay = paymnt.Create(Api); return pay; }
public ActionResult Confirmed(Guid id, string token, string payerId) { var viewData = new OrderConfirmedViewData { 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; Payment pymnt = null; // ### 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(); // ## ExecutePayment if (Request.Params["PayerID"] != null) { pymnt = new Payment(); if (Request.Params["guid"] != null) { pymnt.id = (string)Session[Request.Params["guid"]]; } try { 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 { // ###Items // Items within a transaction. Item item = new Item(); item.name = "Item Name"; item.currency = "USD"; item.price = "15"; item.quantity = "5"; item.sku = "sku"; List<Item> itms = new List<Item>(); itms.Add(item); ItemList itemList = new ItemList(); itemList.items = itms; // ###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; // ###Details // Let's you specify details of a payment amount. Details details = new Details(); details.tax = "15"; details.shipping = "10"; details.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 = details; // ###Transaction // A transaction defines the contract of a // payment - what is the payment for and who // is fulfilling it. List<Transaction> transactionList = new List<Transaction>(); Transaction tran = new Transaction(); tran.description = "Transaction description."; tran.amount = amnt; tran.item_list = itemList; // 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` or `authorize` pymnt = new Payment(); pymnt.intent = "sale"; pymnt.payer = payr; pymnt.transactions = transactionList; pymnt.redirect_urls = redirUrls; try { // Create a payment using a valid APIContext Payment createdPayment = pymnt.Create(apiContext); CurrContext.Items.Add("ResponseJson", JObject.Parse(createdPayment.ConvertToJson()).ToString(Formatting.Indented)); var links = createdPayment.links.GetEnumerator(); while (links.MoveNext()) { Links 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 string GetApprovalURL(Payment payment) { string redirectUrl = null; List<Links> links = payment.links; foreach (Links lnk in links) { if (lnk.rel.ToLower().Equals("approval_url")) { redirectUrl = Server.UrlDecode(lnk.href); break; } } return redirectUrl; }
private PayPalRest.Payment CreatePayPalPayment(ProcessPaymentRequest request, PayPalConfig settings) { var config = new Dictionary<string, string>(); config.Add("mode", settings.SandboxMode ? "sandbox" : "live"); var credentials = new OAuthTokenCredential(settings.ClientId, settings.ClientSecret, config); var accessToken = credentials.GetAccessToken(); var payment = new PayPalRest.Payment { intent = "sale", payer = new Payer { payment_method = "credit_card", funding_instruments = new List<PayPalRest.FundingInstrument> { new PayPalRest.FundingInstrument { credit_card = CreateCreditCard(request) } } }, transactions = new List<Transaction> { CreateTransaction(request) } }; return payment.Create(new APIContext(accessToken) { Config = config }); }
private Payment CreatePayment() { Payment pay = new Payment(); pay.intent = "authorize"; CreditCard card = GetCreditCard(); List<FundingInstrument> fundingInstrumentList = new List<FundingInstrument>(); FundingInstrument instrument = new FundingInstrument(); instrument.credit_card = card; fundingInstrumentList.Add(instrument); Payer payr = new Payer(); payr.payment_method = "credit_card"; payr.funding_instruments = fundingInstrumentList; List<Transaction> transactionList = new List<Transaction>(); Transaction trans = new Transaction(); trans.amount = GetAmount(); transactionList.Add(trans); pay.transactions = transactionList; pay.payer = payr; return pay.Create(AccessToken); }
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.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 )); 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; // ###Details // Let's you specify details of a payment amount. Details details = new Details(); details.tax = "15"; details.shipping = "10"; details.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 = details; // ###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; // 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.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; Payment createdPayment = pymnt.Create(apiContext); CurrContext.Items.Add("ResponseJson", JObject.Parse(createdPayment.ConvertToJson()).ToString(Formatting.Indented)); var links = createdPayment.links.GetEnumerator(); while (links.MoveNext()) { Links 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"); }
public PaymentResponse ProcessPaymentForCart(Cart cart, string cancelUrl, string returnUrl) { var apiContext = ApiContextFactory.Create(); var paypalItems = new ItemList { items = cart.GetItems().OfType<ProductCartItem>().Select(li => new Item { name = li.Title, price = li.PriceWithoutTax.ToString("N"), currency = _config.Currency, quantity = li.Quantity.ToString(), sku = li.Id.ToString() }).ToList() }; // ###Payer // A resource representing a Payer that funds a payment // Payment Method // as `paypal` var payer = new Payer { payment_method = "paypal" }; //// # Redirect URLS var redirUrls = new RedirectUrls { cancel_url = cancelUrl, return_url = returnUrl }; // ###Details // Let's you specify details of a payment amount. var details = new Details { tax = cart.CalculateTotalTax().TaxAmount.ToString("N"), shipping = cart.ShippingCost.Cost.ToString("N"), subtotal = cart.CalculateSubTotalWithoutTax().ToString("N"), }; // ###Amount // Let's you specify a payment amount. var amount = new Amount { currency = _config.Currency, total = cart.CalculateGrandTotal().ToString("N"), // Total must be equal to sum of shipping, tax and subtotal. details = details }; // ###Transaction // A transaction defines the contract of a // payment - what is the payment for and who // is fulfilling it. var transactionList = new List<Transaction> { new Transaction { description = "UNIXMO Online Store", amount = amount, item_list = paypalItems } }; // The Payment creation API requires a list of // Transaction; add the created `Transaction` // to a List // ###Payment // A Payment Resource; create one using // the above types and intent as `sale` or `authorize` var payment = new Payment { intent = "sale", payer = payer, transactions = transactionList, redirect_urls = redirUrls }; var myResponse = payment.Create(apiContext); if (myResponse == null || myResponse.links == null) { return PaymentResponse.Failed(); } var approvalUrl = myResponse.links.FirstOrDefault(lnk => lnk.rel.Equals("approval_url", StringComparison.OrdinalIgnoreCase)); if (approvalUrl == null) return PaymentResponse.Failed(); cart.SetPaymentTransaction(myResponse.id); return PaymentResponse.Completed(approvalUrl.href, myResponse.id); }
public Payment CreatePaymentPaypal(string orderAmount, string orderDescription, string paymentMethod, string returnUrl, string cancelUrl) { Payment pymnt = null; //Create item ItemList ItemList = new ItemList(); ItemList.items = new List<Item>(); ItemList.items.Add(new Item { name = "A", currency = "USD", price = "10", quantity = "1", sku = "1" }); ItemList.items.Add(new Item { name = "B", currency = "USD", price = "20", quantity = "2", sku = "1" }); ItemList.items.Add(new Item { name = "C", currency = "USD", price = "50", quantity = "3", sku = "1" }); ItemList.items.Add(new Item { name = "D", currency = "USD", price = "100", quantity = "4", sku = "1" }); Details amountDetails = new Details(); amountDetails.shipping = "0"; amountDetails.tax = "0"; 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.item_list = ItemList; transaction.amount = amount; transaction.description = orderDescription; List<Transaction> transactions = new List<Transaction>(); transactions.Add(transaction); Payer payer = new Payer(); payer.payment_method = paymentMethod; Payment pyment = new Payment(); pyment.intent = "sale"; pyment.payer = payer; pyment.transactions = transactions; pyment.redirect_urls = redirectUrls; pymnt = pyment.Create(Api); return pymnt; }
private string GetAuthorizationId(string accessToken) { // ###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 = "0.03"; details.subtotal = "107.41"; details.tax = "0.03"; // ###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 = "107.47"; amnt.details = details; // ###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 = 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` Payment pymnt = new Payment(); pymnt.intent = "authorize"; pymnt.payer = payr; pymnt.transactions = transactions; // Create a payment by posting to the APIService // using a valid AccessToken // The return object contains the status; Payment createdPayment = pymnt.Create(accessToken); return createdPayment.transactions[0].related_resources[0].authorization.id; }
public async Task<IHttpActionResult> PaypalConfirmed(string token, string payerId, string id) { try { PaypalDetails paypalDetails = this.commonService.GetCache<PaypalDetails>(id); PaypalPayTransactionModel paymentTransaction = this.paymentService.GetPaypalPaymentId(Guid.Parse(id)); if (paymentTransaction == null) { return this.Redirect(string.Format(AppSettings.Get<string>("WebReturnURL"), paypalDetails.Domain, "Invalid request")); } string paymentId = paymentTransaction.PaymentId; if (string.IsNullOrWhiteSpace(paymentId)) { return this.Redirect(string.Format(AppSettings.Get<string>("WebReturnURL"), paypalDetails.Domain, "Can not proceed now, please try again.")); } var paymentExecution = new PaymentExecution { payer_id = payerId }; var payment = new Payment { id = paymentId }; var response = payment.Execute(this.Api, paymentExecution); if (response.state.ToLower() == "approved") { PaypalPaymentDetailsModel paymentDetail = new PaypalPaymentDetailsModel(); paymentDetail.TransactionId = paymentTransaction.Id; paymentDetail.PayerId = payerId; paymentDetail.Email = response.payer.payer_info.email; paymentDetail.FirstName = response.payer.payer_info.first_name; paymentDetail.LastName = response.payer.payer_info.last_name; paymentDetail.Address = response.payer.payer_info.shipping_address.line1 + " " + response.payer.payer_info.shipping_address.line2 + " " + response.payer.payer_info.shipping_address.state; paymentDetail.Status = response.payer.status; paymentDetail.IsComplete = true; paymentDetail.CreatedOn = DateTime.UtcNow; if (this.paymentService.CompletePaypalTransaction(paymentDetail)) { try { bool isSuccess = true; string crmContactId = this.youfferContactService.GetMappingEntryByContactId(paymentTransaction.ClientId).ContactCRMId; string crmLeadId = this.youfferContactService.GetMappingEntryByContactId(paymentTransaction.ClientId).LeadId; string crmOrgId = this.youfferContactService.GetOrgCRMId(paymentTransaction.CompanyId).CRMId; LeadModel leadModel = this.crmManagerService.GetLead(crmLeadId); decimal price = AppSettings.Get<decimal>(ConfigConstants.UserPrice); BuyUserModelDto buyUserModelDto = new BuyUserModelDto { CompanyId = paymentTransaction.CompanyId, UserId = paymentTransaction.ClientId, Interest = paymentTransaction.Need, Amount = price, PurchasedFromCash = false, PurchasedFromCredit = false }; isSuccess = this.crmManagerService.AddOpportunity(buyUserModelDto); ////return this.Redirect(string.Format(AppSettings.Get<string>("WebReturnURL"), "Payment Done")); return this.Redirect(string.Format(AppSettings.Get<string>("WebPaymentDone").ToString() + "?status=success", paypalDetails.Domain)); } catch (Exception ex) { this.LoggerService.LogException("PaymentController > G2SSuccess(while updating system for who purchased what): " + ex.StackTrace); } } } } catch (Exception ex) { this.LoggerService.LogException("PaypalConfirmed :- " + ex.Message); } ////return this.Redirect(string.Format(AppSettings.Get<string>("WebReturnURL"), "Payment Error found")); return this.Redirect(string.Format(AppSettings.Get<string>("WebPaymentDone").ToString() + "?status=error")); }
public async Task<IHttpActionResult> PaypalUrl(PaypalDetailsWrapper wrapper) { string companyId = User.Identity.GetUserId(); List<PayPalDetailsModel> list = wrapper.ItemDetails; PaypalDetails details = wrapper.PaypalDetails; var guid = Guid.NewGuid(); this.commonService.SetCache<PaypalDetails>(details, guid.ToString()); List<Item> itemList = this.GetItemListing(list); if (!itemList.Any()) { return this.BadRequest("No items found"); } var price = itemList.Sum(p => Convert.ToDecimal(p.price)).ToString("N2"); var paymentInit = new Payment { intent = "sale", payer = new Payer { payment_method = AppSettings.Get<string>("PaymentMethod") }, transactions = new List<Transaction> { new Transaction { item_list = new ItemList { items = itemList }, amount = new Amount { currency = AppSettings.Get<string>("interestPriceCurrency"), total = price.ToString(), details = new Details { subtotal = price.ToString(), ////tax = tax.ToString(), ////shipping = shipping.ToString() } }, ////description = description }, }, redirect_urls = new RedirectUrls { return_url = string.Format(AppSettings.Get<string>("PaypalReturnURL"), guid), cancel_url = string.Format(AppSettings.Get<string>("PaypalCancelURL"), guid), }, }; try { var createdPayment = paymentInit.Create(this.Api); var approvalUrl = createdPayment.links.ToArray().FirstOrDefault(f => f.rel.Contains("approval_url")); if (approvalUrl != null) { bool result = this.paymentService.InsertPayPalTransaction(new PaypalPayTransactionModel { CreatedOn = DateTime.UtcNow, PaymentId = createdPayment.id, PayToken = guid, IsPaymentDone = false, ClientId = list[0].Id, CompanyId = companyId, Need = list[0].Need, Amount = Convert.ToDecimal(price), IsPaypalTransaction = true }); if (result) { return this.Ok<string>(approvalUrl.href); } } this.LoggerService.LogException("PaymentController > Paypal error"); return this.BadRequest("Paypal error"); } catch (Exception ex) { this.LoggerService.LogException("PaymentController > Paypal runtime error: " + ex.StackTrace); return this.BadRequest("Paypal runtime error"); } }
public void PaymentStateTest() { Payment pay = new Payment(); pay.intent = "sale"; CreditCard card = GetCreditCard(); List<FundingInstrument> fundingInstrumentList = new List<FundingInstrument>(); FundingInstrument instrument = new FundingInstrument(); instrument.credit_card = card; fundingInstrumentList.Add(instrument); Payer payer = new Payer(); payer.payment_method = "credit_card"; payer.funding_instruments = fundingInstrumentList; List<Transaction> transacts = new List<Transaction>(); Transaction trans = new Transaction(); trans.amount = GetAmount(); transacts.Add(trans); pay.transactions = transacts; pay.payer = payer; Payment actual = new Payment(); actual = pay.Create(AccessToken); Assert.AreEqual("approved", actual.state); }
// ##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"); }
public void PaymentNullAccessToken() { string accessToken = null; Payment pay = new Payment(); pay.intent = "sale"; CreditCard card = GetCreditCard(); List<FundingInstrument> instruments = new List<FundingInstrument>(); FundingInstrument instrument = new FundingInstrument(); instrument.credit_card = card; instruments.Add(instrument); Payer payr = new Payer(); payr.payment_method = "credit_card"; payr.funding_instruments = instruments; List<Transaction> transacts = new List<Transaction>(); Transaction trans = new Transaction(); trans.amount = GetAmount(); transacts.Add(trans); pay.transactions = transacts; pay.payer = payr; Payment actual = pay.Create(accessToken); }
public ActionResult Orders() { var model = new OrdersCollection(); IEnumerable<Order> modelIEnumerable = null; if (Request.QueryString["OrderId"] != null && Request.QueryString["Success"] != null) { var orderId = Request.QueryString["OrderId"]; var payerId = Request.QueryString["PayerId"]; var isSuccess = Convert.ToBoolean(Request.QueryString["Success"]); if (isSuccess) { PaymentExecution payExecution = new PaymentExecution(); payExecution.payer_id = payerId; Payment paymnt = new Payment(); paymnt.id = GetOrdersPaymentId(orderId); Payment pay = null; try { pay = paymnt.Execute(Api, payExecution); if (pay != null && pay.state.Trim().ToLower().Equals("approved")) { var state = pay.state.Trim(); var updatedAtDateTime = Convert.ToDateTime(pay.create_time); var updatedAt = updatedAtDateTime.ToString("yyyy-MM-dd hh:mm:ss.FFFFF"); var ordId = Convert.ToInt32(orderId); bool isUpdated = Update(ordId, state, updatedAt); } } catch (Exception ex) { ModelState.AddModelError(string.Empty, ex.Message); } } else { orderId = Request.QueryString["OrderId"]; var updatedAtDateTime = DateTime.Now; var updatedAt = updatedAtDateTime.ToString("yyyy-MM-dd hh:mm:ss.FFFFF"); bool isUpdated = Update(Convert.ToInt32(orderId), "cancelled", updatedAt); } } var email = User.Identity.Name.Trim(); int userId = GetSignedInUserId(email); DataTable datTable = GetOrders(userId); if (datTable != null && datTable.Rows.Count > 0) { model.Orders = (from DataRow row in datTable.Rows select new Order { OrderId = Convert.ToInt32(row["id"]), UserId = Convert.ToInt32(row["user_id"]), PaymentId = row["payment_id"].ToString(), State = row["state"].ToString(), AmountInUSD = row["amount"].ToString(), Description = row["description"].ToString(), CreatedDateTime = Convert.ToDateTime(row["created_at"]), UpdatedDateTime = Convert.ToDateTime(row["updated_at"]), }).ToList(); modelIEnumerable = model.Orders; } return View(modelIEnumerable); }
public Payment CreatePayment(string email, PaymentMethod paymntMethod, string orderAmount, string orderDescription) { Payment pay = null; Amount amount = new Amount(); amount.currency = "USD"; amount.total = orderAmount; Transaction transaction = new Transaction(); transaction.amount = amount; transaction.description = orderDescription; List<Transaction> transactions = new List<Transaction>(); transactions.Add(transaction); FundingInstrument fundingInstrument = new FundingInstrument(); CreditCardToken creditCardToken = new CreditCardToken(); creditCardToken.credit_card_id = GetSignedInUserCreditCardID(email); fundingInstrument.credit_card_token = creditCardToken; List<FundingInstrument> fundingInstrumentList = new List<FundingInstrument>(); fundingInstrumentList.Add(fundingInstrument); Payer payer = new Payer(); payer.funding_instruments = fundingInstrumentList; payer.payment_method = paymntMethod.ToString(); Payment pyment = new Payment(); pyment.intent = "sale"; pyment.payer = payer; pyment.transactions = transactions; pay = pyment.Create(Api); return pay; }
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); } }
public PayPal.Api.Payments.Payment CreatePayment(IOrder order, string returnUrl, string cancelUrl) { Amount amount = new Amount(); amount.currency = "AUD"; amount.total = order.Total.ToString(); amount.details = new Details(); RedirectUrls redirectUrls = new RedirectUrls(); redirectUrls.return_url = returnUrl; redirectUrls.cancel_url = cancelUrl; Transaction transaction = new Transaction(); transaction.amount = amount; transaction.item_list = new ItemList() { items = new List<Item>() }; foreach (var orderItem in order.Items) { Item item = new Item() { name = orderItem.Product.Title, price = orderItem.Product.Cost.ToString(), quantity = orderItem.Quantity.ToString(), currency = "AUD" }; transaction.item_list.items.Add(item); } List<Transaction> transactions = new List<Transaction>() { transaction }; Payer payer = new Payer() { payment_method = "paypal" }; PayPal.Api.Payments.Payment pyment = new PayPal.Api.Payments.Payment(); pyment.intent = "sale"; pyment.payer = payer; pyment.transactions = transactions; pyment.redirect_urls = redirectUrls; return pyment.Create(this.GetApiContext()); }
public void PostPayment(string redirectUrl, string cancelUrl, decimal total) { GetAccessToken(); Payment payment = new Payment(); payment.intent = "sale"; Payer payer = new Payer(); payer.payment_method = "paypal"; payment.redirect_urls = new RedirectUrls(); payment.redirect_urls.return_url = redirectUrl; payment.redirect_urls.cancel_url = cancelUrl; Transaction trans = new Transaction(); trans.amount = new Amount(); trans.amount.currency = "EUR"; trans.amount.total = total.ToString(); trans.amount.details = new Details(); trans.amount.details.subtotal = (total - 0.03m - 0.03m).ToString(); trans.amount.details.shipping = "0.03"; trans.amount.details.tax = "0.03"; trans.description = "Fotos kopen bij Fotolab Inc."; payment.transactions = new List<Transaction>(); payment.transactions.Add(trans); Payment responsePayment = payment.Create(credentials.AccessToken); Debug.WriteLine(responsePayment.create_time); WriteTestData("TestPostPayment", responsePayment); }