【问题标题】:Activemerchant Paypal Recurring Payment Error on PaypalExpressGatewayPaypalExpressGateway 上的 Activemerchant Paypal 经常性付款错误
【发布时间】:2013-07-18 13:03:16
【问题描述】:

环境:
红宝石 1.9.2
导轨 3.2.8
gem 'ActiveMerchant' 1.34.1

我想为自动续订选项使用 Paypal 定期付款选项。

为此,我使用贝宝支付选项,该选项进入贝宝网站,允许用户登录并确认支付,然后进行处理。

正常付款(不是定期付款)工作正常。 对于正常付款,我使用:

在课堂上:

ActiveMerchant::Billing::Base.mode = :test

@@paypal_express_gateway = ActiveMerchant::Billing::PaypalExpressGateway.new(
    :login => 'my_login_id@domail.com',
    :password => 'password',
    :signature => 'Signature'
)

express_checkout 方法中:

setup_response = @@paypal_express_gateway.setup_purchase(@@amount,
      :ip                => request.remote_ip,
      :return_url        => url_for(:action => 'confirm', :only_path => false),
      :cancel_return_url => url_for(:action => 'new', :only_path => false)
)
redirect_to @@paypal_express_gateway.redirect_url_for(setup_response.token)

confirm 方法中:

details_response = @@paypal_express_gateway.details_for(params[:token])

然后details_response返回成功方法truefalse。我将它发送到完成或错误页面。 这是我想要的定期付款


对于使用 PaypalExpressCheckout 进行定期付款,我使用了以下方法:

在课堂上:

ActiveMerchant::Billing::Base.mode = :test

@@paypal_express_gateway = ActiveMerchant::Billing::PaypalExpressGateway.new(
    :login => 'my_login_id@domail.com',
    :password => 'password',
    :signature => 'Signature'
)

express_checkout方法中:

setup_response = @@paypal_express_gateway.setup_purchase(@@amount, <br>
    :ip                => request.remote_ip, <br>
    :return_url        => url_for(:action => 'confirm', :only_path => false),
    :cancel_return_url => url_for(:action => 'new', :only_path => false)
)
redirect_to @@paypal_express_gateway.redirect_url_for(setup_response.token)

confirm 方法中:

details_response = @@paypal_express_gateway.recurring(@@amount, "", options = {
    :token => params[:token],
    :period => "Month",
    :frequency => 3,
    :start_date => Time.now,
    :description => "Checking recurring auto-renewal"
})

现在我收到错误undefined method "add_credit_card" for #&lt;ActiveMerchant::Billing::PaypalExpressGateway:0x00000006c831a0&gt;

循环方法定义为Here (Active Merchant),它将返回profile_id

所以我想使用 PaypalExpressGateway(不是 PaypalGateway)进行定期付款,因为付款是在 Paypal 网站上完成的,因此开发人员无法将信用卡详细信息发送到定期付款方式。

那么为什么在 PaypalExpressGateway 的情况下使用 credit_card 参数。 recurring 方法调用的方法“build_create_profile_request(options)”不应检查 credit_card,因为我没有在选项中传递任何参数 'credit_card'。(请参见给定 link 中的第 127 行)

请检查代码,让我知道我错在哪里。 如果有人可以提供我准备好的代码,那么它会更有用。

我尝试了很多博客和解决方案,但都没有成功。 请尽快给我解决方案。

【问题讨论】:

    标签: ruby-on-rails paypal payment-gateway activemerchant recurring-billing


    【解决方案1】:

    我使用 ActiveMerchant 进行定期 PayPal 付款。您需要将nil 而不是空字符串作为第二个参数(这是代表信用卡对象的某种对象,但我不认为是为ActiveMerchant 的PayPal Express Checkout 集成实现的)传递给recurring 方法。

    details_response = @@paypal_express_gateway.recurring(@@amount, nil, { 
      :token => params[:token], 
      :period => "Month", 
      :frequency => 3, 
      :start_date => Time.now, 
      :description => "Checking recurring auto-renewal" 
    }) 
    

    【讨论】:

    • 感谢@Tim....我通过传递 nil 而不是空白字符串来做到这一点。对不起,我忘了回答这个忙调度的原因。
    猜你喜欢
    • 2012-06-09
    • 2015-10-20
    • 2010-10-23
    • 2013-09-20
    • 2015-07-15
    • 2018-04-12
    • 2014-07-15
    • 2013-10-29
    • 2011-04-02
    相关资源
    最近更新 更多