【发布时间】:2012-08-27 15:21:50
【问题描述】:
我正在使用 In App Billing 示例应用将此功能添加到我的应用程序中。 在我完成将它添加到我的应用程序并测试所有工作后,我注意到Security class 中的评论:
与安全相关的方法。为了安全实施,所有 此代码应在与之通信的服务器上实现 设备上的应用程序。为了简单和 这个例子的清晰度,这个代码被包含在这里并被执行 在设备上。如果您必须在手机上验证购买,您 应该混淆这段代码,使攻击者更难 用将所有购买视为已验证的存根替换代码。
正如 Google 建议的那样,我在服务器端进行购买验证,因此我的项目中确实不需要 Security 类。 问题是,我不知道如何删除 Security 类中的 BillingService 类依赖项。
我首先删除了 Security 类,并跟踪了 BillingService 中的错误,我可以轻松删除大多数使用它的地方,除了一个地方:
private void purchaseStateChanged(int startId, String signedData, String signature) {
ArrayList<Security.VerifiedPurchase> purchases;
purchases = Security.verifyPurchase(signedData, signature);
if (purchases == null) {
return;
}
ArrayList<String> notifyList = new ArrayList<String>();
for (VerifiedPurchase vp : purchases) {
if (vp.notificationId != null) {
notifyList.add(vp.notificationId);
}
ResponseHandler.purchaseResponse(this, vp.purchaseState, vp.productId,
vp.orderId, vp.purchaseTime, vp.developerPayload);
}
if (!notifyList.isEmpty()) {
String[] notifyIds = notifyList.toArray(new String[notifyList.size()]);
confirmNotifications(startId, notifyIds);
}
}
如果有人可以在不使用 Security 类的情况下分享他/她的 purchaseStateChanged 方法(基于应用内计费示例应用),我会很高兴。
【问题讨论】:
标签: android in-app-purchase in-app-billing