8

我正在开发一个移动售票应用程序。该系统允许用户使用 3rd 方 api (CardIO) 支付物品,将所有信息保存到我愉快地坐在云端的服务器上。

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

您会看到,用户可以手动跟踪我的 api 调用,登录到他们的帐户,然后将命令发送到我的服务器以将购买标记为已付款,而无需支付该项目的费用。

所以问题是: 我如何验证付款是否发生在我的服务器上,或者通过某种握手或移动应用程序加密?

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

感谢您的关注!

斯蒂芬

4

2 回答 2

6

简短的回答是你不能信任客户,期间。随心所欲地破解它——这不是构建交易信息的方法。

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

于 2012-07-01T21:23:12.793 回答
0

手机应该扫描信用卡信息并将其发送到您的服务器,服务器应该是执行付款过程的服务器

于 2012-07-01T21:15:10.043 回答