public static TransactionResult ProcessExecution(Order order, PaymentReturnModel returnModel, PaypalWithRedirectSettings settings) { var transAmount = order.OrderTotal - order.StoreCreditAmount; var payment = new PaymentExecution() { PayerId = returnModel.PayerId, Transactions = new List <CartBase>() { new CartBase() { Amount = new Amount() { Currency = order.CurrencyCode, Total = transAmount.ToString("N") } } } }; var pcRequest = new PaymentExecuteRequest(returnModel.PaymentId); pcRequest.RequestBody(payment); var environment = GetEnvironment(settings); var client = new PayPalHttpClient(environment); var transactionResult = new TransactionResult(); try { var response = client.Execute(pcRequest).Result; var result = response.Result <Payment>(); transactionResult.Success = true; transactionResult.NewStatus = result.State == "approved" ? PaymentStatus.Complete : PaymentStatus.OnHold; transactionResult.OrderGuid = order.Guid; transactionResult.TransactionAmount = result.Transactions[0].Amount.Total.GetDecimal(); transactionResult.TransactionGuid = returnModel.PaymentId; transactionResult.TransactionCurrencyCode = result.Transactions[0].Amount.Currency; transactionResult.ResponseParameters = new Dictionary <string, object>() { { "id", result.Id }, { "payerId", returnModel.PayerId }, { "paymentId", returnModel.PaymentId }, { "createTime", result.CreateTime }, { "failureReason", result.FailureReason }, { "experienceProfileId", result.ExperienceProfileId }, { "noteToPayer", result.NoteToPayer }, { "intent", result.Intent }, { "state", result.State }, { "updateTime", result.UpdateTime }, { "saleId", result.Transactions[0].RelatedResources[0].Sale.Id } }; } catch (BraintreeHttp.HttpException ex) { transactionResult.Success = false; transactionResult.Exception = ex; } return(transactionResult); }
public IActionResult Return(string orderGuid, [FromQuery] PaymentReturnModel paymentReturnModel) { var order = _orderService.GetByGuid(orderGuid); if (order == null) { return(NotFound()); } var transactionResult = PaypalHelper.ProcessExecution(order, paymentReturnModel, _paypalWithRedirectSettings); if (transactionResult.Success) { _paymentAccountant.ProcessTransactionResult(transactionResult, true); return(RedirectToRoute(RouteNames.CheckoutComplete, new { orderGuid = order.Guid })); } return(R.Fail.Result); }
private void DoDDPayment() { AndHUD.Shared.Show(this, "Please wait ...", -1, MaskType.Clear); string url = Settings.InstanceURL; var url2 = url + "/Api/MakeDebitPayment"; var amount = Decimal.Parse(this.et_Amount.Text); if (Settings.MakePaymentIn3Part) { paymentType = 2; } else if (Settings.MakePaymentInstallment) { paymentType = 3; } else if (amount == Settings.TotalOutstanding) { Settings.MakePaymentInFull = true; paymentType = 1; } else if (amount < Settings.TotalOutstanding) { Settings.MakePaymentOtherAmount = true; paymentType = 4; } var DebtorPaymentInstallment = ""; if (Settings.MakePaymentIn3Part || Settings.MakePaymentInstallment) { JSonHelper helper = new JSonHelper(); string jsonResult = helper.ConvertObjectToJSon(this.instalmentList); DebtorPaymentInstallment = jsonResult; } var json2 = new { Item = new { ReferenceNumber = Settings.RefNumber, Amount = this.et_Amount.Text, DirectDebitAccountName = this.et_AccountName.Text, DirectDebitAccountNumber = this.et_AccountNumber.Text, DirectDebitBSB = this.et_BSB.Text, PaymentType = paymentType, PaymentMethod = "2", DebtorPaymentInstallment = DebtorPaymentInstallment, InstalmentPaymentFrequency = Settings.Frequency } }; try { var ObjectReturn2 = new PaymentReturnModel(); string results = ConnectWebAPI.Request(url2, json2); if (string.IsNullOrEmpty(results)) { AndHUD.Shared.Dismiss(); this.RunOnUiThread(() => this.bt_Continue.Enabled = true); this.RunOnUiThread(() => alert = new Alert(this, "Error", Resources.GetString(Resource.String.NoServer))); this.RunOnUiThread(() => alert.Show()); } else { ObjectReturn2 = Newtonsoft.Json.JsonConvert.DeserializeObject <PaymentReturnModel>(results); if (ObjectReturn2.IsSuccess) { TrackingHelper.SendTracking("Make DD Payment"); Intent Intent = new Intent(this, typeof(UpdatePersonalInformationActivity)); Intent.PutExtra("ScreenComeFrom", "MakeDDPayment"); ////////////////////////////////////////////////////////////////////////////////////////////////// Intent.PutExtra("tv_TransactionDescription", ObjectReturn2.TransactionDescription); Intent.PutExtra("tv_ReceiptNumber", ObjectReturn2.ReceiptNumber); Intent.PutExtra("tv_Amount", ObjectReturn2.Amount); Intent.PutExtra("tv_Time", ObjectReturn2.Time); Intent.PutExtra("tv_Date", ObjectReturn2.Date); Intent.PutExtra("tv_Name", ObjectReturn2.Name); Intent.PutExtra("PaymentMethod", 2); Intent.PutExtra("PaymentType", this.paymentType); Intent.PutExtra("PaymentId", ObjectReturn2.PaymentId); Intent.PutExtra("ClientName", ObjectReturn2.ClientName); Intent.PutExtra("FirstDebtorPaymentInstallmentId", ObjectReturn2.FirstDebtorPaymentInstallmentId); StartActivity(Intent); AndHUD.Shared.Dismiss(); this.Finish(); } else { AndHUD.Shared.Dismiss(); this.RunOnUiThread(() => this.bt_Continue.Enabled = true); this.RunOnUiThread(() => alert = new Alert(this, "Error", ObjectReturn2.Errors[0].ErrorMessage)); this.RunOnUiThread(() => alert.Show()); } } } catch (Exception ee) { this.RunOnUiThread(() => this.bt_Continue.Enabled = true); AndHUD.Shared.Dismiss(); } }