2010-11-11 13 views
5

ActiveMerchant'ı raylar uygulamasına entegre etmeye çalışıyorum. Abone olursam, kullanıcı erişimini sınırlar. Hepinizin, abonelik tabanlı bir uygulamanın ne olduğunu bildiğinden, uygulamamı açıklamayacağım. Bunun gerçekleşmesi için bana bazı örnekler öner. Railscasts bölümlerini 141'den 146'ya kadar görmüştüm ama Ryan sadece Paypal Web Payments Standard ve Paypal Web Payments Pro'yu gösterdi. Ayrıca bir sürü blog okudum ama yardımcı olmadı.ActiveMerchant Abonelik Tabanlı işlemi destekliyor

Lütfen

Yardım edin.

Teşekkürler.

+0

İlgili mesajlar sizin için yararlı olabilir. http://stackoverflow.com/questions/1683929/paypal-recurring-billing-and-activemerchant –

cevap

0

Etkin satıcı, bazı ağ geçitleri için yinelenen ödemeleri destekler (https://github.com/Shopify/active_merchant/wiki/GatewayFeatureMatrix).

Her birinin biraz farklı bir sözdizimi vardır (https://github.com/Shopify/active_merchant/blob/master/lib/active_merchant/billing/gateways/authorize_net_cim.rb) ancak ne istediğinizi başarabilir.

Bununla birlikte, ödeme ağ geçidinizi seçmenizi ve bunun için belirli bir APi kullanmanız önerilir. AM (deneyimimden) biraz geride kalıyor ve yinelenen ödemeler birincil hedef değil.

Ayrıca, tüm ağ geçidi etkileşimini sizin için halledecek hizmetler de var ve yalnızca API ile ilgileniyorsunuz. Ödemeyi kabul etmeyi ve üçüncü tarafın barındırdığı ödeme sayfalarında Pci DSS gereksinimlerini ele almayı kolaylaştırır.

+0

Paypal'ı bir Ağ Geçidi olarak kullanmak istiyorum, ayrıca Paypal'ın işlemi ele almasını istiyorum, yani eğer kullanıcı abone ol düğmesini tıklarsa Paypal'ın sitesine ve tüm işlemlere devam edilir ve başarılı olursa siteme bir IPN gönderilir ve işlem tamamlandıktan sonra kullanıcı siteme geri döner (bence bu bir şekilde Paypal Web Payments Standard gibi). Bu mümkün mü – Rohit

+0

Bu AM, onun ödeme web sitesi dışında ele alınabilir. –

+0

Ama ben Paypal kullanarak yapmak istiyorum. Mümkün olan bir şey önerebilir misiniz? – Rohit

9

Hiç geç olmamasından iyidir, ha?

ActiveMerchant'ın asıl ana birimi, hem PaypalGateway hem de PaypalExpressGateway öğelerine entegre edilen yinelenen bir sınıf içerir.

İşte çalışan bir tanıtım snippet'i.

  • Hemen bakılmaksızın :initial_amount ayar herhangi bir fiyat göstermez faturalandırma anlaşması ayarı: Sadece bir kaç nokta (ben onları anladım en kısa sürede cevap güncellenir), hakkında emin değilim. Bir Öğe dahil, öğenin fiyatını billing_agreement[:description]'un üzerinde gösterecektir. Bu yüzden bu durumun nasıl etkilediğini bilmiyorum, ki bu günlerde test ettiğim şey.
  • IPN bildirimleri. Aşağıdaki snippet'te eksikler.

    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 
    

Sen işlenmiş ve xml isteğinin hangi yerde hangi seçenekler görmek için PaypalRecurringAPI ve PaypalExpressGateway/ PayPalGateway içine bir göz atmak istiyorum ... Aşağıdaki güncelleyin.

düzenleme Paypal ve yinelenen faturalandırma ile ilgili daha yeni, gözden geçirilmiş kayıtlar ayrı bir paypal-recurring gem ile yapılır. Belki de ActiveMerchant ile çalışmasını sağlayamazsanız bu yardımcı olur.

+0

[Buna göre] (https://github.com/activemerchant/active_merchant/issues/1584), ActiveMerchant v2'de yinelenen ödeme desteğini bırakırlar –