2017-05-05 13 views
0

rails 4.2.6 ruby 2.3.1NoMethodError:未定義のメソッド `REFUND_REQUEST」#のための<ペイパル:: SDK :: REST ::データ型::支払>

私は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方法にどんなのparamsを追加していません。テスト目的のために、私はamountを追加しましたが、それでも同じエラーが発生しました。

https://github.com/paypal/PayPal-Ruby-SDK/blob/master/samples/sale/refund.rb

答えて

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 
+0

ありがとうございましたが、私は実際に 'Payment.refund_successful?(transaction_id)'のようなメソッドを呼び出しています。すべて正常に動作し、PayPal支払いobjは 'payment = Payment.find(payment_id)'で作成されます。この問題は、 'refund_request'が呼び出されたときに発生します。 – rebbailey