title: Stripe android, how i can create 3ds payment with source card
body: <p>I want create a payments with 3ds. So i read the docs for one payment and created a code like this:</p>
  
  <pre><code>   // init code
        final PaymentAuthConfig.Stripe3ds2UiCustomization uiCustomization =
                      new PaymentAuthConfig.Stripe3ds2UiCustomization.Builder()
                              .setLabelCustomization(
                                      new PaymentAuthConfig.Stripe3ds2LabelCustomization.Builder()
                                              .setTextFontSize(12)
                                              .build())
                              .build();
  
              PaymentAuthConfig.init(new PaymentAuthConfig.Builder()
                      .set3ds2Config(new PaymentAuthConfig.Stripe3ds2Config.Builder()
                              .setTimeout(5)
                              .setUiCustomization(uiCustomization)
                              .build())
                      .build());
  </code></pre>
  
  <p>code for a payment</p>
  
  <pre><code>// payment method
   PaymentMethodCreateParams params = cardInputWidget.getPaymentMethodCreateParams();
                  if (params != null) {
                      Map&lt;String, String&gt; extraParams = new HashMap&lt;&gt;();
                      extraParams.put("setup_future_usage", "off_session");
  
                      ConfirmPaymentIntentParams confirmParams = ConfirmPaymentIntentParams
                              .createWithPaymentMethodCreateParams(params, paymentIntentClientSecret, null, false, extraParams);
  
                      final Context context = getApplicationContext();
                      stripe = new Stripe(
                              context,
                              PaymentConfiguration.getInstance(context).getPublishableKey()
                      );
                      stripe.confirmPayment(PaymentUPD.this, confirmParams);
                  }
  </code></pre>
  
  <p>code for one payment is work, and its work with 3ds. But now i want to save all cards and then choose some of card from saved list of card.</p>
  
  <p>So i save a card like this:</p>
  
  <pre><code>        SourceParams cardSourceParams = SourceParams.createCardParams(cardToSave);
     Map&lt;String, Object&gt; params = new HashMap&lt;String, Object&gt;();
                      params.put("statement_descriptor", nameOfCard);
                      cardSourceParams.setExtraParams(params);
  
   stripe.createSource(cardSourceParams, new ApiResultCallback&lt;Source&gt;() {
              @Override
              public void onSuccess(@NonNull Source source) {
                  Log.e("success", source.getId());
                 String source_id = source.getId();
      // then i save this source to server
              }
  
              @Override
              public void onError(@NonNull Exception error) {
                  Log.e("PaymentCore", error.getMessage(), error);
              }
          });
  </code></pre>
  
  <p>After my saving card, i get all list of card from server and i have something like this:</p>
  
  <pre><code>brand == Visa
   last 4 numbers ==   4242
   source_id == src_1GSficBnnQZzyRulVXsNTThC1
  </code></pre>
  
  <p>so now i want to pay with a saved card. So i get </p>
  
  <pre><code>source_id == src_1GSficBnnQZzyRulVXsNTThC1
  </code></pre>
  
  <p>and try do something like this:</p>
  
  <pre><code>String source = "src_1GSficBnnQZzyRulVXsNTThC1";
  
                  SourceParams sourceParams = SourceParams.createSourceFromTokenParams(source);
  
                  ConfirmPaymentIntentParams confirmParams = ConfirmPaymentIntentParams
                          .createWithSourceParams(sourceParams, paymentIntentClientSecret, null);
  
                  final Context context = getApplicationContext();
                  stripe = new Stripe(
                          context,
                          PaymentConfiguration.getInstance(context).getPublishableKey()
                  );
                  stripe.confirmPayment(PaymentUPD.this, confirmParams);
  </code></pre>
  
  <p>error:</p>
  
  <pre><code>java.lang.IllegalArgumentException: Parameter specified as non-null is null: method kotlin.jvm.internal.Intrinsics.checkParameterIsNotNull, parameter returnUrl
  </code></pre>
  
  <p>what should i put to returnUrl ? I haw no any returnUrl</p>
  
  <p>My second question is: How i can make a payment with 3ds with a already saved cards?</p>