我在我的应用程序中实现支付网关。 其如下所示: 用户填写表单所需的详细信息以及包含return_url(say http://myapp.com/ebs _payment/ebs_response?dr={somedata})
的字段,然后将表单提交给安全的付款网站。交易完成后,安全站点将一些加密数据放入我的参数{dr}中,并且用户被重定向回到返回URL。这里的问题是,当用户返回到带有return_url
的应用程序时,应用程序无法获取会话数据并返回nil
值。导轨不采摘会话数据
在提交表单之前,我将对象@fdPaymentDets
放入会话中。
这里是我的控制器:
class EbsPaymentController < ApplicationController
#before_filter :login_required,:check_user_authenticate
#access_control [:ebs_response] => ('user')
def ebs_response
@fdPaymentDets = session["fd_payment_details"]
@deal = Deal.find(@fdPaymentDets.deal_id)
@categories = find_all_categories
end
private
def find_all_categories
@sp = SitePreference.find(:first)
Category.find(:all,:limit => @sp.categories_display_limit,:order => 'position')
end
end
当用户从安全的网站重定向到返回URL (http://myapp.com/ebs_payment/ebs_response?dr={encrypted_data})
,轨道不接从会话@fdPaymentDets
对象,并使其nil
从而导致错误时访问来自nil
对象的数据。
令人惊讶的是,当我手动将相同的return_url
放在我的浏览器中时,会话数据被整齐地挑选出来并且一切都很顺利。
我错过了这里的任何东西吗?可能是什么明显的原因? 任何帮助表示赞赏。
我观察到了同样的问题之前更新的价值,我希望我的问题或你的答案,这是相当严重的东西。 – 2012-06-12 20:43:55