gpt4 book ai didi

ruby-on-rails - ActiveMerchant 是否支持基于订阅的交易

转载 作者:数据小太阳 更新时间:2023-10-29 07:13:10 24 4
gpt4 key购买 nike

我正在尝试将 ActiveMerchant 集成到我的 Rails 应用程序中。我有某些计划,如果订阅则限制用户访问。因为你们所有人可能都知道什么是基于订阅的应用程序,所以我不打算解释我的应用程序。请给我一些实现这一目标的例子。我已经看过 railscasts 第 141 到 146 集,但 Ryan 只演示了 Paypal Web Payments Standard 和 Paypal Web Payments Pro。我也阅读了很多博客,但没有帮助。

请帮忙。

提前致谢。

最佳答案

迟到总比不到好吧?

ActiveMerchant 的实际主分支包含一个集成到 PaypalGatewayPaypalExpressGateway 中的循环类。

这是一个有效的演示片段。我只是不确定有几点(我会在弄清楚后立即更新答案),它们是:

  • 无论设置:initial_amount,仅设置结算协议(protocol)不会显示任何价格。包含项目将在 billing_agreement[:description] 上方显示该项目的价格。所以我不确定这会如何影响捕获,这是我最近正在测试的内容。
  • IPN 通知。以下代码段中缺少它们。更新如下...

    class PaymentsController < ApplicationController
    include ActiveMerchant::Billing


    # GET /subscriptions/:id/checkout
    def checkout
    payment_request = PAYPAL_EXPRESS_GATEWAY.setup_purchase(@subscription.price_in_cents,
    :billing_agreement => {
    :type => 'RecurringPayments',
    :description => 'Subscription agreement',
    },

    :currency => 'CHF',
    :no_shipping => true,
    :allow_guest_checkout => true,
    :allow_note => false,
    :initial_amount => @subscription.price_in_cents,
    :locale => 'de',
    :ip => request.remote_ip,
    :return_url => url_for(:action => :confirm, :only_path => false),
    :cancel_return_url => url_for(:action => :cancel, :only_path => false),
    # Looks like :notify_url is not used here, but in the next section
    )

    if payment_request.success?
    redirect_to PAYPAL_EXPRESS_GATEWAY.redirect_url_for(payment_request.token)
    else
    # Render something informal
    render :text => payment_request.inspect.to_s and return
    end
    end

    # POST /subscriptions/:id/confirm
    # params having token and PayerID
    def confirm
    profile = PAYPAL_EXPRESS_GATEWAY.recurring(@subscription.price_in_cents, nil,
    :description => 'Subscription agreement',
    :start_date => Date.tomorrow, # PayPal throws an error if the date is not in the future
    :period => 'Year',
    :frequency => 1,
    :amount => @subscription.price_in_cents,
    :currency => 'CHF',
    :initial_amount => @subscription.price_in_cents,
    :auto_bill_outstanding => true,

    :token => params[:token]
    )

    # profile has profile_id and profile_status. remember status because this gets updated via IPN.
    @debug = {:params => params.inspect.to_s, :profile => profile.inspect.to_s }

    # Render something informal
    render :text => @debug.to_s and return
    end


    # implement instead of just log
    def notification
    log = Logger.new 'log/ipn.log'
    log.debug params.inspect
    render :text => params.inspect.to_s and return
    end


    # Private methods omitted

    end

您想查看PaypalRecurringAPIPaypalExpressGateway/PayPalGateway查看处理了哪些选项以及在 xml 请求的哪个位置。

编辑 关于 paypal 和经常性计费的更新、修订的截屏视频是通过单独的 paypal-recurring 完成的。 gem 。如果您不能让它与 ActiveMerchant 一起使用,这可能会有所帮助。

关于ruby-on-rails - ActiveMerchant 是否支持基于订阅的交易,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4154302/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com