3

我在Google Play(fmr。Android Market)上放置应用,现在我正在开发应用内结算功能。 Android文档说,您应该通过使用公钥验证交易签名来做到这一点,但我想知道使用Google Checkout API检索订单信息会更容易。像下面这样:使用Google Checkout验证Android应用内购买?

老办法

  1. 的Android客户购买了一些产品的市场
  2. 市场上发出回应电话的随机数,签名的transactionId等
  3. Android手机,或远程服务器验证使用随机数(先前生成)的事务和签名。
  4. 如果交易被验证,购买是有效的,信贷客户与项目。

MY WAY

  1. 的Android客户购买了一些产品在市场上
  2. 市场发出回应电话的随机数,签名的transactionId等
  3. Android手机发送请求到远程服务器的transactionId
  4. 远程服务器向google checkout API发送一个请求,以使用transactionid命令,并验证事务已清除。
  5. 如果交易已被清除,信贷客户与项目

这可能吗?

回答

1

也许吧。尽管Google Checkout API无处不在。如果您有商户密钥,则应该可以使用它,但该密钥不适用于大多数国家/地区。您将需要再联系一台服务器,但听起来它应该起作用。问题是,为什么你还没有尝试过呢?

+0

那么,这两种方法都变成了很多工作。我使用App Engine作为我的远程服务器,它没有简单的方法来验证公钥使用的签名(m2crypto不在AE上运行,pyCrypto有问题)。 – 2012-04-07 15:43:25

+0

不知道关于生成随机数和验证签名的工作很多。当然连接到谷歌结帐是更多的工作?有一段时间没有使用pyCrypto,但我很确定它可以验证RSA签名。或者你可以用Java做后端。 – 2012-04-07 15:50:31

+0

我不是Android/Play开发者 - Google Checkout API仅适用于通过Google Checkout进行的交易(不是任何其他API/Google产品)。您的商家/卖家ID和密钥对于您的市场/产品API是唯一的(它不会与Google Checkout的“商家ID /密钥”相同。订单号/ ID也会不同...... – EdSF 2012-04-08 03:13:03

1

你的方式似乎很容易欺骗我。对于像结算这样重要的事情,我会采用推荐的方法。它被认为是。

+0

那么,我想到这个原因是因为Facebook的学分以这种方式工作(大部分)。他们如何欺骗交易ID? – 2012-04-07 15:44:29

+0

我怀疑Facebook的人做了非常聪明的事情,他们已经仔细考虑过了,可能会或可能不会在你的方法中。 – StilesCrisis 2012-04-07 19:47:59