我是Stripe Connect的新手,使用stripe Connect独立构建市场应用程序,并要求用户输入自定义金额以支付其他用户。我使用的旧表单运行良好,但一旦我更改为新表单,我的:source=
无效的源对象:必须是字典或非空字符串
我原来的charges_controller.rb
class ChargesController < ApplicationController
def new
end
def create
# Amount in cents
@amount = 500
customer = Stripe::Customer.create(
:email => params[:stripeEmail],
:source => params[:stripeToken]
)
charge = Stripe::Charge.create(
:customer => customer.id,
:amount => @amount,
:description => 'Wage Payment',
:currency => 'cad'
)
rescue Stripe::CardError => e
flash[:error] = e.message
redirect_to new_charge_path
end
end
然后我从条带配方中添加了自定义数量的方法:
def create
@amount = params[:amount]
@amount = @amount.gsub('$', '').gsub(',', '')
begin
@amount = Float(@amount).round(2)
rescue
flash[:error] = 'Charge not completed. Please enter a valid amount in CAD ($).'
redirect_to new_charge_path
return
end
@amount = (@amount * 100).to_i # Must be an integer!
if @amount < 500
flash[:error] = 'Charge not completed. Payment amount must be at least $5.'
redirect_to new_charge_path
return
end
charge = Stripe::Charge.create(
:amount => @amount,
:customer => customer.id,
:currency => 'cad',
:source => params[:stripeToken],
:description => ‘Payment'
)
customer = Stripe::Customer.create(
:email => params[:stripeEmail],
:source => params[:stripeToken]
)
rescue Stripe::CardError => e
flash[:error] = e.message
redirect_to new_charge_path
end
我还修改了表单,并在收费/new.html.erb中添加了javascript:
旧形式:
<script type="text/javascript" src="https://js.stripe.com/v2/"></script>
<script type="text/javascript">
Stripe.setPublishableKey('pk_test_my_key');
</script>
<%= form_tag charges_path do %>
<article>
<% if flash[:error].present? %>
<div id="error_explanation">
<p><%= flash[:error] %></p>
</div>
<% end %>
<label class="amount">
<span>Amount: $5.00</span>
</label>
</article>
<script src="https://checkout.stripe.com/checkout.js" class="stripe-button"
data-key="<%= Rails.configuration.stripe[:publishable_key] %>"
data-description="A month's subscription"
data-amount="500"
data-locale="auto"></script>
<% end %>
新表单:
<%= form_tag charges_path, id: 'form' do %>
<div id="error_explanation">
<% if flash[:error].present? %>
<p><%= flash[:error] %></p>
<% end %>
</div>
<article>
<%= label_tag(:amount, 'Payment Amount:') %>
<%= text_field_tag(:amount) %>
</article>
<article>
<%= hidden_field_tag(:stripeToken) %>
<%= hidden_field_tag(:stripeEmail) %>
</article>
<button id='donateButton'>Pay Now</button>
<% end %>
<script src="https://checkout.stripe.com/checkout.js"></script>
<script type="text/javascript">
Stripe.setPublishableKey('pk_test_CcUZ1IJxEqLR5RvVE3p5tx3U');
</script>
<script>
var handler = StripeCheckout.configure({
key: '<%= Rails.configuration.stripe[:publishable_key] %>',
locale: 'auto',
name: 'Payments',
description: 'Wage',
token: function(token) {
$('input#stripeToken').val(token.id);
$('input#stripeEmail').val(token.id);
$('form').submit();
}
});
$('#donateButton').on('click', function(e) {
e.preventDefault();
$('#error_explanation').html('');
var amount = $('input#amount').val();
amount = amount.replace(/\$/g, '').replace(/\,/g, '')
amount = parseFloat(amount);
if (isNaN(amount)) {
$('#error_explanation').html('<p>Please enter a valid amount in CAD ($).</p>');
}
else if (amount < 5.00) {
$('#error_explanation').html('<p>Wage amount must be at least $5.</p>');
}
else {
amount = amount * 100; // Needs to be an integer!
handler.open({
amount: Math.round(amount)
})
}
});
// Close Checkout on page navigation
$(window).on('popstate', function() {
handler.close();
});
</script>
现在,当我提交自定义金额时,我得到了以下错误:
您为“源”传递了一个空字符串。您应该从请求中删除“source”参数,或者提供一个非空值
提取的源(在第27行周围):Stripe::Charge.create(
不知道如何进行。此错误似乎与创建费用有关,因为错误在费用控制器中。或者是在新定制表单的javascript中。
我错过了什么?
我也遇到过类似的问题。但是经过几个小时的斗争,我想通了。原因如下。如果您使用Rails 4。并同时使用Turbolink,那么它会为该页面加载整个javascript,当您加载modal时,该modal页面上的javascript将无法工作。您必须关闭turbolink。
对我来说,我关闭了链接级别,这是负责加载收费/新页面的链接。示例:<代码>
null 因此,具有外部依赖关系的作业可以正常工作,但是UDF会产生上面的错误。我还试图将我的应用程序jar(其中包含驱动程序和spring代码以及worker中已经存在的所有其他依赖项)添加到worker中的dependencies文件夹中,但仍然会产生错误。还试图将其放置在worker中与驱动程序相同的位置,并使用“spark.jars”将其位置添加到sparkConf,但没有成功。有什么建议
创建验证 任何时候,都可以直接使用think\Validate类而不需要定义验证器类进行独立的验证操作,例如: $validate = Validate::make([ 'name' => 'require|max:25', 'email' => 'email' ]); $data = [ 'name' => 'thinkphp', 'email' => 't
问题内容: 我正在使用gulp + browserify来构建和打包我的JavaScript库。现在有一件事困扰着我:我正在运行一个带有livereload的简单服务器,以通过gulp进行开发。这可以正常工作,但是每当我的JavaScript包含语法错误时,browserify都会引发错误,导致服务器停止。 我使用的browserify代码(请注意,我已经添加了一个错误处理程序): 现在出现了有趣
我正在尝试在Anaconda中导入pyspark并运行示例代码。然而,每当我尝试在Anaconda中运行代码时,我都会得到以下错误消息。 错误:py4j.java_gateway:尝试连接到Java服务器时出错(127.0.0.1:53294)追溯(最近一次调用):文件“C:\spark\python\lib\py4j-0.10.3-src.zip\py4j\java_gateway.py”,第1
我正在尝试从kafka中的主题将数据插入postgres数据库。我正在使用以下命令加载 sink-quick start-MySQL . properties如下 我得到的错误是 Postgres jar文件已经在文件夹中。有人能提出建议吗?
我正在使用CCDT文件连接到队列。