Beispiel #1
0
        public void TestGetTransactions()
        {
            //int customerId = 1;
            var reqInfo = new PayPalRequestInfo {
                SecurityInfo = new PayPalSecurityData()
                {
                    PermissionsGranted = new PayPalPermissionsGranted {
                        RequestToken     = "AAAAAAvoMRxkeqwRbNet",
                        VerificationCode = "BUZDemaiLtrC-008xfzUug",

                        AccessToken = "i0JEalB9y89Uq9VA.fjjsrdWnlPsVe8rwkIbPgvvP1clFnyEbHt29A",
                        TokenSecret = "kw1bQNNMe0bJj-81OAVfFXJh9ZY",
                    },
                    UserId = "*****@*****.**"
                },
                StartDate            = DateTime.Today.AddDays(-30),
                EndDate              = DateTime.Today,
                ErrorRetryingInfo    = new ErrorRetryingInfo(false),
                OpenTimeOutInMinutes = 1,
                SendTimeoutInMinutes = 1,
                DaysPerRequest       = 30
            };

            PayPalServiceHelper.GetTransactionData(reqInfo, data => {
                Console.WriteLine("data {0}", data.Capacity);
                return(true);
            });
        }
        private UpdateActionResultInfo UpdateTransactionInfo(IDatabaseCustomerMarketPlace databaseCustomerMarketPlace, PayPalSecurityData securityInfo, MP_CustomerMarketplaceUpdatingHistory historyRecord)
        {
            var endDate         = DateTime.UtcNow;
            var elapsedTimeInfo = new ElapsedTimeInfo();

            DateTime?startDate = ElapsedTimeHelper.CalculateAndStoreElapsedTimeForCallInSeconds(
                elapsedTimeInfo,
                databaseCustomerMarketPlace.Id,
                ElapsedDataMemberType.RetrieveDataFromDatabase,
                () => Helper.GetLastPayPalTransactionDate(databaseCustomerMarketPlace)
                );

            if (!startDate.HasValue)
            {
                startDate = endDate.AddMonths(-CurrentValues.Instance.PayPalTransactionSearchMonthsBack);
            }

            var errorRetryingInfo = new ErrorRetryingInfo((bool)CurrentValues.Instance.PayPalEnableRetrying, CurrentValues.Instance.PayPalMinorTimeoutInSeconds, CurrentValues.Instance.PayPalUseLastTimeOut);

            errorRetryingInfo.Info    = new ErrorRetryingItemInfo[3];
            errorRetryingInfo.Info[0] = new ErrorRetryingItemInfo(CurrentValues.Instance.PayPalIterationSettings1Index, CurrentValues.Instance.PayPalIterationSettings1CountRequestsExpectError, CurrentValues.Instance.PayPalIterationSettings1TimeOutAfterRetryingExpiredInMinutes);
            errorRetryingInfo.Info[1] = new ErrorRetryingItemInfo(CurrentValues.Instance.PayPalIterationSettings2Index, CurrentValues.Instance.PayPalIterationSettings2CountRequestsExpectError, CurrentValues.Instance.PayPalIterationSettings2TimeOutAfterRetryingExpiredInMinutes);
            errorRetryingInfo.Info[2] = new ErrorRetryingItemInfo(CurrentValues.Instance.PayPalIterationSettings3Index, CurrentValues.Instance.PayPalIterationSettings3CountRequestsExpectError, CurrentValues.Instance.PayPalIterationSettings3TimeOutAfterRetryingExpiredInMinutes);

            var reqInfo = new PayPalRequestInfo {
                SecurityInfo         = securityInfo,
                StartDate            = startDate.Value,
                EndDate              = endDate,
                ErrorRetryingInfo    = errorRetryingInfo,
                OpenTimeOutInMinutes = CurrentValues.Instance.PayPalOpenTimeoutInMinutes,
                SendTimeoutInMinutes = CurrentValues.Instance.PayPalSendTimeoutInMinutes,
                DaysPerRequest       = CurrentValues.Instance.PayPalDaysPerRequest
            };

            MP_PayPalTransaction mpTransaction = null;
            int numOfTransactions = 0;
            RequestsCounterData requestsCounter = ElapsedTimeHelper.CalculateAndStoreElapsedTimeForCallInSeconds(
                elapsedTimeInfo,
                databaseCustomerMarketPlace.Id,
                ElapsedDataMemberType.RetrieveDataFromExternalService,
                () => PayPalServiceHelper.GetTransactionData(reqInfo, data => {
                mpTransaction      = Helper.SavePayPalTransactionInfo(databaseCustomerMarketPlace, data, historyRecord, mpTransaction);
                numOfTransactions += (data == null ? 0 : data.Count);
                return(true);
            })
                );

            return(new UpdateActionResultInfo {
                Name = UpdateActionResultType.TransactionItemsCount,
                Value = numOfTransactions,
                RequestsCounter = requestsCounter,
                ElapsedTime = elapsedTimeInfo
            });
        }
        public ViewResult Success(string request_token, string verification_code)
        {
            Log.InfoFormat("PayPal Add callback, token:{0} verification code:{1}", request_token, verification_code);

            if (string.IsNullOrEmpty(verification_code) && string.IsNullOrEmpty(request_token))
            {
                Log.InfoFormat("PayPal adding was canceled by customer");
                return(View("PayPalCanceled"));
            }

            var paypal = ObjectFactory.GetInstance <PayPalDatabaseMarketPlace>();

            var customer = this.context.Customer;

            PayPalPermissionsGranted permissionsGranted;
            PayPalPersonalData       personalData;

            try
            {
                permissionsGranted = PayPalServiceHelper.GetAccessToken(request_token, verification_code);
                personalData       = PayPalServiceHelper.GetAccountInfo(permissionsGranted);
                this.mpChecker.Check(paypal.InternalId, customer, personalData.Email);
            }
            catch (PayPalException e)
            {
                Log.Warn(e);
                return(View("Error", (object)string.Join("<br />", e.ErrorDetails.Select(x => x.message).ToList())));
            }
            catch (MarketPlaceAddedByThisCustomerException)
            {
                return(View("Error", (object)DbStrings.PayPalAddedByYou));
            }
            catch (MarketPlaceIsAlreadyAddedException)
            {
                return(View("Error", (object)DbStrings.AccountAlreadyExixtsInDb));
            }

            int mpId = 0;

            Transactional.Execute(() => {
                mpId = SavePayPal(customer, permissionsGranted, personalData, paypal);
            });

            if (mpId > 0)
            {
                this.serviceClient.Instance.UpdateMarketplace(customer.Id, mpId, true, this.context.UserId);
            }

            return(View(permissionsGranted));
        }
        public ActionResult AttachPayPal()
        {
            try
            {
                var callback = Url.Action("Success", "PaymentAccounts", new { Area = "Customer" }, "https");
                var response = PayPalServiceHelper.GetRequestPermissionsUrl(callback);

                return(Redirect(response.Url));
            }
            catch (Exception e)
            {
                Log.Warn("Adding paypal failed", e);
                return(View("PPAttachError"));
            }
        }
 public JsonResult GetRequestPermissionsUrl()
 {
     try
     {
         var callback = Url.Action("Success", "PaymentAccounts", new { Area = "Customer" }, "https");
         var url      = PayPalServiceHelper.GetRequestPermissionsUrl(callback);
         return(Json(new { url = url }, JsonRequestBehavior.AllowGet));
     }
     catch (PayPalException ex)
     {
         return(Json(new { error = ex.ErrorDetails }, JsonRequestBehavior.AllowGet));
     }
     catch (Exception ex)
     {
         return(Json(new { error = ex.Message }, JsonRequestBehavior.AllowGet));
     }
 }
 public PayPalPersonalData GetAccountInfo(PayPalPermissionsGranted securityInfo)
 {
     return(PayPalServiceHelper.GetAccountInfo(securityInfo));
 }
 public PayPalPermissionsGranted GetAccessToken(string requestToken, string verificationCode)
 {
     return(PayPalServiceHelper.GetAccessToken(requestToken, verificationCode));
 }