[与R闪亮的Google小组交叉发帖 - 我等了24小时]
如果我只是将其保存为checkout
并使用Firefox打开它,以下代码将正常呈现Stripe中的.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>
但将其置于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>
')))
将导致This is a Test
文字下方的空白字段。
似乎R Shiny在dom渲染页面后不允许Javascript动态加载按钮。
如何在R Shiny App中包含基本Stripe Checkout按钮?
答案 0 :(得分:4)
如果我包括:
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>
')
直接在ui.r
内部,它可以工作 - 但是将它放在一个条件面板中将不允许加载Stripe JS。
相反,我使用了html data-display-if
条件:
<div align="center" data-display-if="output.Unpaid==True">
...
</div>
一切正常!
这也很好,因为它允许您将条件绑定到有光泽的output
对象vs input
对象,这有时可以更容易使用。
进一步测试后更新
事实证明我的编辑不太有用;在Stripe Checkout JS加载后,它阻止我的Shiny App与页面上的其他JS元素交互。
似乎与Stripe JS和内部Shiny JS存在一些冲突......
新更新
Shiny(0.9.1)的最新版本解决了这个问题。 它似乎是js head和singletons的东西,已在最新版本中更新过。
这不再是问题, 你现在可以直接使用Stripe闪亮了。
答案 1 :(得分:0)
好的,这在评论中也不起作用(本周评论中的代码运气不好)。您是否尝试将其包含在明确的tags$script
电话中?
tags$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")
构建整个表单以查看它是否有帮助可能是有利的。