Exemple #1
0
        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);
        }
Exemple #2
0
        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);
        }
Exemple #3
0
        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();
            }
        }