Exemplo n.º 1
0
        public void BuyBeer(BeerPaymentViewModel beerPaymentModel)
        {
            PaymentViewModel judoModel = new PaymentViewModel()
            {
                Amount            = beerPaymentModel.GetSubTotal(),
                Currency          = "GBP",
                ConsumerReference = "ImHereForTheBeer01",
                Card = new CardViewModel()
            };
            JudoSuccessCallback successCallback = SuccessPayment;
            JudoFailureCallback failureCallback = FailurePayment;

            if (String.IsNullOrEmpty(Client.Instance.PaymentToken.CardToken))
            {
                Judo.Instance.Payment(judoModel, successCallback, failureCallback);
            }
            else
            {
                TokenPaymentViewModel tokenModel = new TokenPaymentViewModel()
                {
                    Amount            = beerPaymentModel.GetSubTotal(),
                    Currency          = "GBP",
                    ConsumerReference = "ImHereForTheBeer01",
                    Token             = Client.Instance.PaymentToken.CardToken,
                    ConsumerToken     = Client.Instance.PaymentToken.ConsumerToken,
                    LastFour          = Client.Instance.PaymentToken.CardLastfour,
                    CardType          = (CardType)Client.Instance.PaymentToken.CardType
                };
                Judo.Instance.TokenPayment(tokenModel, successCallback, failureCallback);
            }
        }
        public void ApplePayment(ApplePayViewModel viewModel, JudoSuccessCallback success, JudoFailureCallback failure, ApplePaymentType type)
        {
            if (!_clientService.ApplePayAvailable)
            {
                failure(new JudoError {
                    ApiError = new JudoPayDotNet.Errors.JudoApiErrorModel {
                        ErrorMessage = "Apple Pay is not enabled on device, application entitlement or setup by user.",
                        ErrorType    = JudoApiError.General_Error,
                        ModelErrors  = null
                    }
                });
            }
            try {
                var vc = GetCurrentViewController();

                if (JudoSDKManager.UIMode && vc == null)
                {
                    var error = new JudoError {
                        Exception = new Exception("Navigation controller cannot be null with UIMode enabled.")
                    };
                    failure(error);
                }
                else
                {
                    _paymentService.MakeApplePayment(viewModel, success, failure, vc as UINavigationController, type);
                }
            } catch (Exception ex) {
                HandleFailure(failure, ex);
            }
        }
Exemplo n.º 3
0
        public void TokenPreAuth(TokenPaymentViewModel payment, JudoSuccessCallback success, JudoFailureCallback failure, Activity context)
        {
            EvaluateRootCheck(failure);
            var innerModel = payment.Clone();

            _judoSdkApi.TokenPreAuth(innerModel, success, failure, context);
        }
Exemplo n.º 4
0
        public void PreAuth(PaymentViewModel preAuthorisation, JudoSuccessCallback success, JudoFailureCallback failure, Activity context)
        {
            EvaluateRootCheck(failure);
            var innerModel = preAuthorisation.Clone();

            _judoSdkApi.PreAuth(innerModel, success, failure, context);
        }
Exemplo n.º 5
0
        /// <summary>
        /// Process a pre-authorisation payment
        /// </summary>
        /// <param name="preAuthorisation">PaymentViewModel to pass Amount and card detail</param>
        /// <param name="success">Callback for success transaction</param>
        /// <param name="failure">Callback for fail transaction</param>
        /// <param name="navigationController">Navigation controller from UI this can be Null for non-UI Mode API</param>
        public void PreAuth(PaymentViewModel preAuthorisation, JudoSuccessCallback success, JudoFailureCallback failure)
        {
            RootCheck(failure);

            var innerModel = preAuthorisation.Clone();

            _judoSdkApi.PreAuth(innerModel, success, failure);
        }
Exemplo n.º 6
0
        /// <summary>
        /// Process a token authorisation payment
        /// </summary>
        /// <param name="payment">TokenPaymentViewModel to pass Amount and Token detail</param>
        /// <param name="success">Callback for success transaction</param>
        /// <param name="failure">Callback for fail transaction</param>
        /// <param name="navigationController">Navigation controller from UI this can be Null for non-UI Mode API</param>
        public void TokenPreAuth(TokenPaymentViewModel payment, JudoSuccessCallback success, JudoFailureCallback failure)
        {
            RootCheck(failure);

            var innerModel = payment.Clone();

            _judoSdkApi.TokenPreAuth(innerModel, success, failure);
        }
		public JudoPKPaymentAuthorizationViewControllerDelegate(Judo judo, ApplePayModel applePayModel, JudoSuccessCallback success, JudoFailureCallback failure, IApplePayRequest applePayRequest)
		{
			_successCallBack = success;
			_failureCallback = failure;
			_applePayModel = applePayModel;
			_judo = judo;
			_applePayRequest = applePayRequest;
		}
Exemplo n.º 8
0
        private void HandleResponse(JudoSuccessCallback success, JudoFailureCallback failure, Task <IResult <ITransactionResult> > reponse)
        {
            var result = reponse.Result;

            if (result != null && !result.HasError && result.Response.Result != "Declined")
            {
                var secureReceipt = result.Response as PaymentRequiresThreeDSecureModel;
                if (secureReceipt != null)
                {
                    var judoError = new JudoError {
                        ApiError = result != null ? result.Error : null
                    };
                    failure(new JudoError {
                        ApiError = new JudoPayDotNet.Errors.JudoApiErrorModel {
                            ErrorMessage = "Account requires 3D Secure but non UI Mode does not support this",
                            ErrorType    = JudoApiError.General_Error,
                            ModelErrors  = null
                        }
                    });
                }

                var paymentReceipt = result.Response as PaymentReceiptModel;

                if (success != null)
                {
                    success(paymentReceipt);
                }
                else
                {
                    throw new Exception("SuccessCallback is not set.");
                }
            }
            else
            {
                // Failure
                if (failure != null)
                {
                    var judoError = new JudoError {
                        ApiError = result != null ? result.Error : null
                    };
                    var paymentreceipt = result != null ? result.Response as PaymentReceiptModel : null;

                    if (paymentreceipt != null)
                    {
                        // send receipt even we got card declined
                        failure(judoError, paymentreceipt);
                    }
                    else
                    {
                        failure(judoError);
                    }
                }
                else
                {
                    throw new Exception("FailureCallback is not set.");
                }
            }
        }
Exemplo n.º 9
0
 public void PreAuth(PaymentViewModel payment, JudoSuccessCallback success, JudoFailureCallback failure)
 {
     try {
         _paymentService.PreAuthoriseCard(payment, new ClientService()).ContinueWith(reponse => HandResponse(success, failure, reponse));
     } catch (Exception ex) {
         // Failure
         HandleFailure(failure, ex);
     }
 }
Exemplo n.º 10
0
 public void TokenPreAuth(TokenPaymentViewModel payment, JudoSuccessCallback success, JudoFailureCallback failure, Activity context)
 {
     try {
         _paymentService.MakeTokenPreAuthorisation(payment, new ClientService()).ContinueWith(reponse => HandleResponse(success, failure, reponse));
     } catch (Exception ex) {
         // Failure
         HandleFailure(failure, ex);
     }
 }
Exemplo n.º 11
0
 public void RegisterCard(PaymentViewModel payment, JudoSuccessCallback success, JudoFailureCallback failure, Activity context)
 {
     try {
         _paymentService.RegisterCard(payment, new ClientService()).ContinueWith(reponse => HandleResponse(success, failure, reponse));
     } catch (Exception ex) {
         // Failure
         HandleFailure(failure, ex);
     }
 }
Exemplo n.º 12
0
 public JudoPKPaymentAuthorizationViewControllerDelegate(IApplePayService applePayService, PKPaymentRequest request, string customerRef, ApplePaymentType type, JudoSuccessCallback success, JudoFailureCallback failure)
 {
     _applePayService = applePayService;
     _runningTotal    = request.PaymentSummaryItems [request.PaymentSummaryItems.Length - 1].Amount;
     _paymentAction   = type;
     _successCallBack = success;
     _failureCallback = failure;
     _customerRef     = customerRef;
 }
Exemplo n.º 13
0
        public void BuyBeerApplePay(BeerPaymentViewModel beerModel)
        {
            if (_clientService.ApplePayAvailable)
            {
                JudoSuccessCallback successCallback = SuccessPayment;
                JudoFailureCallback failureCallback = FailurePayment;

                Judo.Instance.MakeApplePreAuth(GetApplePayViewModel(beerModel), successCallback, failureCallback);        
            }
        }
Exemplo n.º 14
0
        public void RegisterCard(PaymentViewModel registerCard, JudoSuccessCallback success, JudoFailureCallback failure, Activity context)
        {
            if (registerCard.Amount == 0)
            {
                registerCard.Amount = 1.01m;
            }
            EvaluateRootCheck(failure);
            var innerModel = registerCard.Clone();

            _judoSdkApi.RegisterCard(innerModel, success, failure, context);
        }
Exemplo n.º 15
0
        public void Payment(PaymentViewModel payment, JudoSuccessCallback success, JudoFailureCallback failure, Activity context)
        {
            Intent i = new Intent(context, typeof(UIMethods));

            i.PutExtra(JudoSDKManager.REQUEST_CODE, ACTION_CARD_PAYMENT.ToString());
            i.PutExtra(JudoSDKManager.JUDO_PAYMENT_REF, payment.PaymentReference);
            i.PutExtra(JudoSDKManager.JUDO_CONSUMER, JsonConvert.SerializeObject(new Consumer()
            {
                YourConsumerReference = payment.ConsumerReference
            }));
            i.PutExtra(JudoSDKManager.JUDO_AMOUNT, payment.Amount.ToString());
            i.PutExtra(JudoSDKManager.JUDO_ID, (String.IsNullOrWhiteSpace(payment.JudoID) ? JudoConfiguration.Instance.JudoId : payment.JudoID));
            i.PutExtra(JudoSDKManager.JUDO_CURRENCY, payment.Currency);
            _judoSuccessCallback = new Lazy <JudoSuccessCallback> (() => success);
            _judoFailureCallback = new Lazy <JudoFailureCallback> (() => failure);

            context.StartActivityForResult(i, ACTION_CARD_PAYMENT);
        }
Exemplo n.º 16
0
		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);
			}
		}
Exemplo n.º 17
0
        public void TokenPreAuth(TokenPaymentViewModel payment, JudoSuccessCallback success, JudoFailureCallback failure)
        {
            var vc = GetCurrentViewController();

            if (JudoSDKManager.UIMode && vc == null)
            {
                var error = new JudoError {
                    Exception = new Exception("Navigation controller cannot be null with UIMode enabled.")
                };
                failure(error);
            }
            else
            {
                var view = _viewLocator.GetTokenPreAuthView();
                view.successCallback = success;
                view.failureCallback = failure;
                view.tokenPayment    = payment;
                PresentView(vc as UINavigationController, view);
            }
        }
Exemplo n.º 18
0
        public void PreAuth(PaymentViewModel preAuthorisation, JudoSuccessCallback success, JudoFailureCallback failure)
        {
            var vc = GetCurrentViewController();

            if (JudoSDKManager.UIMode && vc == null)
            {
                var error = new JudoError {
                    Exception = new Exception("Navigation controller cannot be null with UIMode enabled.")
                };
                failure(error);
            }
            else
            {
                var view = _viewLocator.GetPreAuthView();

                // register card and pre Auth sharing same view so we need to set this property to false
                view.successCallback    = success;
                view.failureCallback    = failure;
                view.authorisationModel = preAuthorisation;
                PresentView(vc as UINavigationController, view);
            }
        }
Exemplo n.º 19
0
        public void MakeApplePayment(ApplePayViewModel payment, JudoSuccessCallback success, JudoFailureCallback failure, UINavigationController controller, ApplePaymentType type)
        {
            try {
                PKPaymentRequest request = new PKPaymentRequest();

                request.CurrencyCode = payment.CurrencyCode;

                request.CountryCode = payment.CountryCode;

                request.MerchantCapabilities = (PKMerchantCapability)payment.MerchantCapabilities;


                request.SupportedNetworks = payment.SupportedNetworks;


                request.PaymentSummaryItems = payment.Basket;

                request.MerchantIdentifier = payment.MerchantIdentifier;// @"merchant.com.judo.Xamarin"; // do it with configuration/overwrite

                var pkDelegate = new JudoPKPaymentAuthorizationViewControllerDelegate(this, request, payment.ConsumerRef.ToString(), type, success, failure);



                PKPaymentAuthorizationViewController pkController = new PKPaymentAuthorizationViewController(request)
                {
                    Delegate = pkDelegate
                };
                controller.PresentViewController(pkController, true, null);
            } catch (Exception e) {
                Console.WriteLine(e.InnerException.ToString());

                var judoError = new JudoError()
                {
                    Exception = e
                };
                failure(judoError);
            }
        }
Exemplo n.º 20
0
		public void PreAuth(Judo judo, ApplePayModel model, JudoSuccessCallback success, JudoFailureCallback failure)
		{
			var paymentService = GetPaymentService(judo);
			PerformApplePayAction(judo, model, success, failure, new ApplePayPreAuthRequest(paymentService));
		}
Exemplo n.º 21
0
        public void MakeApplePreAuth(ApplePayViewModel payment, JudoSuccessCallback success, JudoFailureCallback failure)
        {
            RootCheck(failure);

            _applePayMethods.ApplePayment(payment, success, failure, ApplePaymentType.PreAuth);
        }
Exemplo n.º 22
0
 public void SetupWebView(IPaymentService paymentService, JudoSuccessCallback successCallback, JudoFailureCallback failureCallback)
 {
     _paymentService  = paymentService;
     _successCallback = successCallback;
     _failureCallback = failureCallback;
 }
Exemplo n.º 23
0
        void SetUpTableView()
        {
            Dictionary <string, Action> buttonDictionary = new Dictionary <string, Action> ();
            JudoSuccessCallback         successCallback  = SuccessPayment;
            JudoFailureCallback         failureCallback  = FailurePayment;

            var tokenPayment = new TokenPaymentViewModel()
            {
                Amount            = 3.5m,
                ConsumerReference = consumerRef,
                CV2 = cv2
            };

            buttonDictionary.Add("Make a Payment", delegate {
                Judo.Instance.Payment(GetCardViewModel(), successCallback, failureCallback);
            });



            buttonDictionary.Add("PreAuthorise", delegate {
                Judo.Instance.PreAuth(GetCardViewModel(), successCallback, failureCallback);
            });


            buttonDictionary.Add("Token Payment", delegate {
                tokenPayment.Token         = cardToken;
                tokenPayment.ConsumerToken = consumerToken;
                tokenPayment.LastFour      = lastFour;
                tokenPayment.CardType      = cardType;

                Judo.Instance.TokenPayment(tokenPayment, successCallback, failureCallback);
            });

            buttonDictionary.Add("Token PreAuthorise", delegate {
                tokenPayment.Token         = cardToken;
                tokenPayment.ConsumerToken = consumerToken;
                tokenPayment.LastFour      = lastFour;
                tokenPayment.CardType      = cardType;

                Judo.Instance.TokenPreAuth(tokenPayment, successCallback, failureCallback);
            });

            buttonDictionary.Add("Register a Card", delegate {
                var payment    = GetCardViewModel();
                payment.Amount = 1.01m; //Minimum amount Gateways accept without question

                Judo.Instance.RegisterCard(payment, successCallback, failureCallback);
            });
            if (_clientService.ApplePayAvailable)
            {
                buttonDictionary.Add("Make a ApplePay Payment", delegate {
                    Judo.Instance.MakeApplePayment(GetApplePayViewModel(), successCallback, failureCallback);
                });

                buttonDictionary.Add("Make a ApplePay PreAuthorise", delegate {
                    Judo.Instance.MakeApplePreAuth(GetApplePayViewModel(), successCallback, failureCallback);
                });
            }

            MainMenuSource menuSource = new MainMenuSource(buttonDictionary);

            ButtonTable.Source            = menuSource;
            TableHeightConstrant.Constant = menuSource.GetTableHeight() + 60f;
        }