rails 4.2.6
ruby 2.3.1
我正在使用Ruby PayPal SDK并已成功创建付款并保存了payment_id。我在尝试退款时收到以下错误。
NoMethodError: undefined method 'refund_request' for #<PayPal::SDK::REST::DataTypes::Payment>
def self.refund_successful?(payment_id)
require 'paypal-sdk-rest'
include PayPal::SDK::REST
include PayPal::SDK::Core::Logging
PayPal::SDK::REST.set_config(
:mode => "sandbox", # "sandbox" or "live"
:client_id => ENV["paypal_client_id"],
:client_secret => ENV["paypal_client_secret"])
payment = Payment.find(payment_id)
refund = payment.refund_request # <= Error occurs here.
refund = payment.refund_request({}) # <= Also tried this.
if refund.success?
return true
else
return false
end
end
我没有在refund_request
方法中添加任何参数,因为退款金额是&#34; Full&#34;金额而不是&#34;部分&#34;。虽然,仅出于测试目的,我添加了amount
并仍然收到相同的错误。
这就是我从PayPal那里得到的:
https://github.com/paypal/PayPal-Ruby-SDK/blob/master/samples/sale/refund.rb
答案 0 :(得分:0)
这是一个班级内的方法吗?如果是这样,请记住,当使用self.method_name
定义方法时,它被视为类常量,不能在实例化类上调用。
例如
class HelloWorld
def self.foo
puts "Hello World!"
end
def bar
puts "Hello World!"
end
end
方法foo
只能按以下方式调用
HelloWorld.foo
方法bar
只能通过首先实例化类然后调用方法来调用。例如,
hello_world = HelloWorld.new
hello_world.bar