public string postExecute(PaypalPayment data) { // paypal info loaded from database, set at controller creation var auth = getPaypalAuthToken(paypalUrl, paypalId, paypalSecret); ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12; var client = new RestClient(paypalUrl + "/payments/payment/" + data.paymentID + "/execute"); var request = new RestRequest(Method.POST) { RequestFormat = DataFormat.Json }; request.AddHeader("Authorization", string.Format("bearer {0}", auth.access_token)); request.AddHeader("Accept", "application/json"); request.AddParameter("application/json", "{ \"payer_id\": \"" + data.payerID + "\"}", ParameterType.RequestBody); var result = client.Execute(request); if (result.StatusCode != HttpStatusCode.OK) { throw new Exception(StatusCode(500, new { ReasonPhrase = "Payment execute failed" }).ToString()); // TODO make less ugly } return(result.Content); }
public ActionResult PaypalExecute(int orderID, [FromBody] PaypalPayment data) { validatePaypalData(data); var order = serv.Get(orderID); if (order.EmployerID != Employer.ID) { throwInvalidOrder(orderID); } validateNoPreviousPayment(order, data); if (order.ppState == null) { order.ppPayerID = data.payerID; order.ppPaymentID = data.paymentID; order.ppPaymentToken = data.paymentToken; order.ppState = "created"; woServ.Save(order, UserEmail); } var result = postExecute(data); order.ppResponse = result; woServ.Save(order, UserEmail); return(new JsonResult(result)); }
public void validateNoPreviousPayment(Domain.WorkOrder wo, PaypalPayment pp) { if (wo.ppPayerID != null && wo.ppPayerID != pp.payerID) { var res = new HttpResponseMessage(HttpStatusCode.BadRequest) { Content = new StringContent(string.Format("PaypalID already set to {0}, conflicts with {1}", pp.payerID, wo.ppPayerID)), ReasonPhrase = "PaypalID already set to a different ID" }; throw new Exception(res.ToString()); } if (wo.ppPaymentID != null && wo.ppPaymentID != pp.paymentID) { var res = new HttpResponseMessage(HttpStatusCode.BadRequest) { Content = new StringContent(string.Format("PaymentID already set to {0}, conflicts with {1}", pp.paymentID, wo.ppPaymentID)), ReasonPhrase = "PaymentID already set to a different ID" }; throw new Exception(res.ToString()); } if (wo.ppPaymentToken != null && wo.ppPaymentToken != pp.paymentToken) { var res = new HttpResponseMessage(HttpStatusCode.BadRequest) { Content = new StringContent(string.Format("PaymentToken already set to {0}, conflicts with {1}", pp.paymentToken, wo.ppPaymentToken)), ReasonPhrase = "PaymentToken already set to a different ID" }; throw new Exception(res.ToString()); } }
public ActionResult PaypalExecute(int orderID, [FromBody] PaypalPayment data) { validatePaypalData(data); var order = serv.Get(orderID); if (order.EmployerID != Employer.ID) { throwInvalidOrder(orderID); } validateNoPreviousPayment(order, data); if (order.ppState == null) { order.ppPayerID = data.payerID; order.ppPaymentID = data.paymentID; order.ppPaymentToken = data.paymentToken; order.ppState = "created"; woServ.Save(order, UserEmail); } var result = postExecute(data); // TODO fix //var payment = JsonConvert.DeserializeObject<PayPal.Api.Payment>(result); order.ppResponse = result; //order.ppState = payment.state; //order.ppFee = Double.Parse(payment.transactions.Single().amount.total); woServ.Save(order, UserEmail); return(new JsonResult(new { thingIs = "You seriously need to fix this." }));//payment); }
public void validatePaypalData(PaypalPayment pp) { if (pp.payerID == null || pp.paymentID == null || pp.paymentToken == null) { var res = new HttpResponseMessage(HttpStatusCode.BadRequest) { Content = new StringContent(string.Format("Paypal data: {0}", JsonConvert.SerializeObject(pp))), ReasonPhrase = "Incomplete Paypal data" }; throw new Exception(res.ToString()); } }