簡體   English   中英

Rails 4 Paypal REST API集成

[英]Rails 4 Paypal REST API integration

我已經安裝了gem和GitHub所說的。 我已經創建了一個用於創建付款說明的單獨模型,但是不確定如何從我的訂單控制器中調用付款 另外,我還需要能夠從訂單中動態設置“付款”屬性,但是我嘗試了幾種不同的嘗試來實現這一點,但是沒有運氣。

我嘗試在訂單控制器中調用Payments.pay,但出現錯誤,提示不存在方法pay,但在Payments類中確實有該方法。 Payments類的部分代碼為:

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  

總結一下,我需要幫助的是如何在另一個控制器或模型中調用此方法,以便可以處理付款以及如何動態設置字段?

我看到了一些潛在的問題。

首先,您將方法用作類方法,因此應該

def self.pay結束

為了使Payments.pay正常工作。 當前定義它的方式是作為實例方法。

如果要在控制器中調用此方法並動態傳遞字段,則需要編輯pay函數以接受參數。 並可能將此類導入控制器。

您可能只想在其中一個控制器中創建一個before_action:pay回調並定義方法/調用Paypal SDK,如下所示。 這將允許您獲取參數並在方法中使用它們(盡管我不認為您應該處理抄送號碼,但Paypal可能會處理此事並傳遞給您某種您隨后使用的令牌)。 還請注意Paypal命名空間庫的方式,在調用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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM