2016-02-26 71 views
0

我已經安裝了寶石和GitHub說的事情。我做了一個單獨的模型的指令creating a payment一部分,但我不知道如何調用從我的命令控制器在完成付款。此外,我需要能夠從我的訂單動態地設置付款屬性,但我嘗試了幾種不同的方式試圖實現這一點,沒有運氣。軌道4寶REST API集成

我已經打過電話Payments.pay在我的命令控制器和我得到一個錯誤說的方法工資不存在,但我確實有在支付類中的方法。爲支付類的部分代碼是:

class Payments < PayPal::SDK::REST::Payment 

def pay 
    @payment = Payment.new({ 
     :intent => "sale", 
     :payer => { 
     :payment_method => "credit_card", 
     :funding_instruments => [{ 
      :credit_card => { 
      :type => "visa", 
      :number => "4567516310777851", 
      :expire_month => "11", 
      :expire_year => "2018", 
      :cvv2 => "874", 
      :first_name => order.first_name, # Need to do something similar to this but doesn't work 
      # etc... 
    end 
end 

要總結一下我需要的是幫助我怎樣才能使到另一個控制器或模型調用此方法,因此無法將款項處理,以及如何我可以動態設置字段?

回答

1

我看到一些潛在的問題。

首先,您使用的方法作爲一個類的方法,所以它應該是

高清self.pay 結束

爲了Payments.pay工作。你現在定義它的方式是作爲一個實例方法。

如果你想叫一個控制器,這種方法並傳遞現場動態你需要編輯的工資函數接受的參數。並可能將此類導入到控制器中。

你可能只是想創建一個before_action:在您的控制器之一的,應當回調定義方法/調用SDK寶象下面這樣。這將允許你抓取參數並在方法中使用它們(儘管我不認爲你應該處理CC號碼,但PayPal可能會處理這個並傳遞給你一些你隨後使用的令牌)。也看出來了貝寶的命名空間的圖書館該怎麼走,它可以當你調用寶:: SDK :: REST是棘手等

class PaymentsController < ApplicationController 
    before_action :pay 

    def create 
    @order = Order.find(params[:id]) 
    end 

    private 

    def pay 
    @payment = PayPal::SDK::REST::Payment.new({ 
     :intent => "sale", 
     :payer => { 
     :payment_method => "credit_card", 
     :funding_instruments => [{ 
      :credit_card => { 
      :type => "visa", 
      :number => params[:number], 
      :expire_month => params[:month], 
      :expire_year => params[:year], 
      :cvv2 => params[:cvv], 
      :first_name => @order.first_name, # Need to do something similar to this but doesn't work 
      # etc... 
    end 
    end 
end 
+0

我會嘗試這個工作,一旦我下班後來者居上並通過你說過的一些東西,謝謝! – ayounis90