【问题标题】:Rails 4 Paypal REST API integrationRails 4 Paypal REST API 集成
【发布时间】:2016-02-26 17:41:33
【问题描述】:

我已经安装了 gem,GitHub 说要做。我已经为 creating a payment 部分说明制作了一个单独的模型,但我不确定如何在我的订单控制器中调用付款。此外,我需要能够从我的订单中动态设置付款属性,但我尝试了几种不同的方法来尝试实现这一点,但没有运气。

我尝试在我的订单控制器中调用 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  

总结一下我需要帮助的是如何在另一个控制器或模型中调用此方法以便处理付款以及如何动态设置字段?

【问题讨论】:

    标签: ruby-on-rails ruby ruby-on-rails-4 paypal model


    【解决方案1】:

    我发现了一些潜在问题。

    首先,你将方法作为类方法使用,所以应该是

    def self.pay 结束

    为了让 Payments.pay 正常工作。您当前定义它的方式是作为实例方法。

    如果您想在控制器中调用此方法并动态传入字段,则需要编辑 pay 函数以接受参数。并且可能将此类导入到控制器中。

    您可能只想在其中一个控制器中创建一个 before_action :pay 回调并定义方法/调用 Paypal SDK,如下所示。这将允许您获取参数并在方法中使用它们(尽管我认为您不应该处理 CC 号码,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
    

    【讨论】:

    • 稍后我下班回家后会尝试处理这个问题,并查看您所说的一些内容,谢谢!
    猜你喜欢
    • 2021-02-01
    • 2020-07-01
    • 2021-06-14
    • 2020-12-23
    • 2021-09-04
    • 2021-07-05
    • 2015-02-27
    • 2013-11-11
    • 2013-09-18
    相关资源
    最近更新 更多