【发布时间】:2011-04-12 15:34:16
【问题描述】:
我正在我的应用中实现支付网关。
就像这样:
用户在表单中填写必要的详细信息以及包含return_url(say @987654321@_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}) 时,rails 不会从会话中选择 @fdPaymentDets 对象并将其设置为 nil,从而导致从 nil 访问数据时出错目的。
令人惊讶的是,当我在浏览器中手动输入相同的return_url 时,会话数据被巧妙地挑选出来,一切顺利。
这里有什么遗漏吗?明显的原因可能是什么? 任何帮助表示赞赏。
【问题讨论】:
-
我观察到了同样的问题,希望我的问题或你的问题得到答案,这是非常严肃的事情。
标签: ruby-on-rails