public JudoPKPaymentAuthorizationViewControllerDelegate(Judo judo, ApplePayModel applePayModel, JudoSuccessCallback success, JudoFailureCallback failure, IApplePayRequest applePayRequest) { _successCallBack = success; _failureCallback = failure; _applePayModel = applePayModel; _judo = judo; _applePayRequest = applePayRequest; }
void PerformApplePayAction(Judo judo, ApplePayModel model, JudoSuccessCallback success, JudoFailureCallback failure, IApplePayRequest applePayRequest) { try { PKPaymentRequest request = GetPKPaymentRequest(model); var rootView = GetCurrentViewController(); var pkDelegate = new JudoPKPaymentAuthorizationViewControllerDelegate(judo, model, success, failure, applePayRequest); PKPaymentAuthorizationViewController pkController = new PKPaymentAuthorizationViewController(request) { Delegate = pkDelegate }; rootView.PresentViewController(pkController, true, null); } catch (Exception e) { var judoError = new JudoError { Exception = e.InnerException }; failure(judoError); } }
PKPaymentRequest GetPKPaymentRequest(ApplePayModel model) { var summaryItems = model.Items.Select(x => new PKPaymentSummaryItem { Amount = new NSDecimalNumber(x.Amount), Label = x.Label }).ToList(); var applePayment = new PKPaymentRequest { CurrencyCode = new NSString(model.CurrencyCode), CountryCode = new NSString(model.CountryCode), SupportedNetworks = GetSupportedNetworks(model.SupportedCardNetworks).ToArray(), MerchantIdentifier = new NSString(model.MerchantIdentifier), MerchantCapabilities = PKMerchantCapability.ThreeDS }; if (!string.IsNullOrWhiteSpace(model.ItemsSummaryLabel)) { summaryItems.Add(new PKPaymentSummaryItem { Amount = new NSDecimalNumber(model.ItemsTotalAmount()), Label = model.ItemsSummaryLabel }); } applePayment.PaymentSummaryItems = summaryItems.ToArray(); return applePayment; }
public void PreAuth(Judo judo, ApplePayModel model, JudoSuccessCallback success, JudoFailureCallback failure) { var paymentService = GetPaymentService(judo); PerformApplePayAction(judo, model, success, failure, new ApplePayPreAuthRequest(paymentService)); }