Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 针对不在Ruby on Rails应用程序上工作的付款的条带测试API?_Ruby On Rails_Ruby_Api_Web Applications_Stripe Payments - Fatal编程技术网

Ruby on rails 针对不在Ruby on Rails应用程序上工作的付款的条带测试API?

Ruby on rails 针对不在Ruby on Rails应用程序上工作的付款的条带测试API?,ruby-on-rails,ruby,api,web-applications,stripe-payments,Ruby On Rails,Ruby,Api,Web Applications,Stripe Payments,我正在为我的学习课程开发一个使用RubyonRails的应用程序。对于付款,我使用测试API在应用程序上安装了Stripe,它运行良好,但随后我在另一个应用程序上安装了Stripe,并使用了相同的测试API。当我点击Buy Now时,它不会进入Stripe支付页面,我会收到一条消息“Waiting for q.Stripe.com”。我可以对两个应用程序使用相同的测试API吗?还是这是一个不同的问题 我的代码如下: 在_controller.rb的位置 def show session

我正在为我的学习课程开发一个使用RubyonRails的应用程序。对于付款,我使用测试API在应用程序上安装了Stripe,它运行良好,但随后我在另一个应用程序上安装了Stripe,并使用了相同的测试API。当我点击Buy Now时,它不会进入Stripe支付页面,我会收到一条消息“Waiting for q.Stripe.com”。我可以对两个应用程序使用相同的测试API吗?还是这是一个不同的问题

我的代码如下: 在_controller.rb的位置

def show
    session = Stripe::Checkout::Session.create(
      payment_method_types: ['card'],
      customer_email: current_user.email,
      line_items:  [{
        name: @place.name,
        description: @place.description,
        amount: @place.price,
        currency: 'aud',
        quantity: 1
      }],
      payment_intent_data: {
        metadata: {
          user_id: current_user.id,
          place_id: @place.id
        }
      },
      success_url: "#{root_url}payments/success?placeId=#{@place.id}",
      # todo - check if we can use places_path
      cancel_url: "#{root_url}places"
    )

    @sessions_id = session.id
  end

和show.html.erb中的位置视图

<button data-stripe="payment">
Buy Now!
</button>

<script src="https://js.stripe.com/v3/"></script>
<script>
  document
    .querySelector("[data-stripe='payment']")
    .addEventListener("click", () => {
      const stripe = Stripe(
        "<%= Rails.application.credentials.dig(:stripe, :public_key) %>"
      )

      stripe.redirectToCheckout({
        sessionId: "<%= @session_id %>"
      })
    })
</script>


是的,您可以在多个应用程序上使用您的测试/生产密钥,如果您正试图这样做的话。检查控制台是否有任何错误消息会有所帮助。

在两个应用程序中使用“测试API”是什么意思?你的意思是在两个地方使用测试密钥吗?只要PK和SK是同一帐户的匹配对,就可以了。这听起来像是发生了什么事。关于错误的更多细节以及如何达到它将是有帮助的。我正在创建一个住宿应用程序。是的,我复制了两个键并创建了一个“立即购买”按钮。但当我点击它时,它不会进入条带页面。我在控制台下面附上了一张图片。我首先复制了两个键并将其放入凭据中,然后在Stripe.rb中执行上面的代码,以及上面的所有操作,然后创建了“立即购买”按钮。当我点击它时,它不会进入条纹页面。出现一条消息“Waiting Waiting q.stripe.com”,然后它消失了。我在控制台上没有收到任何错误,在连接到条带页面失败后,会出现以下消息。您是否有可能在服务器上托管此应用程序?请确保它可以联系Stripe的域:是的,我正在使用Rails服务器并连接到Stripe域。您是否可以尝试再次单击“立即购买”,并在浏览器开发人员控制台中查看网络日志?它能接触条纹吗?因为如果签出会话有任何问题,您至少会被重定向到Stripe并显示一条错误消息。谢谢您的帮助。我再次尝试,但控制台上没有消息或错误消息。当我点击localhost:3000上的buy now时,会出现一条消息“请求处理”,然后等待q.stripe.com出现。
Stripe.api_key = Rails.application.credentials.dig(:stripe, :secret_key)