php - 如果您无法从云端验证付款,您如何安全地将订单保存在云端?

标签 php android web-services security design-patterns

我正在开发一款移动售票应用。该系统允许用户使用第 3 方 api (CardIO) 为项目付款,将所有信息保存到我的服务器,愉快地坐在云端。

问题归结为: 因为 (1) 支付过程完全发生在手机上,并且 (2) 没有 API 允许我的服务器向支付处理器验证支付是否实际发生,所以我想知道如何最好地验证在我服务器上的数据库中将其标记为已付款之前,用户确实已经为该项目付款。

您知道,用户可以手动跟踪我的 API 调用,登录到他们的帐户,然后将命令发送到我的服务器以将购买标记为已付款,而无需为商品付款。

那么问题是: 我如何验证付款是在我的服务器上进行的,还是通过与移动应用程序的某种握手或加密进行的?

我目前的做法: 我正在通过 SSL (HTTPS) 调用向服务器发送所需的明文信息。与此同时,我发送了该字符串的哈希值,并在我的服务器上使用相同的算法验证发送的字符串是否与发送的哈希值匹配。我的想法是,然后我可以使用某种 secret key 来生成这个哈希值,然后验证纯文本是否与服务器端的哈希值匹配,以确保没有任何变化。我对这个解决方案的问题是,我不认为它真的那么安全......有人可以很容易地破解算法,因为他们得到了加密和纯文本。

感谢您的关注!

斯蒂芬

最佳答案

简短的回答是您不能信任客户,就是这样。随心所欲地修改它——这不是构建交易信息的方法。

如果您的支付处理器没有您可以依赖的 API,那么您需要一个更好的 API...它可以立即解决您的问题并为将来着想。

关于php - 如果您无法从云端验证付款,您如何安全地将订单保存在云端?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11255702/

相关文章:

android - 如何使用适用于 Android 的 Adob​​e AIR 设置 Admob

android - Flutter:PlatformException(错误,无法找到包含 <path> 的已配置根目录,null)

php - Magento 管理端自定义

php - 在多对多关系中应用 doctrine sql filter

java - 在 toast 上显示整数

c - 如何获取 SPNEGO/Kerberos session key - 并实现 HTTP 身份验证 :Negotiate on my own client

java - 基于 Apache CXF 的应用程序中的长期对象

web-services - 使用 WSRequest 发布 JSON 对象时出现问题

php - 不能使用 CodeIgniter 的 LIKE()

php - Twig - 如何检查变量是否为数字/整数