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

时间:2014-06-12 23:42:18

标签: ruby-on-rails delayed-job

目前,我通过支付网关处理信用卡付款。我的应用程序使用Rails,在heroku上使用独角兽托管。

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

为了解决这个问题,我想使用DelayedJob,我已经用它来处理交易作为后台流程。

然而,有一个问题是,延迟的工作将工作存储在表格中,因此信用卡信息将以未加密的方式临时存储。

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

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

由于

2 个答案:

答案 0 :(得分:0)

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

在此设置中,您不会将信用卡信息存储在数据库中,也不会担心加密/解密数据。有关在Heroku上的后台线程中进行处理的更多信息,请参阅https://www.agileplannerapp.com/blog/building-agile-planner/rails-background-jobs-in-threads

答案 1 :(得分:0)

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

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

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