Ejemplo n.º 1
0
        protected virtual async Task ProcessCardPayment(PaymentOrderInfo paymentInfo)
        {
            Loading = true;

            if (await VmService.PayWithCard(CardNumber.Without(' '), ExpirationDate, Cvv, CardHolder, paymentInfo.Amount, paymentInfo.Currency, () => {
                Loading = false;
            }))
            {
                UserDialogs.Confirm($"Заказ №{OrderId} успешно оплачен", "ОК");
                //TODO переходить на экран успеха
                this.ChangePresentation(new MoveToDefaultPH());
            }

            Loading = false;
        }
        public Task <string> Pay(PaymentOrderInfo info, Action authorizationCallback = null)
        {
            if (info == null)
            {
                return(Task.FromResult(string.Empty));
            }

            _tcs = new TaskCompletionSource <string>();

            var request = new PKPaymentRequest();

            request.MerchantIdentifier   = Config.MerchantId;
            request.SupportedNetworks    = Config.SupportedNetworks.Select(n => new NSString(n)).ToArray();
            request.MerchantCapabilities = PKMerchantCapability.ThreeDS;
            request.CountryCode          = Config.CountryCode;
            request.CurrencyCode         = info.Currency;

            var paymentItems = new List <PKPaymentSummaryItem>();

            if (!info.Items.IsNullOrEmpty())
            {
                paymentItems = info.Items.Select(item => new PKPaymentSummaryItem()
                {
                    Label  = item.Title,
                    Amount = new NSDecimalNumber(item.Amount.ToString())
                }).ToList();
            }

            //добавляем итоговую стоимость
            paymentItems.Add(new PKPaymentSummaryItem()
            {
                Label  = "Итог",
                Amount = new NSDecimalNumber(info.Amount.ToString())
            });

            request.PaymentSummaryItems = paymentItems.ToArray();

            var paymentViewController = new PKPaymentAuthorizationController(request);

            paymentViewController.Delegate = this;
            paymentViewController.Present(null);

            return(_tcs.Task);
        }
Ejemplo n.º 3
0
        public async Task <PaymentOrderInfo> GetPaymentInfo(string orderId)
        {
            PaymentOrderInfo info = null;

            try
            {
                info = await ApiService.OrderInfo(orderId);
            }
            catch (ConnectionException ex)
            {
                OnConnectionException(ex);
            }
            catch (Exception ex)
            {
                OnException(ex);
            }

            return(info);
        }
Ejemplo n.º 4
0
        protected virtual async Task ProcessCardPayment(PaymentOrderInfo paymentInfo)
        {
            Loading = true;

            var paymentResult = await VmService.PayWithCard(CardNumber.Without(' '), ExpirationDate, Cvv, CardHolder, paymentInfo.Amount, paymentInfo.Currency, () =>
            {
                Loading = false;
            }, OrderId);

            if (paymentResult.Succeeded)
            {
                await PaymentsVmService.OrderPaid(OrderId);
            }
            else
            {
                await UserDialogs.Error(paymentResult.ErrorMessage.IsNullOrEmtpy()? "Не удалось совершить платеж, проверьте введенные данные. Если ошибка повторится попробуйте совершить платеж позже" : paymentResult.ErrorMessage);
            }

            Loading = false;
        }
Ejemplo n.º 5
0
 public async Task <string> Pay(PaymentOrderInfo info)
 {
     return(await _applePayService.Pay(info));
 }