После того, как пользователь зарегистрировал учетную запись, он автоматически входит в систему.
Затем у них есть возможность «Активировать свою учетную запись», чтобы разблокировать функции приложения. Активация учетной записи приводит их к шлюзу Paypal. После успешного завершения платежа они перенаправляются обратно на страницу счета. Однако на странице счета-фактуры нет текущего сеанса пользователя. Любые идеи о том, что я делаю неправильно? код ниже
Я использую devise для управления аутентификацией.
Вот модель пользователя
class User < ActiveRecord::Base
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable and :omniauthable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
validates :first_name, :last_name, :email, :password, presence: true
serialize :notification_params, Hash
def paypal_url(return_path)
values = {
business: "[email protected]",
cmd: "_xclick",
upload: 1,
return: "#{Rails.application.secrets.app_host}#{return_path}",
invoice: id,
amount: 20,
item_name: "Online Store",
item_number: 1,
quantity: '1',
notify_url: "#{Rails.application.secrets.app_host}/hook"
}
"#{Rails.application.secrets.paypal_host}/cgi-bin/webscr?" + values.to_query
end
end
Вот мои маршруты:
Rails.application.routes.draw do
devise_for :users #, :controllers => {:registrations => 'memberships'}
root 'pages#dashboard'
get 'home' => 'pages#dashboard'
devise_scope :user do
post 'invoice' => "memberships#show"
post 'hook' => "memberships#hook"
end
Вот контроллер, управляющий платежом/вебхуком
class MembershipsController < ApplicationController
def show
@user = current_user
end
protect_from_forgery except: [:hook]
def hook
params.permit! # Permit all Paypal input params
status = params[:payment_status]
if status == "Completed"
@user = User.find params[:invoice]
@user.update_attributes notification_params: params, status: status, transaction_id: params[:txn_id], purchased_at: Time.now
end
render nothing: true
end
end
Вот страница показа сообщения о счете, имейте в виду, что она была упрощена для тестирования:
%section#course-content
%section#ruby
%section.detailed-syllabus
.wrapper-inside
%h3.title Course invoice
.columns.clearfix
.left{style: "padding-left:100px;"}
%p#notice= notice
%p
- if user_signed_in?
%strong Email:
= current_user.first_name
- else
%strong Invalid User Session
Дайте мне знать, если есть что-то еще, что вам нужно увидеть. Спасибо