Tôi đang sử dụng paypal-recurring gem để xử lý thanh toán định kỳ trong ứng dụng Rails. Phần lớn mã của tôi là từ số Railscast tuyệt vời này nhưng tôi cũng muốn thêm mô hình payment_notification để chấp nhận cuộc gọi lại IPN và lưu trữ bất kỳ dữ liệu có liên quan nào. Điều này Railscast đi qua làm thế nào để thiết lập thông báo. Tuy nhiên, tôi đang gặp khó khăn trong việc tìm ra cách gửi cuộc gọi lại IPN trả tiền theo định kỳ tới mô hình PaymentNotification của tôi.Rails - xử lý cuộc gọi lại IPN PayPal bằng cách sử dụng đá quý trả tiền theo định kỳ
Làm cách nào tôi có thể đặt: ipn_url để ghi chính xác cuộc gọi lại IPN vào mô hình thanh toán thông báo của tôi. Tôi đã thử các sau đây cho đến nay:
1) Thêm ipn_url: "http://my-app-name.com/payment_notifications"
với phương pháp xử lý (theo lựa chọn) hoặc payment_notifications_url
2) Cố gắng giải pháp gợi ý ở dưới cùng của GitHub issue page
3) Sử dụng tức thì Paypal của này Trình mô phỏng thông báo thanh toán (IPN) để gửi tới "http://my-app-name.com/payment_notifications", nhưng tôi gặp lỗi: Phân phối IPN không thành công. Lỗi HTTP mã 401: Unauthorized
EDIT
tôi đã có thể để mô phỏng thành công việc phân phối các IPN để payments_notifications_url tôi. Bây giờ tôi chỉ cần tìm hiểu làm thế nào để trỏ đá quý định kỳ để gửi ipn đến đó.
Mọi con trỏ sẽ được đánh giá cao. Dưới đây là một số mã hiện tại của tôi. Nếu tôi quên bất kỳ phần nào có liên quan, vui lòng cho tôi biết.
PaypalPayment Mẫu
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 khiển
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
bạn có thể vui lòng giúp tôi ở đây không, tôi hơi bối rối về cách hủy đăng ký paypal. http://stackoverflow.com/questions/21372793/link-to-paypal-to-cancel-paypal-recurring-rails –