Stripe“Simple”Checkout - 检测是否单击了关闭按钮

时间:2014-01-29 20:21:38

标签: javascript stripe-payments

我已将Stripe Checkout集成到我的网站中,除了一个方面外,一切都很有效。我使用'简单'结帐模式,Stripe为我呈现我的结账按钮。但我认为在文档中没有办法检测用户是否点击了关闭按钮(实际取消了交易 - 见图片)。

enter image description here

有没有办法在'简单'模式下检测到这个(而不是自定义)?

3 个答案:

答案 0 :(得分:21)

嗯,你不能有一个回调,但是当条纹从你的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)

答案 1 :(得分:11)

(我在Stripe Checkout工作)

“关闭”回调仅适用于custom integration

答案 2 :(得分:10)

我找到的最简单的方法就是设置一个经过测试的提交变量。

    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帖子或任何结束时仍然存在。