PaypalExpressGateway上的Activemerchant Paypal重复付款错误

时间:2013-07-19 09:36:04

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

环境:
Ruby 1.9.2
Rails 3.2.8
gem'ActiveMerchant'1.34.1

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

为此,我使用Paypal支付选项进入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 #<ActiveMerchant::Billing::PaypalExpressGateway:0x00000006c831a0>

定义的重复方法Here (Active Merchant)将返回 profile_id

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

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

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

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

1 个答案:

答案 0 :(得分:3)

我使用ActiveMerchant重复支付PayPal付款。您需要传递nil而不是空字符串作为第二个参数(这是一种表示信用卡对象的对象,但我认为它不是针对ActiveMerchant的PayPal Express Checkout集成实现的){{1方法。

recurring