条纹是在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();
});
}
});
答案 0 :(得分:1)
无法在AJAX请求中更改用户代理,如下所述:https://stackoverflow.com/a/5862744/5307473。
此外,Checkout在移动浏览器上使用标签而不是模态弹出窗口是有充分理由的。即使您成功欺骗了用户代理,Checkout也会在某些情况下失败,因为某些移动浏览器无法将付款信息发送给Stripe,这会给您的客户带来更糟糕的体验。