bool IsTrue(string description, string currencyType, decimal curren) { var trans = new Transactions() { ID = Guid.NewGuid(), Currency = currencyType, OrderAmount = curren, PaymentCardToken = "tok_visa", PaymentMethod = "Full", OrderId = "orderIDTest000", Description = description, }; var charger = StripeHelpers.RequestCharge(trans, curren, description); var amount = charger.Amount.ToString(); var strAmount = amount.Insert(amount.Length - 2, "."); var AmountPart = Convert.ToDecimal(strAmount); WriteToFile($"### Test Currency [{currencyType}] {DateTime.Now.ToString()} ### \n\n"); if (curren == AmountPart) { WriteToFile($" {currencyType}: CurrencyInput {curren} || CurrencyOutput {AmountPart} ==> true \n\n"); return(true); } WriteToFile($" {currencyType}: CurrencyInput {curren} || CurrencyOutput {AmountPart} ==> false \n\n"); return(false); }
public IActionResult PostData([FromBody] Transactions value) { if (value != null) { if (value.ReferenceId != null)//Kiểm tra có tồn tại trên api Striper thì dùng lệnh update { } var rescoure = StripeHelpers.RequestCharge(value); Transactions trans = new Transactions() { ID = Guid.NewGuid(), Currency = rescoure.Currency, OrderId = rescoure.OrderId, ReferenceId = rescoure.Id, CreatedDate = DateTime.Now, OrderAmount = rescoure.Amount, Description = rescoure.Description, PaymentMethod = rescoure.PaymentMethodId, Status = rescoure.Status, BackUrl = rescoure.ReceiptUrl }; _TransactionsService.InsertTransactions(trans); return(Ok(rescoure)); } return(Ok("Fail")); }
public IActionResult ProcessPayment([FromBody] TransactionProcessParamsItems request, string PaymentType) { var requestParams = request.TransactionProcess; Transactions model = new Transactions(); model.BackUrl = requestParams.BackUrl; model.Currency = requestParams.Currency; model.Description = requestParams.Description; model.ID = requestParams.ID; model.OrderAmount = requestParams.OrderAmount; model.OrderId = requestParams.OrderId; model.PaymentMethod = requestParams.PaymentMethod; model.PaymentCardToken = requestParams.PaymentCardToken; APIResponseData responseData = new APIResponseData(); responseData.StatusCode = 0; responseData.Message = "Failed."; if (model == null) { responseData.StatusCode = 2; responseData.Message = "Value is required."; goto skipToReturn; } try { var trans = _TransactionsService.GetTransactionById(model.ID.ToString()); if (trans == null) { responseData.Message = "Notfound."; responseData.StatusCode = 2; goto skipToReturn; } #region PAYPAL if (PaymentType.ToUpper() == "PAYPAL") // Paypal { var paypal = Payment_PayPal(request); trans.ModifiedDate = DateTime.Now; trans.PaymentTypeAPI = PaymentType.ToUpper(); _TransactionsService.UpdateTransactions(trans); responseData.Message = "Successfully."; responseData.StatusCode = 1; responseData.Result.Data = new { TransactionId = model.ID, PaymenID = paypal.id, PaymentStatus = paypal.state, FailureMessage = paypal.failed_transactions }; return(Ok(responseData)); //return new JsonResult(paypal); } #endregion #region Stripe else { Stripe.Charge charge = null; //var amount = charge.Amount.ToString(); decimal payAmount = 0; if (trans.PaymentMethod == Common.DTO.PaymentMethod.Full.ToUpper()) { payAmount = model.OrderAmount.Value; charge = StripeHelpers.RequestCharge(model, payAmount, model.Description); trans.Status = charge.Status; trans.ReferenceId = charge.Id; } else { var transactionItems = _TransactionsService.GetTransactionItems(trans.ID).ToList() .Where(x => x.Status == null).OrderBy(x => x.OrderNo).ToList(); var nextPayItem = transactionItems.FirstOrDefault(); payAmount = nextPayItem.PayAmount.Value; string description = string.Format("Charge {0}% of OrderId: {1}. {2}", nextPayItem.PayPercent, model.OrderId, model.Description); charge = StripeHelpers.RequestCharge(model, payAmount, description); nextPayItem.Status = charge.Status; nextPayItem.ReferenceId = charge.Id; _TransactionsService.UpdateTransactionItem(nextPayItem); trans.Status = PaymentStatus.Processing; } trans.ModifiedDate = DateTime.Now; trans.PaymentCardToken = model.PaymentCardToken; trans.StripeCustomerId = charge.CustomerId; trans.OrderAmountRemaining = trans.OrderAmountRemaining.Value - payAmount; trans.PaymentTypeAPI = PaymentType.ToUpper(); _TransactionsService.UpdateTransactions(trans); responseData.Message = "Successfully."; responseData.StatusCode = 1; responseData.Result.Data = new { TransactionId = model.ID, PaymenID = charge.Id, PaymentStatus = charge.Status, FailureMessage = charge.FailureMessage }; var PaymentLogs = new PaymentLogs() { Data = Newtonsoft.Json.JsonConvert.SerializeObject(charge), Error = "Success", PaymentType = PaymentType, FunctionName = "ProcessPayment", TransID = requestParams.ID.ToString() }; _PaymentLogsService.InsertPaymentLogs(PaymentLogs); } #endregion } catch (Exception ex) { responseData.Message = "Something went wrong, please try again."; responseData.StatusCode = 0; var typeEx = ex.GetType(); if (typeEx.FullName == "PayPal.PayPalException") { var excep = ex as PayPal.PaymentsException; StringBuilder sb = new StringBuilder(); sb.AppendLine("Error: " + excep.Details.name); sb.AppendLine("Message: " + excep.Details.message); sb.AppendLine("URI: " + excep.Details.information_link); sb.AppendLine("Debug ID: " + excep.Details.debug_id); foreach (var errorDetails in excep.Details.details) { sb.AppendLine("Details: " + errorDetails.field + " -> " + errorDetails.issue); } var PaymentLogs = new PaymentLogs() { Data = Newtonsoft.Json.JsonConvert.SerializeObject(request), Error = sb.ToString(), PaymentType = PaymentType, FunctionName = "ProcessPayment", TransID = requestParams.ID.ToString() }; _PaymentLogsService.InsertPaymentLogs(PaymentLogs); } else { var PaymentLogs = new PaymentLogs() { Data = Newtonsoft.Json.JsonConvert.SerializeObject(request), Error = ex.InnerException != null?Newtonsoft.Json.JsonConvert.SerializeObject(ex.InnerException.Message) : Newtonsoft.Json.JsonConvert.SerializeObject(ex.Message), PaymentType = PaymentType, FunctionName = "ProcessPayment", TransID = requestParams.ID.ToString() }; _PaymentLogsService.InsertPaymentLogs(PaymentLogs); } EmailHelpers.SendEmail(new Common.DTO.ErrorInfo() { Section = $"AQ ProcessPayment PaymentType: {PaymentType} <br /> TransactionID : {requestParams.ID}", Exception = ex }); } skipToReturn: //label use to force return return(Ok(responseData)); }