private void InitPaymentForm() { Task.Run(async() => { var paymentMethods = await DemoBackend.GetPaymentMethods(amount); var cardPaymentMethod = paymentMethods.FirstOrDefault(x => x.Type == "scheme"); if (cardPaymentMethod == null) { RunOnUiThread(() => Snackbar.Make(layout, "Credit card payments not available!", Snackbar.LengthLong).Show()); return; } var cardConfigurationBuilder = new CardConfiguration.Builder(this, Config.PublicKey); cardConfigurationBuilder.SetEnvironment(Com.Adyen.Checkout.Core.Api.Environment.Europe); var cardConfiguration = cardConfigurationBuilder.Build(); RunOnUiThread(() => { try { var cardComponent = CardComponent.Provider.Get(this, cardPaymentMethod, cardConfiguration) as CardComponent; var cardView = new CardView(this) { Id = View.GenerateViewId() }; var cardLayout = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.MatchParent, ViewGroup.LayoutParams.WrapContent); cardLayout.AddRule(LayoutRules.AlignParentTop); cardView.Attach(cardComponent, this); layout.AddView(cardView, cardLayout); textViewLoading.Visibility = ViewStates.Gone; cardComponent.Observe(this, new PaymentComponentObserver { Changed = state => { var paymentMethod = state.Data.PaymentMethod as CardPaymentMethod; Android.Util.Log.Debug("ObserverImpl", $"Onchanged -- Valid: {state.IsValid}, {paymentMethod.Type}"); if (state.IsValid) { fab.Enabled = true; this.paymentMethod = paymentMethod; } else { fab.Enabled = false; } } }); } catch (System.Exception ex) { Android.Util.Log.Error("MainActivity", Throwable.FromException(ex), ex.Message); } }); }); }
private void PayButton_Click(object sender, EventArgs e) { Task.Run(async() => { var paymentResult = await DemoBackend.ExecutePayment(paymentMethod, "adyencheckout://com.companyname.demoappv3", amount); if (paymentResult.ResultCode == "RedirectShopper") { HandleRedirect(paymentResult); return; } ShowPaymentStatus(paymentResult); }); }
void HandleRedirect(PaymentsResponse paymentResult) { redirectComponent = Com.Adyen.Checkout.Redirect.RedirectComponent.Provider.Get(this) as Com.Adyen.Checkout.Redirect.RedirectComponent; redirectComponent.Observe(this, new RedirectComponentObserver { Changed = data => { var paymentData = data.Details.GetString("paymentData"); var details = data.Details.GetJSONObject("details"); var paRes = details.GetString("PaRes"); var md = details.GetString("MD"); Android.Util.Log.Debug("ObserverImpl", $"paymentData: {paymentData}"); Task.Run(async() => { var result = await DemoBackend.GetPaymentDetails(paRes, md, paymentData); ShowPaymentStatus(result); }); } }); redirectComponent.HandleAction(this, paymentResult.Action.AsRedirectAction()); }