javascript - 如何从 Rails Controller 调用 Stripe Checkout

标签 javascript ruby-on-rails stripe-payments

我将 stripe checkout api 与 Rails 应用程序一起使用。我想在用户提交表单时重定向到结帐页面。我遇到的问题是 Stripe 结帐需要单击一个按钮,这将触发一个 javascript 函数,该函数获取 session ID 并重定向到结帐页面。

我的问题是,当用户提交表单时,我想使用他们提交的电子邮件来创建结账 session 并将他们的 stripe 客户帐户链接到他们的结账。所以在表单提交上我能够很好地创建 session ,我只是无法在创建 session 后触发前端 javascript 函数。

我尝试直接从 Rails Controller 调用一个 javascript 函数并将 session ID 传递给它,我无法让它工作,但感觉它可能接近解决方案。一旦 Controller 创建了 session ,我具体如何触发 javascript 函数

这是我想在我的 Controller 中调用的 Javascript 函数

function go_to_stripe(sessionId) {
  var stripe = Stripe("<%=ENV["STRIPE_PUB_KEY"]%>");

  stripe.redirectToCheckout({
    sessionId: sessionId
  }).then(function (result) {
    console.log("hitting the then with result of ", result);
  });
}

我已经在 Controller 中尝试过这个(以及它的一些变体)但它没有调用 javascript 函数。

# this returns the session id 
@stripe_session_id = create_stripe_session(@cart)
respond_to do |format|
   format.html 
   format.js { render :js => "go_to_stripe("+@stripe_session_id+");" }
end

最佳答案

找到了基于 https://signalvnoise.com/posts/3697-server-generated-javascript-responses 的修复程序

关键在于在表单上设置 remote: true 以及将 javascript 文件命名为与 Controller 操作相同的名称。更改文件中的 javascript 以包含函数的主体。

JavaScript

var stripe = Stripe("<%=ENV["STRIPE_PUB_KEY"]%>");

stripe.redirectToCheckout({
  sessionId: "<%= @stripe_session_id %>"
}).then(function (result) {
  console.log("hitting the then with result of ", result);
});

rails Controller

@stripe_session_id = create_stripe_session(@cart)
respond_to do |format|
  format.html
  format.js
end

关于javascript - 如何从 Rails Controller 调用 Stripe Checkout,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57897089/

相关文章:

css - Rails 字体未在移动设备上加载但显示在桌面上

stripe-payments - 如何判断 strip 充电是否成功

Paypal api - 需要一个支付专业账户?

javascript - ParcelJs 在所有文件链接之前添加额外的 "/"

ruby-on-rails - 问题将数据库迁移到 Heroku - PG::UndefinedTable: ERROR: relation "users"does not exist

ruby-on-rails - Rails 应用程序在 Heroku 上失败 : (No route matches [GET] "/")

reactjs - 组件的 NextJS/Script — defer Stripe

javascript - 如何使用map函数在react中使const

javascript - ExecJS::ProgramError:意外的 token punc «(»,预期的 punc «:» 在运行 rake assets:precompile on production 时

javascript - ace.js 中的 requirejs baseUrl 和 require("./...)