为什么Stripe的handleCardPayment无法在我的Javascript函数中运行?

时间:2019-04-06 10:13:10

标签: javascript php ajax stripe-payments

我正在尝试使用Stripes handleCardPayment处理付款意图后的费用。我无法使handleCardPayment函数在另一个Javascript函数中运行。

我尝试逐步调试代码。 Javascript函数将运行,并将在窗口中显示警告。

我在函数顶部设置的Javascript变量也得到设置。

handleCardPayment()函数似乎没有运行?

我尝试尝试/捕获以查看是否可以捕获来自请求的错误,但未记录任何内容。

我对这个问题在哪里有些困惑?尽管我怀疑正确调用stripe函数可能缺少一些基本知识。

function completePayment() {

 // Assign client secret from PHP session variable

 var clientSecret = "<?php echo $_SESSION['c_secret'] ?>";

 try {

  stripe.handleCardPayment(
   clientSecret, cardElement, {
    source_data: {
      owner: {email: "<?php echo $_SESSION['m_usr_email'] ?>"}
    }
   }
  ).then(function(result) {
     if (result.error) {
        alert("Error in payment");
      } else {
        alert("Success in payment");
      }
    }); 
  }
  catch(error) {
   console.log(error.message);
  } 
}

我的付款意图是在单独的PHP页面上创建的。这样可以正常工作,并且会在条带中创建带有关联的客户机密的付款意图。

该应用当前的运行方式:

  • 用户按下“订阅”按钮。
  • Ajax请求运行并将POSTS到单独的PHP文件
  • PHP文件创建付款意图并将客户机密保存在PHP SESSION变量中
  • Ajax'Complete function()'然后调用'completePayment();'
  • JavaScript函数'completePayment();'位于页面底部的结束标记之前。
  • 调试'completePayment()'显示该函数确实在Ajax'Complete function()'调用之后执行。
  • stripe.HandleCardPayment无法执行任何操作。
  • cardElement是在创建card元素时创建的全局Javascript变量(在初始页面加载时创建)。

  • 我已经调试了两个PHP SESSION变量,并确认在handleCardPayment函数中使用它们之前,已经为它们设置了正确的信息。

关于我在这里做错什么的任何建议吗?

1 个答案:

答案 0 :(得分:0)

我有同样的问题。看起来它未执行的功能是因为控制台日志未出现,但是搜索后我发现我缺少$ intent-> client_secret,在此之前,js控制台未向我显示任何内容,我只需要调用功能条。 handleCardPayment没有任何额外的代码,然后控制台向我显示$ intent-> client_secret,它是未定义的。

我的英语说得不太好,我希望它能为某人服务