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 }); ; }