1

My Stripe Element doesn't load (not showing) in Android WebView during live mode, it work during test.

Here is some code :

HTML

<form action="stripe_element.php" method="post" id="payment-form">
 <div class="form-row">
  <hr/>
  <div id="card-element">
   <!-- a Stripe Element will be inserted here. -->
  </div>
  <!-- Used to display form errors -->
  <div id="card-errors" role="alert"></div>
 </div>
 <button>Submit</button>
</form>

JS

var stripe = Stripe('pk_live_XXXXXXXXXXX');
var elements = stripe.elements();
var style = {
    base: {
      color: '#32325d',
      '::placeholder': {
        color: '#aab7c4'
      }
    }
  };

// Create an instance of the card Element
var card = elements.create('card', {style: style, hidePostalCode: true});

// Add an instance of the card Element into the card-element <div>
card.mount('#card-element');

// Handle form submission
var form = document.getElementById('payment-form');

form.addEventListener('submit', function(event) {
   event.preventDefault();

   stripe.createToken(card).then(function(result) {
     if (result.error) {
       // Inform the user if there was an error
       var errorElement = document.getElementById('card-errors');
       errorElement.textContent = result.error.message;
     } else {
       stripeTokenHandler(result.token);
     }
   });
});

Check the first line of my JS code : var stripe = Stripe('pk_live_XXXXXXXXXXX');, it's my publishable live key. If I use var stripe = Stripe('pk_test_XXXXXXXXXXX');, my publishable test key, the test work fine.

Any ideas ?

Thanks

4

1 回答 1

0

Itz 也许是由于 webview android API 中的 HTTPS 问题尝试添加此重载方法

 @Override
public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
    handler.proceed(); // Ignore SSL certificate errors
}

替代方案:相反,您可以尝试使用原生 XML 表单以条纹方式创建费用 请参阅此文档: https ://stripe.com/docs/mobile/android

示例项目: https ://github.com/stripe/stripe-android/tree/master/example

于 2018-02-20T10:59:14.253 回答