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按钮?
如果我包括:
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。