Inheritance: AbstractResponseType
Exemple #1
0
        private void processResponse(PayPalAPIInterfaceServiceService service, MassPayResponseType response)
        {
            HttpContext CurrContext = HttpContext.Current;
            CurrContext.Items.Add("Response_apiName", "MassPay");
            CurrContext.Items.Add("Response_redirectURL", null);
            CurrContext.Items.Add("Response_requestPayload", service.getLastRequest());
            CurrContext.Items.Add("Response_responsePayload", service.getLastResponse());

            Dictionary<string, string> keyParameters = new Dictionary<string, string>();
            keyParameters.Add("Correlation Id", response.CorrelationID);
            keyParameters.Add("API Result", response.Ack.ToString());

            if (response.Errors != null && response.Errors.Count > 0)
            {
                CurrContext.Items.Add("Response_error", response.Errors);
            }
            else
            {
                CurrContext.Items.Add("Response_error", null);
            }

            if (!response.Ack.Equals(AckCodeType.FAILURE))
            {
            }
            CurrContext.Items.Add("Response_keyResponseObject", keyParameters);
            Server.Transfer("../APIResponse.aspx");
        }
        private static void SendErrorsOfMassPayToAdmins(CreateInvoiceReturn output, MassPayResponseType massPayResponse)
        {
            if (massPayResponse.Errors != null && massPayResponse.Errors.Count > 0)
            {
                StringBuilder sb = new StringBuilder();
                foreach (var error in massPayResponse.Errors)
                {
                    sb.Append("code:" + error.ErrorCode);
                    sb.Append(",long:" + error.LongMessage);
                    sb.Append(",severity:" + error.SeverityCode);
                    sb.Append(",shortMessage:" + error.ShortMessage);
                    foreach (var item in error.ErrorParameters)
                    {
                        sb.Append(",param:" + item.ParamID + ";" + item.Value);
                    }
                    sb.Append("________");
                }

                output.Status = InvoiceStatus.Paypal_Email_Not_Confirmed;

                var emailData = new Dictionary<string, string> { { "body", sb.ToString() } };
                EmailServer.EmailServer.SendEmail(ServerConfig.DEFAULT_EMAIL, ServerConfig.DEFAULT_EMAIL_FROM_NAME, ServerConfig.DEFAULT_ADMIN_EMAIL_ADMIN, " Mass Pay Problem", emailData, EmailServer.EmailServerLayoutsEnum.Blank);
            }
            else
            {
                output.Status = InvoiceStatus.Failed;
                throw new Exception("Failure MASS Payment ");
            }
        }
        //return RedirectToAction("Index", "Balance", new {message = 2});
        //return RedirectToAction("Index", "Balance", new {message = 1});
        public ActionResult Widthdraw()
        {
            var user = _userRepository.GetByUsername(User.Identity.Name);
            if(user.AvailableForWithdrawal < 5.0)
                throw new Exception("Invalid amount");

            var amountString = string.Format(CultureInfo.InvariantCulture, "{0:0.00}", user.AvailableForWithdrawal);
            var paypalConfig = new Dictionary<string, string>();
            paypalConfig.Add("apiUsername", "gigbucket_test7_api1.test.ru");
            paypalConfig.Add("apiPassword", "ANCAZ9WSDHPQ8Y8U");
            paypalConfig.Add("apiSignature", "AFcWxV21C7fd0v3bYYYRCpSSRl31A2cPmRQaJrQqtqnGQmQpAFCNohRs");
            paypalConfig.Add("mode", "sandbox");
            MassPayResponseType responseMassPayResponseType = new MassPayResponseType();
            try
            {
                MassPayReq massPay = new MassPayReq();

                List<MassPayRequestItemType> massPayItemList = new List<MassPayRequestItemType>();
                BasicAmountType amount = new BasicAmountType(CurrencyCodeType.USD, amountString);

                MassPayRequestItemType massPayRequestItem = new MassPayRequestItemType(amount);

                // Email Address of receiver
                massPayRequestItem.ReceiverEmail = user.Email;

                massPayItemList.Add(massPayRequestItem);
                MassPayRequestType massPayRequest = new MassPayRequestType(massPayItemList);
                massPay.MassPayRequest = massPayRequest;

                // Create the service wrapper object to make the API call
                PayPalAPIInterfaceServiceService service = new PayPalAPIInterfaceServiceService(paypalConfig);
                // # API call
                // Invoke the massPay method in service wrapper object
                responseMassPayResponseType = service.MassPay(massPay, new SignatureCredential(paypalConfig["apiUsername"], paypalConfig["apiPassword"], paypalConfig["apiSignature"]));

                if (responseMassPayResponseType != null)
                {
                    // # Success values
                    if (responseMassPayResponseType.Ack.ToString().Trim().ToUpper().Equals("SUCCESS"))
                    {
                        var paymentTransaction = new PaymentTransaction
                        {
                            Amount = user.AvailableForWithdrawal,
                            CreateDate = DateTime.Now,
                            PaymentId = responseMassPayResponseType.Version,
                            Status = PaymentTransactionStatus.Success,
                            User = user,
                            PaymentAction = PaymentAction.Withdrawal,
                        };
                        _paymentTransactionRepository.Add(paymentTransaction);
                        user.Balance = user.Balance - user.AvailableForWithdrawal;
                        user.AvailableForWithdrawal = 0;
                        _userRepository.Update(user);
                        return RedirectToAction("Index", "Balance", new { message = 1 });
                    }
                    // # Error Values
                    else
                    {
                        var paymentTransaction = new PaymentTransaction
                        {
                            Amount = user.AvailableForWithdrawal,
                            CreateDate = DateTime.Now,
                            PaymentId = responseMassPayResponseType.Version,
                            Status = PaymentTransactionStatus.Failed,
                            User = user,
                            PaymentAction = PaymentAction.Withdrawal,
                        };
                        _paymentTransactionRepository.Add(paymentTransaction);
                        return RedirectToAction("Index", "Balance", new { message = 2 });
                    }
                }
            }
            // # Exception log
            catch (Exception ex)
            {
                var paymentTransaction = new PaymentTransaction
                {
                    Amount = user.AvailableForWithdrawal,
                    CreateDate = DateTime.Now,
                    PaymentId = "",
                    Status = PaymentTransactionStatus.Failed,
                    User = user,
                    PaymentAction = PaymentAction.Withdrawal,
                };
                _paymentTransactionRepository.Add(paymentTransaction);
                return RedirectToAction("Index", "Balance", new { message = 2 });
            }
            return RedirectToAction("Index", "Balance", new { message = 2 }); ;
        }