【发布时间】:2014-01-29 20:21:37
【问题描述】:
我已将Stripe Checkout 集成到我的网站中,除了一个方面外,一切都很好。我使用“简单”结帐模式,Stripe 为我呈现结帐按钮。但我在文档中看不到检测用户是否单击关闭按钮的方法(有效地取消了交易 - 参见图片)。
有没有办法在“简单”模式(而不是自定义)中检测到这一点?
【问题讨论】:
标签: javascript stripe-payments
我已将Stripe Checkout 集成到我的网站中,除了一个方面外,一切都很好。我使用“简单”结帐模式,Stripe 为我呈现结帐按钮。但我在文档中看不到检测用户是否单击关闭按钮的方法(有效地取消了交易 - 参见图片)。
有没有办法在“简单”模式(而不是自定义)中检测到这一点?
【问题讨论】:
标签: javascript stripe-payments
好吧,你不能有回调,但是如果你在从你的 DOM 中删除 iframe 时创建自己的回调呢。
$(document).on("DOMNodeRemoved",".stripe_checkout_app", close);
function close(){
alert("close stripe");
}
因此,虽然“关闭”回调确实不可用,但这个小技巧可以帮助您。
//这个例子是 JQuery 的。
--- 编辑 ---
正如@artfulhacker 评论的另一种方法是使用 setInterval 计时器并检查类 .stripe_checkout_app 是否为 visible,可能类似于:
setInterval(function(){
if(!$('.stripe_checkout_app').is(":visible")){
alert("Stripe modal is hidden");
}
},1000)
【讨论】:
我发现的最简单的方法就是设置一个经过测试的提交变量。
var submittedForm = false;
var handler = StripeCheckout.configure({
key: '{{ stripe.public_key }}',
allowRememberMe: false,
token: function(response, extradata) {
var token = response.id;
var card = response.card.id;
submittedForm = true;
$('#submit-text').html('Processing, stand by');
//etc functionality to submit back to your own form
}
});
//when actually triggering checkout.js
handler.open({
name: 'myCompanyName',
amount: 1999,
closed: function () {
if(submittedForm == false)
$('#submit-text').html('Start your Trial');
}
}
});
此示例在打开 checkout.js 时更改了提交按钮文本。如果它实际处理,那么我们会返回一个令牌,将提交设置为 true。封闭测试了这一点。如果它是假的,这意味着他们没有提交就点击了X,所以我们将提交文本设置回来。如果为真,请忽略,以便在我们自己的 ajax 发布或其他内容完成时保留“正在处理”。
【讨论】:
(我在 Stripe Checkout 工作)
“关闭”回调仅在 custom integration 中可用。
【讨论】:
handler.open({closed : function(){/*this calls no matter what*/}})