使用R Shiny App集成Stripe Checkout

Jay*_*yCo 5 r stripe-payments shiny

[与R闪亮的Google小组交叉发帖 - 我等了24小时]

checkout如果我只是将其保存为a .html并使用Firefox打开它,以下代码将正常呈现Stripe中的按钮:

<h1> this is a test </h1>
<form action="" method="POST">
  <script
    src="https://checkout.stripe.com/checkout.js" class="stripe-button"
    data-key="pk_test_qdunoptxl9KNXR5qk7WdtkVg"
    data-amount="2000"
    data-name="Demo Site"
    data-description="2 widgets ($20.00)"
    data-image="/128x128.png">
  </script>
</form>
Run Code Online (Sandbox Code Playgroud)

但将它放在一个R Shiny应用程序中,如下所示:

output$StripeCheckOut <- renderUI({
  div(class="span6", 
     div(HTML('
                <h1> this is a test </h1>
                <form action="" method="POST">
                  <script
                   src="https://checkout.stripe.com/checkout.js" class="stripe-button"
                   data-key="pk_test_qdunoptxl9KNXR5qk7WdtkVg"
                   data-amount="2000"
                   data-name="Demo Site"
                   data-description="2 widgets ($20.00)"
                   data-image="/128x128.png">
                 </script>
               </form>
            ')))
Run Code Online (Sandbox Code Playgroud)

将导致This is a Test文本下方的空白字段.

似乎R Shiny不允许Javascript在dom渲染页面后动态加载按钮.

如何在R Shiny App中包含基本Stripe Checkout按钮?

Jay*_*yCo 5

如果我包括:

 HTML('
        <h1> this is a test </h1>
        <form action="" method="POST">
          <script
           src="https://checkout.stripe.com/checkout.js" class="stripe-button"
           data-key="pk_test_qdunoptxl9KNXR5qk7WdtkVg"
           data-amount="2000"
           data-name="Demo Site"
           data-description="2 widgets ($20.00)"
           data-image="/128x128.png">
          </script>
        </form>
       ')
Run Code Online (Sandbox Code Playgroud)

ui.r直接在里面,它可以工作 - 但是将它放在条件面板中将不允许加载 Stripe JS。

相反,我使用了一个 htmldata-display-if条件:

<div align="center" data-display-if="output.Unpaid==True">
...
</div>
Run Code Online (Sandbox Code Playgroud)

一切正常!

这也很好,因为它允许您将条件绑定到 Shinyoutput对象与input有时更容易使用的对象。


进一步测试后更新

事实证明我的编辑不太奏效;Stripe Checkout JS 加载后,它会阻止我的 Shiny App 与页面上的其他 JS 元素进行交互。

似乎与 Stripe JS 和内部的 Shiny JS 存在一些冲突....


新更新

最新版本的 Shiny (0.9.1) 已经修复了这个问题。它似乎与 js 头和单例有关,它们已在最新版本中更新。

这不再是问题,您现在可以直接在 Shiny 中使用 Stripe。