public string Purchase(User user, Product product) { try { Mailer.Mailer.SendMail(_adminMailAddress, String.Format("[PURCHASE] for {0}. ({1}) ", user.UserName, product.Name), PurchaseMade, _mailTemplatesFolder, user); return Mailer.Mailer.SendMail(user.Email, String.Format("Katusha says: {0} enjoy your membership. ({1}) ", user.UserName, product.Name), PurchaseMade, _mailTemplatesFolder, user); } catch (Exception ex) { return ex.Message; } }
public string SetExpressCheckout(User user, Product product, string referrer = "", int quantity = 1, string billingAgreementText = "") { var request = new SetExpressCheckoutRequestType(); PopulateSetExpressCheckoutRequestObject(request, user, product, referrer, quantity, billingAgreementText); var wrapper = new SetExpressCheckoutReq {SetExpressCheckoutRequest = request}; var setEcResponse = _payPalApiService.SetExpressCheckout(wrapper, GetApiUserName()); return setEcResponse.Token; }
private void PopulateSetExpressCheckoutRequestObject(SetExpressCheckoutRequestType request, User user, Product product, string referrer, int quantity, string billingAgreementText = "") { const string zero = "0.00"; var orderTotal = 0.0; var itemTotal = 0.0; // Each payment can include requestDetails about multiple items // This example shows just one payment item if (quantity < 1) throw new Exception("Insufficient quantity"); var itemDetails = new PaymentDetailsItemType { Name = product.Name, Amount = new BasicAmountType(MSKatushaCurrencyCode, product.Amount), Quantity = quantity, //ItemCategory = ItemCategoryType.PHYSICAL, Tax = new BasicAmountType(MSKatushaCurrencyCode, product.Tax), Description = product.Description, }; itemTotal += (Double.Parse(itemDetails.Amount.value) * quantity); orderTotal += Double.Parse(itemDetails.Tax.value); orderTotal += itemTotal; var paymentDetails = new PaymentDetailsType { ShippingTotal = new BasicAmountType(MSKatushaCurrencyCode, zero), OrderDescription = MSKatushaorderDescription, PaymentAction = PaymentActionCodeType.SALE, ItemTotal = new BasicAmountType(MSKatushaCurrencyCode, itemTotal.ToString(CultureInfo.InvariantCulture)), Custom = product.FriendlyName + "|" +(referrer ?? ""), }; orderTotal += Double.Parse(paymentDetails.ShippingTotal.value); paymentDetails.OrderTotal = new BasicAmountType(MSKatushaCurrencyCode, orderTotal.ToString(CultureInfo.InvariantCulture)); paymentDetails.PaymentDetailsItem.Add(itemDetails); var ecDetails = new SetExpressCheckoutRequestDetailsType { ReturnURL = _settings.ReturnUrl, CancelURL = _settings.CancelUrl, BuyerEmail = user.Email, AddressOverride = "0", NoShipping = "1", SolutionType = SolutionTypeType.SOLE, BuyerDetails = new BuyerDetailsType {BuyerId = user.Guid.ToString(), BuyerRegistrationDate = user.CreationDate.ToString("s"), BuyerUserName = user.UserName}, cppHeaderImage = MSKatushaImageUrl, BrandName = MSKatushaBrandName //PageStyle = pageStyle.Value, //cppHeaderBorderColor = cppheaderbordercolor.Value, //cppHeaderBackColor = cppheaderbackcolor.Value, //cppPayflowColor = cpppayflowcolor.Value, }; ecDetails.PaymentDetails.Add(paymentDetails); if (!String.IsNullOrWhiteSpace(billingAgreementText)) { var baType = new BillingAgreementDetailsType(BillingCodeType.MERCHANTINITIATEDBILLINGSINGLEAGREEMENT) { BillingAgreementDescription = billingAgreementText }; ecDetails.BillingAgreementDetails.Add(baType); } request.SetExpressCheckoutRequestDetails = ecDetails; /* //if (insuranceTotal.Value != "" && !double.Parse(insuranceTotal.Value).Equals(0.0)) { // paymentDetails.InsuranceTotal = new BasicAmountType(MSKatushaCurrencyCode, zero); // paymentDetails.InsuranceOptionOffered = "true"; // orderTotal += Double.Parse(insuranceTotal.Value); //} //if (handlingTotal.Value != "") { // paymentDetails.HandlingTotal = new BasicAmountType(MSKatushaCurrencyCode, handlingTotal.Value); // orderTotal += Double.Parse(handlingTotal.Value); //} //if (taxTotal.Value != "") { // paymentDetails.TaxTotal = new BasicAmountType(MSKatushaCurrencyCode, taxTotal.Value); // orderTotal += Double.Parse(taxTotal.Value); //} //if (shippingName.Value != "" && shippingStreet1.Value != "" // && shippingCity.Value != "" && shippingState.Value != "" // && shippingCountry.Value != "" && shippingPostalCode.Value != "") { // AddressType shipAddress = new AddressType(); // shipAddress.Name = shippingName.Value; // shipAddress.Street1 = shippingStreet1.Value; // shipAddress.Street2 = shippingStreet2.Value; // shipAddress.CityName = shippingCity.Value; // shipAddress.StateOrProvince = shippingState.Value; // shipAddress.Country = (CountryCodeType) // Enum.Parse(typeof(CountryCodeType), shippingCountry.Value); // shipAddress.PostalCode = shippingPostalCode.Value; // ecDetails.PaymentDetails[0].ShipToAddress = shipAddress; //} * */ }