public CheckoutResult CheckoutWithPayPalExpressCheckout(Dictionary <string, string> payPalVariables) { string token = payPalVariables["token"]; string payerId = payPalVariables["PayerID"]; PayPalExpressCheckoutPaymentProvider payPalExpress = new PayPalExpressCheckoutPaymentProvider(storeContext.CurrentStore.GetPaymentProviderConfig(PaymentProviderName.PayPalExpressCheckout)); int? orderId = payPalExpress.GetOrderIdForTransactionToken(token); Order pendingOrder = Order.GetOrder(orderId.GetValueOrDefault(-1)); if (pendingOrder != null) { PaymentStatusName paymentStatus = payPalExpress.DoExpressCheckoutPayment(pendingOrder, payPalVariables); OrderStatusName orderStatus = pendingOrder.OrderStatus; if (paymentStatus == PaymentStatusName.Completed) { orderStatus = OrderStatusName.Completed; pendingOrder.CreditCardType = CreditCardType.PayPal.ToString(); } UpdateOrderStatus(pendingOrder, orderStatus, paymentStatus); } return(DoPostCheckoutProcessing(pendingOrder, true)); }
/// <summary> /// Check for the PayPal Express Checkout return page variables and update the Order if needed. /// </summary> private void HandlePayPalExpressCallback() { Dictionary <string, string> payPalVariables = new Dictionary <string, string>(); if (!string.IsNullOrEmpty(Request.QueryString["token"]) && !string.IsNullOrEmpty(Request.QueryString["PayerID"])) { string payPalToken = Request.QueryString["token"]; payPalVariables["token"] = payPalToken; payPalVariables["PayerID"] = Request.QueryString["PayerID"]; checkoutOrderInfo.PayPalVariables.Merge(payPalVariables); checkoutOrderInfo.PaymentProvider = PaymentProviderName.PayPalExpressCheckout; PayPalExpressCheckoutPaymentProvider payPalExpressCheckout = new PayPalExpressCheckoutPaymentProvider(StoreContext.CurrentStore.GetPaymentProviderConfig(PaymentProviderName.PayPalExpressCheckout)); Order pendingOrder = Order.GetOrder(payPalExpressCheckout.GetOrderIdForTransactionToken(payPalToken).GetValueOrDefault(-1)); if (pendingOrder != null) { payPalExpressCheckout.UpdateOrderWithExpressCheckoutDetails(pendingOrder, payPalToken); checkoutOrderInfo.SetBillingAddressFromOrder(pendingOrder); checkoutOrderInfo.SetShippingAddressFromOrder(pendingOrder); //checkoutOrderInfo.ReCalculateOrderTotals(); } UpdateCheckoutSession(checkoutOrderInfo); } }
protected void ibtnPayPalExpressCheckout_Click(object sender, ImageClickEventArgs e) { UpdateProductQuantities(); UpdateCheckoutSession(); OrderController orderController = new OrderController(StoreContext); Order pendingOrder = orderController.CreateOrder(checkoutOrderInfo, OrderStatusName.PendingOffsite); PayPalExpressCheckoutPaymentProvider payPalExpressCheckout = new PayPalExpressCheckoutPaymentProvider(StoreContext.CurrentStore.GetPaymentProviderConfig(PaymentProviderName.PayPalExpressCheckout)); string cancelUrl = StoreUrls.Cart(); string returnUrl = StoreUrls.CheckoutReview(); string token = payPalExpressCheckout.SetExpressCheckoutAndGetToken(pendingOrder, cancelUrl, returnUrl); if (!string.IsNullOrEmpty(token)) { string payPalUrl = payPalExpressCheckout.GetExpressCheckoutUrl(token); Response.Redirect(payPalUrl); } else { // ERROR throw new ApplicationException("PayPal Express Token is Null/Empty!"); } }
private void LoadPaymentProviders() { DataModel.Store store = StoreContext.CurrentStore; // StoreContext.CurrentStore.GetOnsiteCreditCardPaymentProvider() == PaymentProviderName.OfflinePayment // StoreContext.CurrentStore.IsPaymentProviderEnabled(PaymentProviderName.AuthorizeNetAim) // ON-SITE chkPayLater.Checked = store.IsPaymentProviderEnabled(PaymentProviderName.PayLater); chkCardCaptureOnly.Checked = store.IsPaymentProviderEnabled(PaymentProviderName.CardCaptureOnly); chkAuthorizeNetAim.Checked = store.IsPaymentProviderEnabled(PaymentProviderName.AuthorizeNetAim); chkPayPalDirect.Checked = store.IsPaymentProviderEnabled(PaymentProviderName.PayPalDirectPayment); PayLaterPaymentProvider billMeLaterProvider = new PayLaterPaymentProvider(store.GetPaymentProviderConfig(PaymentProviderName.PayLater)); txtPayLaterDisplayText.Text = billMeLaterProvider.DisplayText; txtPayLaterCustomerInstructions.Text = billMeLaterProvider.CustomerInstructions; AuthorizeNetAimProvider authorizeNetAimProvider = new AuthorizeNetAimProvider(store.GetPaymentProviderConfig(PaymentProviderName.AuthorizeNetAim)); chkAuthorizeNetAimTestGateway.Checked = authorizeNetAimProvider.IsTestGateway; chkAuthorizeNetAimTestTransactions.Checked = authorizeNetAimProvider.IsTestTransactions; txtAuthorizeNetAimApiLoginId.Text = authorizeNetAimProvider.ApiLoginId; txtAuthorizeNetAimTransactionKey.Text = authorizeNetAimProvider.TransactionKey; PayPalDirectPaymentProvider payPalDirectPayment = new PayPalDirectPaymentProvider(store.GetPaymentProviderConfig(PaymentProviderName.PayPalDirectPayment)); chkPayPalDirectPaymentIsSandbox.Checked = payPalDirectPayment.IsSandbox; txtPayPalDirectPaymentApiUsername.Text = payPalDirectPayment.ApiUsername; txtPayPalDirectPaymentApiPassword.Text = payPalDirectPayment.ApiPassword; txtPayPalDirectPaymentApiSignature.Text = payPalDirectPayment.ApiSignature; // OFF-SITE chkPayPalStandard.Checked = store.IsPaymentProviderEnabled(PaymentProviderName.PayPalStandard); chkPayPalExpress.Checked = store.IsPaymentProviderEnabled(PaymentProviderName.PayPalExpressCheckout); PayPalStandardProvider payPalStandard = new PayPalStandardProvider(store.GetPaymentProviderConfig(PaymentProviderName.PayPalStandard)); chkPayPalStandardIsSandbox.Checked = payPalStandard.IsSandbox; rdoPayPalStandardShippingLogic.SelectedValue = payPalStandard.ShippingLogic; txtPayPalStandardEmail.Text = payPalStandard.EmailAddress; PayPalExpressCheckoutPaymentProvider payPalExpressCheckout = new PayPalExpressCheckoutPaymentProvider(store.GetPaymentProviderConfig(PaymentProviderName.PayPalExpressCheckout)); chkPayPalExpressCheckoutIsSandbox.Checked = payPalExpressCheckout.IsSandbox; txtPayPalExpressCheckoutApiUsername.Text = payPalExpressCheckout.ApiUsername; txtPayPalExpressCheckoutApiPassword.Text = payPalExpressCheckout.ApiPassword; txtPayPalExpressCheckoutApiSignature.Text = payPalExpressCheckout.ApiSignature; }
protected void btnReviewOrder_Click(object sender, EventArgs e) { // user-selected payment method (credit card or PayPal) string userSelectedPaymentMethod = Request.Form["paymentMethod"] ?? ""; if (userSelectedPaymentMethod == "payLater") { checkoutOrderInfo.PaymentProvider = StoreContext.CurrentStore.GetOnsitePaymentProviders().Where(p => p == PaymentProviderName.PayLater).First(); if (checkoutOrderInfo.PaymentProvider == PaymentProviderName.UNKNOWN) { throw new ApplicationException("Unable to determine PaymentProvider for CheckoutOrderInfo!"); } UpdateCheckoutSession(checkoutOrderInfo); Response.Redirect(StoreUrls.CheckoutReview()); } else if (userSelectedPaymentMethod == "payPalExpressCheckout") { OrderController orderController = new OrderController(StoreContext); Order pendingOrder = orderController.CreateOrder(checkoutOrderInfo, OrderStatusName.PendingOffsite); PayPalExpressCheckoutPaymentProvider payPalExpressCheckout = new PayPalExpressCheckoutPaymentProvider(StoreContext.CurrentStore.GetPaymentProviderConfig(PaymentProviderName.PayPalExpressCheckout)); string cancelUrl = StoreUrls.Cart(); string returnUrl = StoreUrls.CheckoutReview(); string token = payPalExpressCheckout.SetExpressCheckoutAndGetToken(pendingOrder, cancelUrl, returnUrl); if (!string.IsNullOrEmpty(token)) { //Session[SessionKeys.CheckoutOrderInfo] = checkoutOrderInfo; //string payPalUrl = string.Format("https://www.sandbox.paypal.com/cgi-bin/webscr?cmd=_express-checkout&token={0}", token); string payPalUrl = payPalExpressCheckout.GetExpressCheckoutUrl(token); Response.Redirect(payPalUrl); } else { // ERROR throw new ApplicationException("PayPal Express Token is Null/Empty!"); } } else if (userSelectedPaymentMethod == "creditCard") { checkoutOrderInfo.PaymentProvider = StoreContext.CurrentStore.GetOnsitePaymentProviders().Where(p => p != PaymentProviderName.PayLater).First(); if (checkoutOrderInfo.PaymentProvider == PaymentProviderName.UNKNOWN) { throw new ApplicationException("Unable to determine PaymentProvider for CheckoutOrderInfo!"); } //---- Credit Card Info CreditCardInfo creditCard = new CreditCardInfo() { CardType = WA.Enum <CreditCardType> .TryParseOrDefault(ddlCCType.SelectedValue, CreditCardType.UNKNOWN), CardNumber = txtCCNumber.Text, ExpireMonth = WA.Parser.ToShort(ddlCCExpireMonth.SelectedValue), ExpireYear = WA.Parser.ToShort(ddlCCExpireYear.SelectedValue), NameOnCard = txtCCNameOnCard.Text, SecurityCode = txtCCSecurityCode.Text.Trim() }; checkoutOrderInfo.CreditCard = creditCard; UpdateCheckoutSession(checkoutOrderInfo); bool doRedirect = true; if (checkoutOrderInfo.Total > 0) { CreditCardInfoValidator validator = new CreditCardInfoValidator(); ValidationResult results = validator.Validate(checkoutOrderInfo.CreditCard); if (!results.IsValid && results.Errors.Count > 0) { doRedirect = false; msgFlash.InnerHtml = "<ul>" + results.Errors.ToList().ConvertAll(err => "<li>" + err.ErrorMessage + "</li>").ToDelimitedString(" ") + "</ul>"; msgFlash.Visible = true; } } if (doRedirect) { Response.Redirect(StoreUrls.CheckoutReview()); } } else { throw new ApplicationException("Unable to determine PaymentProvider for CheckoutOrderInfo!"); } }
protected void btnSave_Click(object sender, EventArgs e) { DataModel.Store store = StoreContext.CurrentStore; //PaymentProviderName onSitePaymentProvider = WA.Enum<PaymentProviderName>.TryParseOrDefault(Request.Form["enabledOnSiteProvider"], PaymentProviderName.UNKNOWN); //PaymentProviderName offSitePaymentProvider = WA.Enum<PaymentProviderName>.TryParseOrDefault(Request.Form["enabledOffSiteProvider"], PaymentProviderName.UNKNOWN); if (!onSiteCheckboxes.Exists(x => x.Checked) && !offSiteCheckboxes.Exists(x => x.Checked)) { ShowFlash("<span style='color: Red;'>ERROR - Please choose at least one payment provider.</span>"); return; } if (chkAuthorizeNetAim.Checked && chkPayPalDirect.Checked) { ShowFlash("<span style='color: Red;'>ERROR - Please choose either Authorize.Net OR PayPal Pro (both cannot be selected)</span>"); return; } if (chkPayPalStandard.Checked && chkPayPalExpress.Checked) { ShowFlash("<span style='color: Red;'>ERROR - Please choose either PayPal Standard OR PayPal Express Checkout (both cannot be selected)</span>"); return; } //--- ON-Site Payment Providers PayLaterPaymentProvider billMeLaterPaymentProvider = new PayLaterPaymentProvider(store.GetPaymentProviderConfig(PaymentProviderName.PayLater)); billMeLaterPaymentProvider.IsEnabled = chkPayLater.Checked; billMeLaterPaymentProvider.DisplayText = txtPayLaterDisplayText.Text; billMeLaterPaymentProvider.CustomerInstructions = txtPayLaterCustomerInstructions.Text; store.UpdatePaymentProviderConfig(billMeLaterPaymentProvider.GetConfiguration()); CardCaptureOnlyPaymentProvider cardCaptureOnlyPaymentProvider = new CardCaptureOnlyPaymentProvider(store.GetPaymentProviderConfig(PaymentProviderName.CardCaptureOnly)); cardCaptureOnlyPaymentProvider.IsEnabled = chkCardCaptureOnly.Checked; store.UpdatePaymentProviderConfig(cardCaptureOnlyPaymentProvider.GetConfiguration()); AuthorizeNetAimProvider authorizeNetAimProvider = new AuthorizeNetAimProvider(store.GetPaymentProviderConfig(PaymentProviderName.AuthorizeNetAim)); authorizeNetAimProvider.IsEnabled = chkAuthorizeNetAim.Checked; authorizeNetAimProvider.IsTestGateway = chkAuthorizeNetAimTestGateway.Checked; authorizeNetAimProvider.IsTestTransactions = chkAuthorizeNetAimTestTransactions.Checked; authorizeNetAimProvider.ApiLoginId = txtAuthorizeNetAimApiLoginId.Text; authorizeNetAimProvider.TransactionKey = txtAuthorizeNetAimTransactionKey.Text; store.UpdatePaymentProviderConfig(authorizeNetAimProvider.GetConfiguration()); PayPalDirectPaymentProvider payPalDirectPayment = new PayPalDirectPaymentProvider(store.GetPaymentProviderConfig(PaymentProviderName.PayPalDirectPayment)); payPalDirectPayment.IsEnabled = chkPayPalDirect.Checked; payPalDirectPayment.IsSandbox = chkPayPalDirectPaymentIsSandbox.Checked; payPalDirectPayment.ApiUsername = txtPayPalDirectPaymentApiUsername.Text; payPalDirectPayment.ApiPassword = txtPayPalDirectPaymentApiPassword.Text; payPalDirectPayment.ApiSignature = txtPayPalDirectPaymentApiSignature.Text; store.UpdatePaymentProviderConfig(payPalDirectPayment.GetConfiguration()); //--- OFF-Site Payment Providers PayPalStandardProvider payPalStandard = new PayPalStandardProvider(store.GetPaymentProviderConfig(PaymentProviderName.PayPalStandard)); payPalStandard.IsEnabled = chkPayPalStandard.Checked; payPalStandard.IsSandbox = chkPayPalStandardIsSandbox.Checked; payPalStandard.ShippingLogic = rdoPayPalStandardShippingLogic.SelectedValue; payPalStandard.EmailAddress = txtPayPalStandardEmail.Text; store.UpdatePaymentProviderConfig(payPalStandard.GetConfiguration()); PayPalExpressCheckoutPaymentProvider payPalExpressCheckout = new PayPalExpressCheckoutPaymentProvider(store.GetPaymentProviderConfig(PaymentProviderName.PayPalExpressCheckout)); payPalExpressCheckout.IsEnabled = chkPayPalExpress.Checked; payPalExpressCheckout.IsSandbox = chkPayPalExpressCheckoutIsSandbox.Checked; payPalExpressCheckout.ApiUsername = txtPayPalExpressCheckoutApiUsername.Text; payPalExpressCheckout.ApiPassword = txtPayPalExpressCheckoutApiPassword.Text; payPalExpressCheckout.ApiSignature = txtPayPalExpressCheckoutApiSignature.Text; store.UpdatePaymentProviderConfig(payPalExpressCheckout.GetConfiguration()); Response.Redirect(StoreUrls.AdminWithFlash(ModuleDefs.Admin.Views.PaymentMethods, "Payment Settings Saved Successfully")); }