Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 安全处理延迟工作的信用卡_Ruby On Rails_Delayed Job - Fatal编程技术网

Ruby on rails 安全处理延迟工作的信用卡

Ruby on rails 安全处理延迟工作的信用卡,ruby-on-rails,delayed-job,Ruby On Rails,Delayed Job,目前我正在通过支付网关处理信用卡支付。我的应用程序使用Rails,与unicorn一起托管在heroku上 但是,unicorn进程将在30秒后超时,因此,如果网关事务由于任何原因未及时完成,请求将失败,从而导致用户出现应用程序错误和部分完成的事务 为了克服这个问题,我想使用DelayedJob,我已经使用它作为后台进程来处理事务 然而,我想到的一个问题是,延迟的作业将作业存储在一个表中,因此信用卡信息将临时未加密存储 我如何克服这个问题?或者有没有更好的解决方案使用延迟作业 我可以在使用延迟作

目前我正在通过支付网关处理信用卡支付。我的应用程序使用Rails,与unicorn一起托管在heroku上

但是,unicorn进程将在30秒后超时,因此,如果网关事务由于任何原因未及时完成,请求将失败,从而导致用户出现应用程序错误和部分完成的事务

为了克服这个问题,我想使用DelayedJob,我已经使用它作为后台进程来处理事务

然而,我想到的一个问题是,延迟的作业将作业存储在一个表中,因此信用卡信息将临时未加密存储

我如何克服这个问题?或者有没有更好的解决方案使用延迟作业

我可以在使用延迟作业之前先加密信用卡详细信息,然后在处理之前进行延迟作业加密吗?尽管我不确定这是否符合PCI标准


谢谢

您可以将请求发送到新线程中的处理器,然后在返回时存储结果。这样,无论处理器的行为如何,请求都可以快速完成。启动线程的页面可以简单地说“正在处理”,并通过ajax强制页面重新加载或定期检查,直到处理器返回并存储结果


在此设置中,您没有将信用卡信息存储在数据库中,也没有担心数据的加密/解密。有关Heroku上后台线程处理的更多信息,请参阅。

一些支付网关(如Braintree)提供透明的重定向功能,以缓解PCI遵从性问题。使用透明重定向时,信用卡信息将直接提交到支付网关,并且支付网关返回一个支付令牌,您的应用程序可以使用该令牌对该信用卡进行授权和收费

在此设置中,客户信用卡数据甚至从未通过rails服务器,这意味着您不必担心信用卡信息表单参数可能存储在web服务器或应用程序日志文件中


如果您要切换到使用支付网关的透明重定向,则可以将返回的支付令牌存储在延迟的作业信息中,从而大大减少PCI合规性问题。

。那么,新线程是否真的在heroku worker或web dyno中运行?这将在heroku web dyno上运行。当您使用块调用Thread.new时,它将分离并开始在单独的线程中执行该逻辑。原始线程此时会继续处理该请求,因为它不会被新线程的操作阻止。在提供的链接中,他们展示了如何使用此方法从Heroku上的web dyno发送电子邮件。您可以简单地重构他们的示例以调用支付处理器。请注意在线程结束之前发出的ActiveRecord::Base.connection.close调用。如果它只是在web dyno中启动一个新线程,那么这个新线程是否也不受unicorn 30秒超时的限制。这会让用户体验更好,但无法解决有时很长的支付网关处理时间。新线程不必担心超时。对应用程序的请求有30秒的超时(请参阅)。使用此设置,当线程(由请求生成)运行直到完成时,您的请求应快速返回。也就是说,dyno将在1小时不活动后自动进入睡眠状态。请看:透明重定向功能听起来非常好。不幸的是,我无法更改支付网关。你确实回答了我的一个问题