当前位置: 首页 > 面试题库 >

如何使用带有Ruby的服务器验证Android应用内结算?

窦志新
2023-03-14
问题内容

我在弄清楚如何用我的Ruby on Rails服务器验证Androind应用内结算购买时遇到麻烦。

http://developer.android.com/guide/market/billing/billing_integrate.html

我认为Android提供了Security.java,它具有某种可以在物理设备上进行验证的方法。从我的研究看来,(1)我需要弄清楚如何在我的Ruby on
Rails服务器上使用此Security.java类,或者(2)我需要将Security.java移植到Ruby。

这样对吗?有人知道验证收据的另一种方法吗?


问题答案:

我只是想通了。

基本上,它的工作方式是,当购买成功时,Android市场会返回一条消息(以JSON格式),其中包含订单详细信息和加密签名。在Security.java类中,验证功能通过使用公共密钥验证签名来确保消息确实确实来自Android市场应用程序。

如果要在混合中使用自己的服务器,只需要将签名和json有效负载传递到服务器,并验证服务器上的json有效负载。如果可以验证json数据来自市场应用程序,则可以使用它来创建服务器端订单对象。然后,您可以响应客户应用程序订单已处理并更新您的UI。

我在应用程序中所做的只是在Security类的verify函数中添加服务器通信内容,以代替现有的verify函数。

真正的窍门是用ruby编写签名验证代码。这是有效的方法:

base64_encoded_public_key是用户配置文件中的密钥sig是传递到Dungeons安全示例中的签名属性,数据是市场发送回的json字符串。

require 'rubygems'
require 'openssl'
require 'base64'

base64_encoded_public_key = "YOUR KEY HERE"
data = "JSON_DATA_HERE"
sig = "SIGNATURE HERE"

key = OpenSSL::PKey::RSA.new(Base64.decode64(base64_encoded_public_key))

verified = key.verify( OpenSSL::Digest::SHA1.new, Base64.decode64(sig), data )


 类似资料:
  • 问题内容: 我目前正在将Google Play应用内结算集成到我的androidgame项目中,我已经设置了Node.js服务器,并计划将其发送给Google Play购买响应的“ originalJson”和“ signature”值以进行服务器端验证。 然后我在Node.js服务器上进行了一些测试,首先这里是我购买的一件商品的“ originalJson”和“ signature”值(从客户端

  • 当使用Citrus测试框架对服务器进行测试时,我无法禁用证书检查。 我得到以下错误:org.springframework.web.client.resourceAccessException:“”的POST请求上的I/O错误:证书与证书主题的公共名称不匹配:;嵌套异常是javax.net.ssl.SSLException。 下面是用于在Citrus中创建endpoint的代码片段: 任何想法都欢

  • 我想向无服务器 aws 节点模板添加 api 验证,到目前为止,我测试过的任何内容都运行良好。 我目前的方法是用包含我的验证模型的yml/json swagger定义覆盖现有的api-gateway,它是由无服务器框架生成的。当我在API-Gateway UI中测试它时,这对我来说是有效的,但是对于外部请求,API不会验证lambda-proxy的请求。 当我使用普通lambda时,api网关也不

  • 我使用ESAPI jar进行验证。当我调用isValidInput(Context,input.trim(),ValidateConstant时。APLHA_NUMERIC_TYPE,最大长度,真);或isValidInput(上下文,输入,ValidateConstant.NUMERIC_TYPE,maxLength,true);并且输入错误,带有单独的字符。然后它抛出一些像 当我单独执行程序时

  • 问题内容: 我有一个在Firebase上编写的应用程序。安全规则和客户端代码还不足以使我的应用正常工作。我需要连接服务器来执行一些任务: 清理非规范化的数据,这对于使用onDisconnect处理程序进行清理具有挑战性 建立数据的其他索引,这超出了 查询的能力范围 问题答案: _更新日期(20160611):如果您在https://firebase.google.com上创建了项目,则从服务器访问

  • 我需要使用拦截器验证并记录grpc服务请求的一些数据。我检查了ServerInterceptor的interceptCall,但找不到获取请求对象的方法。有没有办法让请求对象进入拦截器?