在移动设备的同一页面中打开条纹结帐弹出窗口

时间:2016-05-21 11:48:20

标签: javascript jquery stripe-payments payment

条纹是在PC的同一页面打开结帐弹出窗口,但在移动设备上它在新窗口中打开,这对用户体验不利。

所以我要做的是让用户代理就像PC浏览器一样,这在PHP中工作但我在调用checkout.js时找不到发送用户代理的方法,而她是我的代码:

$.ajaxSetup({
    beforeSend: function(xhr) {
        xhr.setRequestHeader('User-Agent', 'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:46.0) Gecko/20100101 Firefox/46.0');
    }
});
$.ajax({
  url: 'https://checkout.stripe.com/checkout.js',
  type: 'GET',
  dataType: 'script',
  xhrFields: {
    withCredentials: true,
  },
  crossDomain: true,
  success: function(){

    var handler = StripeCheckout.configure({
      key: 'pk_test_6pRNASCoBOKtI',
      locale: 'auto',
      token: function(token) {
        // You can access the token ID with `token.id`.
        // Get the token ID to your server-side code for use.
      }
    });

    $('#customButton').on('click', function(e) {
      // Open Checkout with further options:
      handler.open({
        name: 'Stripe.com',
        description: '2 widgets',
        amount: 2000
      });
      e.preventDefault();
    });

    // Close Checkout on page navigation:
    $(window).on('popstate', function() {
      handler.close();
    });
  }
});

1 个答案:

答案 0 :(得分:1)

无法在AJAX请求中更改用户代理,如下所述:https://stackoverflow.com/a/5862744/5307473

此外,Checkout在移动浏览器上使用标签而不是模态弹出窗口是有充分理由的。即使您成功欺骗了用户代理,Checkout也会在某些情况下失败,因为某些移动浏览器无法将付款信息发送给Stripe,这会给您的客户带来更糟糕的体验。