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); }
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); }
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; }
public async Task <string> Pay(PaymentOrderInfo info) { return(await _applePayService.Pay(info)); }