2012-09-30 15 views
7

का उपयोग करके पेपैल आईपीएन कॉलबैक को संभालना मैं एक रेल ऐप में पुनरावर्ती भुगतान को संभालने के लिए paypal-recurring gem का उपयोग कर रहा हूं। मेरा अधिकांश कोड इस उत्कृष्ट Railscast से है, लेकिन मैं आईपीएन कॉलबैक स्वीकार करने और किसी प्रासंगिक डेटा को स्टोर करने के लिए भुगतान_ नोटिफिकेशन मॉडल भी जोड़ना चाहता हूं। यह Railscast नोटिफिकेशन सेट अप करने के तरीके पर चला जाता है। हालांकि, मुझे अपने भुगतान नॉटिफिकेशन मॉडल में पेपैल-आवर्ती मणि आईपीएन कॉलबैक भेजने का तरीका समझने में कठिनाई हो रही है।रेल - पेपैल-आवर्ती मणि

मैं अपने भुगतान नॉटिफिकेशन मॉडल में आईपीएन कॉलबैक को सही तरीके से लिखने के लिए ipn_url कैसे सेट कर सकता हूं। अब तक मैंने कोशिश की है:

1) विकल्प) या payment_notifications_url

2) समाधान की कोशिश कर के तहत प्रक्रिया विधि को ipn_url: "http://my-app-name.com/payment_notifications" जोड़ा जा रहा है (यह GitHub issue page

3) का उपयोग करते हुए Paypal की झटपट के तल पर सुझाव "Http://my-app-name.com/payment_notifications" को भेजने के लिए भुगतान अधिसूचना (आईपीएन) सिम्युलेटर, लेकिन मुझे एक त्रुटि मिलती है: आईपीएन वितरण विफल। HTTP त्रुटि कोड 401: अनधिकृत

संपादित

मैं सफलतापूर्वक मेरी payments_notifications_url को IPN के वितरण अनुकरण कर पाए हैं। अब मुझे यह पता लगाने की जरूरत है कि आवर्ती मणि को आईपीएन भेजने के लिए कैसे इंगित करें।

किसी भी पॉइंटर्स की सराहना की जाएगी। नीचे मेरे कुछ वर्तमान कोड है। अगर मैं किसी भी प्रासंगिक भागों को भूल रहा हूं, तो कृपया मुझे बताएं।

PaypalPayment मॉडल

class PaypalPayment 
    def initialize(subscription) 
    @subscription = subscription 
    end 

    def checkout_details 
    process :checkout_details 
    end 

    def checkout_url(options) 
    process(:checkout, options).checkout_url 
    end 

    def make_recurring 
    process :request_payment 
    process :create_recurring_profile, period: :monthly, frequency: 1, start_at: Time.zone.now 
    end 

    def cancel_recurring 
    process :cancel 
    end 

private 

    def process(action, options = {}) 
    options = options.reverse_merge(
     token: @subscription.paypal_payment_token, 
     payer_id: @subscription.paypal_customer_token, 
     description: @subscription.plan.name, 
     amount: @subscription.plan.monthly_price, 
     currency: "JPY" 
    ) 
    response = PayPal::Recurring.new(options).send(action) 
    raise response.errors.inspect if response.errors.present? 
    response 
    end 
end 

PaymentNotifications नियंत्रक

class PaymentNotificationsController < ApplicationController 
    protect_from_forgery :except => [:create] 

    def create 
    PaymentNotification.create!(:params => params, :status => params[:payment_status], :transaction_id => params[:txn_id]) 
    render :nothing => true 
    end 
end 
+0

क्या आप कृपया मेरी मदद कर सकते हैं, मैं पेपैल सदस्यता को रद्द करने के तरीके पर थोड़ा उलझन में हूं। http://stackoverflow.com/questions/21372793/link-to-paypal-to-cancel-paypal-recurring-rails –

उत्तर

5

मैं काम कर रहा समझ में आ गया।

1) मेरी सदस्यता नियंत्रक में मैं if @subscription.save बजाय if @subscription.save_with_payment तो save_with_payment विधि वास्तव में भी बुलाया जा रहा है कभी नहीं किया गया था बुला गया था: में भविष्य में मामला किसी को भी पेपैल IPN के साथ मुसीबत में चलाता है, यहाँ कुछ चीजें मैं गलत था कर रहे हैं।

2) प्रक्रिया विधि में मैं ipn_url: "https://my-app-name.com/payment_notifications",

def process(action, options = {}) 
    options = options.reverse_merge(
     token: @subscription.paypal_payment_token, 
     payer_id: @subscription.paypal_customer_token, 
     description: @subscription.plan.name, 
     amount: @subscription.plan.monthly_price, 
     ipn_url: "https://my-app-name.com/payment_notifications", 
     currency: "JPY" 
    ) 
    response = PayPal::Recurring.new(options).send(action) 
    raise response.errors.inspect if response.errors.present? 
    response 
    end 

3) जोड़ा पेपल के डेवलपर सैंडबॉक्स में, पर 'परीक्षण खातों' पर क्लिक करें और फिर पर क्लिक करें नारंगी बटन 'सैंडबॉक्स परीक्षण स्थल दर्ज करें'। एक बार वहां, अपने सैंडबॉक्स विक्रेता प्रमाण-पत्रों के साथ लॉग इन करें। एक बार 'मेरा खाता' और 'प्रोफ़ाइल' पर जाएं और 'बेचना प्राथमिकताएं' के अंतर्गत 'त्वरित भुगतान अधिसूचना प्राथमिकताएं' पर क्लिक करें। आईपीएन पोस्ट प्राप्त करने के लिए सेट अप यूआरएल से मेल खाने के लिए अपनी अधिसूचना यूआरएल सेट करें और सक्षम करने के लिए संदेश वितरण सेट करें।

संबंधित मुद्दे