Example #1
0
        public DoExpressCheckoutPaymentResponse SendPayPalDoExpressCheckoutPaymentRequest(ApplicationCart cart, string token, string payerId)
        {
            try
            {
                WebUILogging.LogMessage("SendPayPalDoExpressCheckoutPaymentRequest");
                DoExpressCheckoutPaymentResponse response = _payPalTransactionRegistrar.SendDoExpressCheckoutPayment(token, payerId, cart.Currency, cart.TotalPrice);

                // Add a PayPal transaction record
                PayPalTransaction transaction = new PayPalTransaction
                {
                    RequestId            = response.RequestId,
                    TrackingReference    = cart.Id.ToString(),
                    RequestTime          = DateTime.Now,
                    RequestStatus        = response.ResponseStatus.ToString(),
                    TimeStamp            = response.TIMESTAMP,
                    RequestError         = response.ErrorToString,
                    Token                = response.TOKEN,
                    RequestData          = response.ToString,
                    PaymentTransactionId = response.PaymentTransactionId,
                    PaymentError         = response.PaymentErrorToString,
                };

                // Store this transaction in your Database

                return(response);
            }
            catch (Exception ex)
            {
                WebUILogging.LogException(ex.Message, ex);
            }
            return(null);
        }
Example #2
0
        public GetExpressCheckoutDetailsResponse SendPayPalGetExpressCheckoutDetailsRequest(string token)
        {
            try
            {
                WebUILogging.LogMessage("SendPayPalGetExpressCheckoutDetailsRequest");
                GetExpressCheckoutDetailsResponse response = _payPalTransactionRegistrar.SendGetExpressCheckoutDetails(token);

                // Add a PayPal transaction record
                PayPalTransaction transaction = new PayPalTransaction
                {
                    RequestId         = response.RequestId,
                    TrackingReference = response.TrackingReference,
                    RequestTime       = DateTime.Now,
                    RequestStatus     = response.ResponseStatus.ToString(),
                    TimeStamp         = response.TIMESTAMP,
                    RequestError      = response.ErrorToString,
                    Token             = response.TOKEN,
                    PayerId           = response.PAYERID,
                    RequestData       = response.ToString,
                };

                // Store this transaction in your Database

                return(response);
            }
            catch (Exception ex)
            {
                WebUILogging.LogException(ex.Message, ex);
            }
            return(null);
        }
Example #3
0
        public void TestInit()
        {
            paypalTransaction = new PayPalTransaction();

            shippingPrice    = 10;
            shippingDiscount = 10;

            items = new List <PayPalItem>
            {
                new PayPalItem()
                {
                    Name        = "Product number 01",
                    Description = "That's my description of my product",
                    Price       = 50,
                    Sku         = "1001",
                    Currency    = PayPalCurrency.AUD,
                    Quantity    = 3,
                    Tax         = 0
                },
                new PayPalItem()
                {
                    Name        = "Product number 02",
                    Description = "That's my description of my product",
                    Price       = 40,
                    Sku         = "1002",
                    Currency    = PayPalCurrency.AUD,
                    Quantity    = 1,
                    Tax         = 1.3
                }
            };
        }
Example #4
0
        /// <summary>
        /// Saves the transactions.
        /// </summary>
        /// <param name="transactions">The transactions.</param>
        /// <param name="marketPlaceId">The market place identifier.</param>
        /// <param name="historyId">The history identifier.</param>
        /// <exception cref="System.InvalidOperationException">could not save transactions</exception>
        private void SaveTransactions(IList <PayPal3dPartyTransactionItem> transactions, int marketPlaceId, int historyId)
        {
            if (transactions.Any())
            {
                return;
            }

            PayPalTransaction transaction = new PayPalTransaction {
                Created = DateTime.UtcNow,
                CustomerMarketPlaceId = marketPlaceId,
                CustomerMarketPlaceUpdatingHistoryRecordId = historyId
            };

            int transactionId = (int)PayPalQueries.SaveTransaction(transaction);

            if (transactionId < 1)
            {
                throw new InvalidOperationException("could not save paypal transactionItem");
            }

            var res = PayPalQueries.SaveTransactionItems(transactions.Select(t => CreateSingleTransaction(t, transactionId)));

            if (!res.HasValue || !res.Value)
            {
                throw new InvalidOperationException("could not save transactionItem items");
            }
        }
Example #5
0
        public string SubmitExpressOrder(PayPalTransaction paypaltransaction)
        {
            CK1 clint   = new CK1();
            var request = new ExpressCompleteOrderRequest()
            {
                UserKey    = CK1Config.getUserKey(),
                Token      = CK1Config.getToken(),
                ActionType = EnumActionType.Submit,
                OrderSign  = paypaltransaction.OrderSign,
            };
            ExpressCompleteOrderResponse response = clint.ExpressCompleteOrder(request);

            return(response.Message);
        }
Example #6
0
        /// <summary>
        /// Saves the transaction.
        /// </summary>
        /// <param name="transaction">The transaction.</param>
        /// <returns></returns>
        public Optional <int> SaveTransaction(PayPalTransaction transaction)
        {
            using (var connection = GetOpenedSqlConnection2()) {
                var cmd = GetInsertCommand(transaction, connection.SqlConnection(), "MP_PayPalTransaction", "Id");
                if (!cmd.HasValue)
                {
                    return(Optional <int> .Empty());
                }

                using (var sqlCommand = cmd.Value) {
                    return(ExecuteScalarAndLog <int>(sqlCommand));
                }
            }
        }
Example #7
0
        public SetExpressCheckoutResponse SendPayPalSetExpressCheckoutRequest(ApplicationCart cart, string serverURL, string userEmail = null)
        {
            try
            {
                ServicePointManager.SecurityProtocol       = SecurityProtocolType.Tls;
                ServicePointManager.Expect100Continue      = true;
                ServicePointManager.SecurityProtocol       = (SecurityProtocolType)3072;
                ServicePointManager.DefaultConnectionLimit = 9999;

                WebUILogging.LogMessage("SendPayPalSetExpressCheckoutRequest");

                // Optional handling of cart items: If there is only a single item being sold we don't need a list of expressCheckoutItems
                // However if you're selling a single item as a sale consider also adding it as an ExpressCheckoutItem as it looks better once you get to PayPal's site
                // Note: ExpressCheckoutItems are currently NOT stored by PayPal against the sale in the users order history so you need to keep your own records of what items were in a cart
                List <ExpressCheckoutItem> expressCheckoutItems = null;
                if (cart.Items != null)
                {
                    expressCheckoutItems = new List <ExpressCheckoutItem>();
                    foreach (ApplicationCartItem item in cart.Items)
                    {
                        expressCheckoutItems.Add(new ExpressCheckoutItem(item.Quantity, item.Price, item.Name, item.Description));
                    }
                }

                SetExpressCheckoutResponse response = _payPalTransactionRegistrar.SendSetExpressCheckout(cart.Currency, cart.TotalPrice, cart.PurchaseDescription, cart.Id.ToString(), serverURL, expressCheckoutItems, userEmail);

                // Add a PayPal transaction record
                PayPalTransaction transaction = new PayPalTransaction
                {
                    RequestId         = response.RequestId,
                    TrackingReference = cart.Id.ToString(),
                    RequestTime       = DateTime.Now,
                    RequestStatus     = response.ResponseStatus.ToString(),
                    TimeStamp         = response.TIMESTAMP,
                    RequestError      = response.ErrorToString,
                    Token             = response.TOKEN,
                };

                // Store this transaction in your Database

                return(response);
            }
            catch (Exception ex)
            {
                WebUILogging.LogException(ex.Message, ex);
            }
            return(null);
        }
Example #8
0
        public string SubmitExpressOrder(PayPalTransaction paypaltransaction)
        {
            ShipRateSOAP s = new ShipRateSOAP();
            UpdateOrderStatusInfoArray updateOrderRequestInfo = new UpdateOrderStatusInfoArray();

            updateOrderRequestInfo.orderStatus = "sumbmitted";

            string message = "";
            //string time;
            DateTime time;
            var      request = s.updateOrderStatus(
                HR,
                updateOrderRequestInfo,
                paypaltransaction.OrderSign,
                out message,
                out time
                );

            return(message);
        }
Example #9
0
        public PayPalTransaction GetTransactionDetailsByUserID(int userID)
        {
            var transaction = Context.UserTransactions.OrderByDescending(m => m.TransactionDate).FirstOrDefault(m => m.UserID == userID);

            if (transaction != null)
            {
                return(new PayPalTransaction(transaction));
            }
            else
            {
                //Check Basic membership
                var result       = new PayPalTransaction();
                var basicmemeber = Context.Users.FirstOrDefault(x => x.UserID == userID && x.MemberShipType == 1);
                if (basicmemeber != null)
                {
                    if (basicmemeber.MemberShipType == 1)
                    {
                        result.IsBasic          = true;
                        result.PendingCardCount = basicmemeber.CardsCount;
                    }
                }
                return(result);
            }
        }
Example #10
0
        public ShipOrder AddOutboundOrder(DispatchRequest dispatchrequest, PayPalTransaction paypaltransaction)
        {
            #region 生成包裹

            var product = new List <ExpressProduct>();

            foreach (var item in paypaltransaction.PayPalTransactionPaymentItems)
            {
                product.Add(new ExpressProduct
                {
                    CustomsTitleCN = "怀表",
                    CustomsTitleEN = "POCKET WATCH",
                    Quantity       = Convert.ToInt32(item.PaymentItemQuantity),
                    SKU            = item.Association.Product.Sku,
                    Weight         = item.Association.Product.Weight,
                    DeclareValue   = dispatchrequest.goodsDeclareWorth / paypaltransaction.PayPalTransactionPaymentItems.Count
                });
            }


            var packageList = new List <ExpressPackage>();
            packageList.Add(new ExpressPackage
            {
                Custom        = dispatchrequest.Custom,
                ShipToAddress = new ShipToAddress
                {
                    Contact  = dispatchrequest.ShiptoName,
                    Street1  = dispatchrequest.ShipToStreet,
                    Street2  = dispatchrequest.ShipToStreet2,
                    City     = dispatchrequest.ShiptoCity,
                    Province = dispatchrequest.ShipToState,
                    Country  = dispatchrequest.ShipToCountryName,
                    PostCode = dispatchrequest.ShipToZip,
                },
                Packing = new Evisou.Ims.Contract.chukou1.Packing
                {
                    Height = dispatchrequest.Height,
                    Length = dispatchrequest.Length,
                    Width  = dispatchrequest.Width,
                },
                Remark      = "备注信息",
                Status      = OrderExpressState.Initial,
                TrackCode   = "",
                Weight      = dispatchrequest.goodsWeight,
                ProductList = product.ToArray(),
            });

            var orderDetail = new ExpressOrder
            {
                IsTracking  = false,
                Location    = "GZ",
                Remark      = "测试订单",
                PackageList = packageList.ToArray(),
            };

            #endregion

            ShipOrder order   = new ShipOrder();
            var       clint   = new CK1();
            var       request = new ExpressAddOrderNewRequest
            {
                UserKey        = CK1Config.getUserKey(),
                Token          = CK1Config.getToken(),
                Submit         = false,
                OrderDetail    = orderDetail,
                ExpressTypeNew = dispatchrequest.Express,
            };

            ExpressAddOrderResponse response = clint.ExpressAddOrderNew(request);
            try
            {
                order = new ShipOrder
                {
                    Message   = response.Message,
                    OrderSign = response.OrderSign
                };
            }
            catch (Exception ex)
            {
                throw ex.InnerException;
            }
            return(order);
        }
Example #11
0
 protected abstract Task OnVerifiedAsync(PayPalTransaction transaction);
Example #12
0
        public async Task <ActionResult> Index(FormCollection form)
        {
            if (form["selectedProducts"] == null)
            {
                return(View(products));
            }
            var skuArray         = form["selectedProducts"].Length > 0 ? form["selectedProducts"].Split(',') : new string[] { };
            var selectedProducts = skuArray.Select(item => products.FirstOrDefault(x => x.Sku == item)).Where(product => product != null).ToList();

            double shippingPrice    = 10;
            double shippingDiscount = 10;

            //taking the quantities
            foreach (var item in selectedProducts)
            {
                var quantity = form[$"quantity_{item.Sku}"];
                item.Quantity = Convert.ToInt32(quantity);
            }

            var shippingAddress = new PayPalShippingAddress()
            {
                RecipientName = form["RecipientName"],
                Line1         = form["Line1"],
                Line2         = form["Line2"],
                City          = form["City"],
                CountryCode   = form["CountryCode"],
                PostalCode    = form["PostalCode"],
                Phone         = form["Phone"],
                State         = form["State"]
            };

            var transaction = new PayPalTransaction(
                selectedProducts,
                shippingAddress,
                form["invoiceNumber"],
                "The payment transaction description.",
                AllowedPaymentMethod.INSTANT_FUNDING_SOURCE,
                PayPalCurrency.AUD,
                shippingPrice,
                shippingDiscount);


            var payment = new PaypalPayment(
                Intent.SALE,
                PaymentMethod.PAYPAL,
                "Contact us for any questions on your order.",
                transaction);

            var createPayment = await paypalCheckout.CreatePayment(payment);

            if (createPayment.Error == null)
            {
                var redirectUrl = createPayment.Links.FirstOrDefault(x => x.Method == PayPalLinkMethod.REDIRECT)?.Href;
                Response.Redirect(redirectUrl, true);
            }
            else
            {
                ViewBag.Error        = createPayment.Error.Message;
                ViewBag.ErrorDetails = createPayment.Error.Details;

                ViewBag.Output = JsonConvert.SerializeObject(payment);
            }

            return(View(products));
        }
Example #13
0
        public ShipOrder AddExpressOrder(DispatchRequest dispatchrequest, PayPalTransaction paypaltransaction)
        {
            ShipRateSOAP             s = new ShipRateSOAP();
            addOrderRequestInfoArray addOrderRequestInfo = new addOrderRequestInfoArray();

            addOrderRequestInfo.shippingMethod   = dispatchrequest.Express;
            addOrderRequestInfo.recipientCountry = dispatchrequest.ShipToCountryName;
            addOrderRequestInfo.recipientName    = dispatchrequest.ShiptoName;
            addOrderRequestInfo.recipientAddress = dispatchrequest.ShipToStreet;
            addOrderRequestInfo.recipientZipCode = dispatchrequest.ShipToZip;
            addOrderRequestInfo.recipientCity    = dispatchrequest.ShiptoCity;
            addOrderRequestInfo.recipientState   = string.IsNullOrEmpty(dispatchrequest.ShipToState) ? dispatchrequest.ShiptoCity : dispatchrequest.ShipToState;

            addOrderRequestInfo.orderStatus      = "confirmed";//"preprocess";
            addOrderRequestInfo.recipientPhone   = "123456963";
            addOrderRequestInfo.recipientEmail   = paypaltransaction.Receiver;
            addOrderRequestInfo.goodsDescription = dispatchrequest.goodsDescription;
            addOrderRequestInfo.goodsQuantity    = "1";                                           //
            //addOrderRequestInfo.goodsQuantitySpecified = true;
            addOrderRequestInfo.goodsDeclareWorth = dispatchrequest.goodsDeclareWorth.ToString(); //
            // addOrderRequestInfo.goodsDeclareWorthSpecified = true;
            addOrderRequestInfo.isReturn = "1";
            addOrderRequestInfo.evaluate = (dispatchrequest.goodsDeclareWorth + 1M).ToString();
            //addOrderRequestInfo.evaluateSpecified = true;

            List <goodsDetailsArray> list = new List <goodsDetailsArray>();

            list.Add(new goodsDetailsArray
            {
                detailWorth    = dispatchrequest.goodsDeclareWorth.ToString(),
                detailQuantity = "1",
                // detailQuantitySpecified = true,
                detailDescription = dispatchrequest.goodsDescription,
                // detailWorthSpecified = true
            });
            addOrderRequestInfo.goodsDetails = list.ToArray <goodsDetailsArray>();

            string    customerOrderNo, operatingTime, orderActionStatus, exceptionCode, notifyUrl, note, alert, area, trackingNumber;
            ShipOrder order = new ShipOrder();

            /*  var request = s.addOrder(
             *    HR,
             *    addOrderRequestInfo,
             *    out customerOrderNo,
             *    out operatingTime,
             *    out orderActionStatus,
             *    out exceptionCode,
             *    out notifyUrl,
             *    out note,
             *    out alert
             *    );
             * order = new ShipOrder
             * {
             *    Message = note,
             *    OrderSign = request.ToString()
             * };
             *
             * order.Message = note;
             * order.OrderSign =request??request.ToString();
             *
             * var aa = order;*/
            try
            {
                var request = s.addOrder(
                    HR,
                    addOrderRequestInfo,
                    out customerOrderNo,
                    out operatingTime,
                    out orderActionStatus,
                    out exceptionCode,
                    out notifyUrl,
                    out note,
                    out alert,
                    out area,
                    out trackingNumber
                    );

                order = new ShipOrder
                {
                    Message   = note,
                    OrderSign = request ?? request.ToString()
                };
            }
            catch (Exception ex)
            {
                throw ex.InnerException;
            }
            return(order);
        }