繁体   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